Common Zapier Integrations
Integrating via Zapier actions and triggers unlocks additional, no-code flexibility for users across the EasyRoutes platform - for example, when importing orders, updating existing orders, fulfilling Shopify orders, or syncing delivery data to external tools and services. Some common integration scenarios are detailed below, including their uses, steps to set up, and tips for maximizing efficiency with each automation.
Before setting up any Zapier automations connected to your EasyRoutes account, you'll need to request access to our API, which will be used to send & receive EasyRoutes data when integrating with external apps and services.
Once your EasyRoutes account has been granted API access, login to your Zapier account, and select the App Connections item from the sidebar menu:

Click the Add connection button found in the upper right-hand corner of the page, type EasyRoutes into the App box, and click Add connection:

From the window that pops up, input your Client ID & Secret Key found in your EasyRoutes Settings > API Settings tab. Additional details on setting and accessing your Client ID / Secret Key can be found in this support article:

Common Integration Tips & Examples:
- Working with order line items
- Import Shopify order to EasyRoutes
- Update Shopify order for EasyRoutes data access
- Fulfill Shopify order when EasyRoutes marked as Delivered
- Webhook Integrations (Legacy)
Working with order line items
In order to properly import multi-item orders to EasyRoutes via Zapier, they will need to be formatted as line items (aka an array). Depending on the source of your orders, they may already be formatted as an array (for example, when importing directly from Shopify); if they're not (for example, when importing from a spreadsheet), an additional Zapier Formatter step will be required. Full details can be found in this Zapier support article, and a reference example is detailed below.
From the spreadsheet containing orders to import, two sample orders contain item details as follows:

This means each order contains the following quantity of items, and their weights - we'll continue using Order #10013 with the example below, but the same process can be applied to any orders formatted in this manner:
| Order #10013 | 1x Flowers - Red (900g each) | 2x Flowers - White (900g each) |
| Order #10016 | 2x Flowers - Red (900g each) | 4x Flowers - White (900g each) |
Configure a Zapier Formatter step to use the Utilities > Line Itemizer (Create/Append/Prepend) option, to generate an array with these three variables, as shown below:

The formatted data out will look like this:

When mapping order line items in the Import Stop step, use the array output from the Formatter step to send this data to EasyRoutes as follows:

When imported to EasyRoutes as configured above, these items and their weights will now display accurately on any routes they're added to:

