Working with Items and Fulfillments on Shopify Orders

Overview on Fulfillments in EasyRoutes

EasyRoutes is deeply integrated with your Shopify orders. Stops on a route either fulfill items in an order on your behalf to create a fulfillment, or use an existing fulfillment on an order that you want to deliver. Which means we are either creating or updating Shopify order fulfillments, and this also triggers Shopify or EasyRoutes notifications based on your store and app settings.

In general, when a route stop has a status update, EasyRoutes attempts to:

  • create or update a fulfillment where we add the EasyRoutes tracking page link to the fulfillment when we fulfill your order, based on your store and EasyRoutes settings (see Customizable Order Tracking Pages and Links for more on EasyRoutes tracking pages)
  • create a FulfillmentEvent on the order fulfillment that's related to the route with the appropriate status.

Relevant API documentation to review:

  • Shopify FulfillmentEvent documentation: See status on the FulfillmentEvent resource — for out for delivery updates, we create this object on a fulfillment with status set to out_for_delivery
  • Shopify Webhooks documentation: You should be able to listen for the fulfillment_events/create, fulfillment/create or fulfillment/update webhooks through which Shopify will tell you that this event has been created.
    • or access these events via Shopify Flow

Here's the list of statuses that we map to for a FulfillmentEvent:

  • confirmed: Ready for Delivery
  • out_for_delivery: Out for Delivery
  • delivered: Delivered
  • attempted_delivery: Attempted

Other notes:

  • Unless an order is Fulfilled, EasyRoutes cannot send Out for Delivery or Delivered notifications via Shopify. Learn how fulfillment works with Shopify. If you are using Shopify's notifications, when an order is fulfilled, it generally will send the Shipping Confirmation email.
  • If you are using EasyRoutes notifications, you can optionally send the Ready for Delivery notification at this time as well. You can manually send it by clicking the button underneath the route map if you do not want to fulfill orders or if there are new stops added to the route.

Below is an explanation of how to use our advanced fulfillment features.

Fulfillment Options: Using Existing Fulfillments or Fulfilling Order Items in EasyRoutes

We describe how we interact with your order through fulfillments in this section below.

Default Behaviour: Fulfill remaining items or use the most recent fulfillment

When creating a route with orders, EasyRoutes will select the remaining unfulfilled items by default and have that reflected in stop inventory, packing lists, tracking pages, etc. The majority of users are delivering items that are being fulfilled through EasyRoutes.

If no unfulfilled items are found on an order, EasyRoutes will attempt to use the most recent fulfillment found in the order for a stop instead.

Selecting and using a different existing fulfillment, or switch

Once you have a stop created for an order on a route, you can select and use a different existing fulfillment on an order.

Steps:

  1. Click on the list of items for an order on a route (e.g. where you see <x> items with a dropdown arrow)
  2. Click on 'more actions' for the fulfillment or the unfulfilled items that you want to use
  3. Click on "Use this fulfillment" or "Use these items"

Advanced Options: Use specific fulfillments and/or items

You can further customize what unfulfilled items or fulfillments are used once you've created a route by accessing the edit button on the Items column in the route table.

  1. Select the Items column for a row in the route table.
  2. Select the edit button on the items modal:

  1. Select checkboxes next to items:

  1. Select the Apply button.

You can also select items via Edit stop -> Advanced Options.

Steps:

  1. Use the "Edit stop" action on the route page to access the desired stop and order you want to modify items for
  2. Navigate to the Advanced Options section and review your Stop items
  3. If you want customize this further, click on Select items from latest order data
  4. Select the fulfillment items that you want to use and fulfill
  5. Click Update once you've made your stop edits.

Do you want to only deliver a portion of an 'unfulfilled' fulfillment order? Go to the order in your Shopify admin and use the Shopify-native split fulfillment functionality first:

  1. From your Shopify admin, go to Orders.
  2. Navigate to the desired order.
  3. Click "Split fulfillment" within the "Unfulfilled" panel for this order


Once you have split up your fulfillment, you can choose the desired portion using the "Edit stop items" action above for a stop again.

Cancelling a fulfillfilment using EasyRoutes

Need to cancel an existing fulfillment on an order before delivering it again on a route? View this support article to learn how to cancel a fulfillment in EasyRoutes.


What is Update order data?

If you make edits to an Order or its Fulfillment after a route has been created, you can use the Update Order Data feature to refresh the order information in EasyRoutes:

Always show all items on a stop

If you wish to use all items in an order regardless of fulfillment status, you can change this behaviour via the EasyRoutes Settings found in the General tab:

Excluding non-shippable items by default for new routes

You can exclude non-shippable items if you uncheck "Include non-shippable items" in your EasyRoutes General settings. Moving forward any new routes created will exclude non-shippable items:

Excluding non-shippable items for existing stops

For existing stops you can manually edit the stop's inventory by either using items drop-down or editing the stop and unselecting non-shippable items:


Adding custom items on a stop

You can also add and show additional custom items on any EasyRoutes stop. Custom items are not attached to fulfillments and this can be helpful in particular scenarios.

  1. Use the "Edit stop" action on the route page to access the desired stop and order you want to modify items for
  2. Navigate to the custom items section
  3. Add the desired custom items by entering all the appropriate item names and quantities.
  4. Click Update once you've made your stop edits.

