Support · n8n

Automatically Sync Zendrop Order Numbers to Intercom Customer Profiles

When a new order is created in Zendrop, this workflow fetches the order details and updates the matching Intercom user profile with the order number and status. Your support team always has fresh order data right inside Intercom conversations.

difficulty Intermediatesetup 45 minresult Every Zendrop order number is automatically attached to the corresponding Intercom user, so support agents can see order status without switching tools.
  1. 1

    Receive Zendrop Order via Webhook

    Add a Webhook node as the trigger. Set the HTTP Method to POST and copy the generated webhook URL into your Zendrop store's webhook settings under order creation events. This node will receive the raw order payload each time a new order is placed.

  2. 2

    Extract Key Order Fields

    Add a Set node connected to the Webhook. Create three fields: set orderNumber to {{$json.body.order_number}}, customerEmail to {{$json.body.customer_email}}, and orderStatus to {{$json.body.status}}. Adjust the JSON paths to match the exact field names your Zendrop webhook delivers.

  3. 3

    Look Up the Intercom User by Email

    Add an HTTP Request node. Set Method to GET and URL to https://api.intercom.io/contacts/search. In Headers add Authorization: Bearer YOUR_INTERCOM_TOKEN and Accept: application/json. In the Body (JSON) use {"query":{"field":"email","operator":"=","value":"{{$json.customerEmail}}"}}. This returns the Intercom contact ID for the customer.

  4. 4

    Parse the Intercom Contact ID

    Add a second Set node. Create a field called intercomContactId and set its value to {{$json.data[0].id}}. This pulls the first matching contact's ID from the Intercom search response so the next node can target the right profile.

  5. 5

    Update the Intercom User with Order Data

    Add a final HTTP Request node. Set Method to PUT and URL to https://api.intercom.io/contacts/{{$json.intercomContactId}}. Add headers Authorization: Bearer YOUR_INTERCOM_TOKEN, Content-Type: application/json, and Accept: application/json. Set the JSON body to {"custom_attributes":{"zendrop_order_number":"{{$node['Extract Order Fields'].json.orderNumber}}","zendrop_order_status":"{{$node['Extract Order Fields'].json.orderStatus}}"}}. Make sure the custom attribute keys exist in your Intercom workspace settings first.

Frequently asked questions

How do I create the custom attributes in Intercom before running this workflow?

Go to your Intercom workspace Settings, then navigate to People Data and select Custom Attributes. Create two text attributes named exactly `zendrop_order_number` and `zendrop_order_status`. The names must match the keys used in the workflow's PUT request body.

What if a customer has no Intercom profile yet when the order comes in?

The search step will return an empty array, causing the contact ID parse to fail. You can handle this by adding an IF node after the search to check whether `$json.data.length > 0`, and if not, route to a separate HTTP Request node that creates a new Intercom contact using the POST /contacts endpoint before updating it.

Can I update the order status again if it changes later in Zendrop?

Yes. Configure Zendrop to also send webhook events for order status updates, not just order creation. The same workflow will fire again, look up the same Intercom user by email, and overwrite the `zendrop_order_status` attribute with the latest value.

About this recipe. Recipes on FlowRecipesHub are written for business owners, not developers, and are tested before publishing — how recipes get made. Some ingredient links are affiliate links that cost you nothing — full disclosure.