Import Shopify order to EasyRoutes
This Zapier integration watches for new Shopify orders, then imports selected order details as a custom stop in EasyRoutes. Use this style of Zap to import Shopify orders into EasyRoutes for Web, or to connect multiple Shopify stores to a single EasyRoutes installation.
- The Shopify - Order ID field is mapped to the EasyRoutes - Client Stop ID field so we can refer back to the original Shopify order later on if required.
- When mapped as shown below, order attributes (found within the Additional details panel of any order's page in Shopify) will be imported individually, and their display can be toggled on/off individually from the EasyRoutes interface.
- Start from this Zap template with common variable mappings pre-filled.




Update Shopify order for EasyRoutes data access
This Zapier integration watches for updates initiated from an external service, and adds collected details to the Additional details section of a corresponding Shopify order. Use this style of Zap to add delivery dates or time windows collected via external services to existing Shopify orders, or add any other additional details to an order so that they can be referenced via EasyRoutes' interface.
- This Zap requires access to the Shopify Order ID of the order that will be updated so the correct order can be looked up before updating - in Step 2, we use this for the Query - Order ID field when looking up matching orders. Order lookup via alternate methods (customer name, order number, etc.) are also possible, but will require additional customization.
- Data stored in any Shopify order's Additional details section can be referenced as columns in EasyRoutes Orders and Routes pages; used for filtering orders by attributes in the EasyRoutes Orders page; or configured to trigger further order customization via EasyRoutes' order automation rules.
- The example below pulls new order data from a Google Sheet, but the trigger step can be replaced with any other app where new order data will be stored.
- Start from this Zap template with common variable mappings pre-filled.




Fulfill Shopify order when EasyRoutes marked as Delivered
This Zapier integration watches for status updates for an EasyRoutes stop, filters to check whether a specific status has been applied (in this case, Delivered), then looks up the stop's corresponding Shopify order and marks it as fulfilled.
- This Zap requires access to the Shopify Order ID of the order that will be updated so the correct order can be looked up before updating. Order lookup via alternate methods (customer name, order number, etc.) are also possible, but will require additional customization. In the example below, we've stored the Shopify Order ID in EasyRoutes' Client Stop ID field when importing the stop, and can reference it using that variable again now.
- Start from this Zap template with common variable mappings pre-filled.




Webhook Integrations (Legacy)
Using the Catch Webhook Zapier trigger allows you to capture raw data from EasyRoutes events, but may require a more technical approach to configure. Some example webhoook configurations are detailed below, along with links to relevant Zap templates that achieve the same goal using EasyRoutes native triggers & actions instead. The Catch Webhook Zapier trigger requires access to a paid Zapier account. Additional tips and setup steps for initiating a connection between Zapier <-> EasyRoutes can be found in this support article.
Webhook example: Populate a Spreadsheet with Route Events
Save time on your Zapier setup and start with pre-filled EasyRoutes + Google Sheets Zapier templates:
Zapier allows you to select from numerous apps and tools to connect an action to the webhooks trigger. Here is an example that writes route events into a spreadsheet. Each row contains the webhook event ID, the route ID, the event timestamp, the route name, and the topic.

The fields on the Configure panel are based on the headers in the spreadsheet. You can select values based on the fields from the previously-selected webhook record above.

The result:

Webhook example: Add Scheduled Routes to Google Calendar
Save time on your Zapier setup and start with pre-filled EasyRoutes + Google Calendar Zapier templates:
Here is another example that adds scheduled routes into a user's Google Calendar.
After configuring your Catch Hook step as described above, add a Filter by Zapier step next. Since routes require a scheduled start time in order to add them to a calendar, we'll configure this step to check that the received webhook contains a scheduled start time (Payload Scheduled For variable > Exists):

Next, we'll add the Google Calendar Find Event step (you'll need to sign in to the Google account the desired calendar is associated with), and use the route's unique identification code from the webhook (Payload ID) to see if this route has already been added as a calendar event:

If the route event is not found, this step is configured to add it to the calendar as a new event. We've used Payload Name (the route's name) for the Summary field, and Payload Scheduled For and Payload End Planned Arrival for the Start/End Dates & Times; we've also added the orders included on the route and the Route's ID to the event's description for quick reference (these are optional, and can be customized to add/remove any variables desired):

If the route event is found in the calendar, this workflow will move onto the next step - we'll configure Google Calendar's Update Event action to update the existing event we found to contain the route's updated scheduling details.
Ensure the Event field for updating is using the ID variable we found in step 3; again, use Payload Name (the route's name) for the Summary field, and Payload Scheduled For and Payload End Planned Arrival for the Start/End Dates & Times; we've also added the orders included on the route and the Route's ID to the event's description for quick reference (these are optional, and can be customized to add/remove any variables desired):

Now, whenever a new route containing a scheduled start date/time is created, or an existing route's scheduled start date/time is updated, a corresponding event will be added to (or updated in) the user's Google Calendar:

Webhook example: Send an email when a stop is marked as complete
Save time on your Zapier setup and start with pre-filled EasyRoutes + email Zapier templates:
This example workflow will send an email to a specified email address as soon as a stop is marked as complete.
After configuring your Catch Hook step as described above, add a Filter by Zapier step next. We'll configure this step to check that the received webhook contains a successful delivery event (Payload Stops Delivery Status variable > exactly matches > DELIVERED):

Next, we'll add the Gmail Send Message step - input desired to/from addresses first, then configure the email subject to contain "Order [Payload Stops Order Name] Delivered"; the body will contain "Order [Payload Stops Order Name] has been marked as [Payload Stops Delivery Status]":