Customizing your Fulfillment Workflow


In general, EasyRoutes creates a fulfillment and adds a tracking link to our tracking page as a route is prepared for Delivery for us to be synced to Shopify's notifications, and for us to integrate deeply with Shopify's FulfillmentEvents for each of our delivery statuses

By default, orders will be fulfilled whenever a status is applied to a stop (Ready for Delivery, Out for Delivery, Delivered or Attempted Delivery). Orders will also fulfilled or have its relevant fulfillment updated when...

  • ...you mark stops as Ready for Delivery and the order is unfulfilled.
  • ...your driver starts their delivery route by tapping the Start Route button in their mobile app. This will mark the order as Fulfilled and Out for Delivery and trigger the Out for Delivery notification.
  • ...you manually change an order status to Out for Delivery within a route in EasyRoutes.
  • ...you or your driver marks an order as Delivered. This will mark the order as Fulfilled and Delivered and trigger the Delivered notification.
  • ...your driver marks an order as Attempted. This will mark the order as Fulfilled and Attempted and trigger the Attempted Delivery notification

If you have EasyRoutes Premium, you can further customize when EasyRoutes fulfills your order.

  • Option 1 - all orders: You can find this setting under the Fulfillment options section of Settings -> General: 

  • Option 2 - individual order: you can find modify this same setting for any individual stop by using the "Edit stop" functionality

If you'd only like to fulfill orders when they are delivered, there a few options:

1. Adjust this setting to only fulfill when the "Delivered" status is applied

2. You can deliver the route without changing stop statuses until the stop is delivered. If you'd like to send a Ready for Delivery notification, you can use the "Send Ready for Delivery notifications" button below the route map: 

How to Manually or Partially Fulfill an Order in Shopify and then use the fulfillment in EasyRoutes


You may have a unique setup where it might be helpful to deliver a particular fulfillment that needs to be created outside of EasyRoutes. Follow the steps below to fulfill an order manually. Then you may use our Select and use an existing fulfillment method above for selecting the correct fulfillment and items for delivery.

Read more about fulfilling your own orders in Shopify here in the Shopify Help Center.

Steps:

  1. From your Shopify admin, go to Orders.
  2. Navigate to the desired order.
  3. Click "Fulfill items" within the "Unfulfilled" panel for this order:

  1. Set the number of products that you want to fulfill for each line item in the Items section:

  1. Click the "Fulfill items" button. The order screen updates to display the order's Fulfilled and Unfulfilled items.

If you are using this workflow regularly, we recommend enabling "Add a tracking link to orders fulfilled outside of EasyRoutes without tracking links" in Settings -> Notifications -> Tracking link.


Shopify does not allow you to partially fulfill Shopify Local Delivery orders. If you have a Local Delivery order you want to fulfill, you will need to Duplicate the order and work with that order for your routing.



Shopify-related Errors

Occasionally Shopify is unable to create fulfillments for particular orders. You may attempt to create fulfillments by clicking on Try Again. This is usually a temporary issue with Shopify that resolves itself in a few minutes.


Other common troubleshooting scenarios and remedies

  • My driver forgot to start the route: trigger this manually by marking the stops manually as Out for Delivery to trigger the desired notification.
  • I manually modified or canceled a fulfillment outside of EasyRoutes: Use "update order data" on your route after manual unfulfillments to ensure accurate fulfillment information. Alternatively, you can unfulfill orders directly within EasyRoutes.
  • For cancelling fulfillments via Shopify and I want to deliver again: Begin a new route and add those orders to that route, treating it as a fresh one.
  • My Items or order status and information is out of sync: Currently, we sync order details on routes when they are fulfilled or when a user dispatches a route to a driver -- it would have the latest information at that point. It can be done manually at any time as well by using the Update order data feature.
  • I am looking to redeliver an attempted stop again:
    • You can send this stop to a desired new route. We support multiple workflows on this, depending on how you want to manage fulfillments. Examples:
      • cancel the fulfillment using EasyRoutes, then send this stop to a new route as a copy with a new status. customers will receive a new tracking link or notification as a part of your workflow.
      • move the stop to a new route, preserve the tracking link and the status will be appropriate updated on the next delivery status update
  • I am looking to handle a return or a refused delivery attempt:
    • We support multiple workflows on this, depending on how you want to manage fulfillments. Steps that can help with your workflow:
      • Have the driver mark the stop as attempted to share an appropriate status and for triage outside of EasyRoutes.
      • Have the driver add a driver note that this was a refused or a returned product.
      • Cancel the fulfillment using EasyRoutes first or manage this fulfillment for this order directly in your Shopify admin based on your cancellation or return process.
    • If you are looking to plan a stop for picking up a return, you can use our custom stop feature or create an order-based stop with a custom item or note.
  • Where is my tracking link? If customers need the tracking link, you can also find the URL in the "View tracking link" action
  • What happened to my notification(s)? Troubleshooting Customer Notifications and Tracking Links
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.