Marketing · n8n

Automatically Tag ActiveCampaign Contacts When Zendrop Marks Orders as Shipped

When Zendrop marks an order as shipped, this workflow instantly adds a tag to the matching contact in ActiveCampaign. This lets you trigger post-purchase email sequences the moment a customer's package is on its way.

difficulty Intermediatesetup 40 minresult Every time a Zendrop order ships, the buyer's ActiveCampaign contact is tagged 'Order Shipped' automatically, enabling timely follow-up automations without any manual work.
  1. 1

    Receive the Zendrop shipped webhook

    Add a Webhook node as the trigger. Set HTTP Method to POST and copy the generated URL. In your Zendrop dashboard go to Settings → Webhooks, paste the URL, and select the 'Order Shipped' event. All shipped-order payloads will arrive here, including the customer email and order ID.

  2. 2

    Extract the customer email

    Add a Set node connected to the Webhook node. Create one field: set customerEmail to the expression {{ $json.body.customer_email }} (adjust the path to match the actual Zendrop payload field name you see in test data). This keeps downstream nodes clean and readable.

  3. 3

    Look up the contact in ActiveCampaign

    Add an HTTP Request node. Set Method to GET and URL to https://YOUR_ACCOUNT.api-us1.com/api/3/contacts?email={{ $json.customerEmail }}. Add a header Api-Token with your ActiveCampaign API key stored as an n8n credential. The response will include the contact's numeric id needed for tagging.

  4. 4

    Add the 'Order Shipped' tag to the contact

    Add a second HTTP Request node. Set Method to POST and URL to https://YOUR_ACCOUNT.api-us1.com/api/3/contactTags. Set Body Content Type to JSON and use the body: { "contactTag": { "contact": "{{ $json.contacts[0].id }}", "tag": "YOUR_TAG_ID" } }. Replace YOUR_TAG_ID with the numeric ID of the 'Order Shipped' tag from ActiveCampaign (find it under Lists → Tags). Add the same Api-Token header.

  5. 5

    Confirm success with a filter check

    Add an IF node after the tag step. Set the condition to check that the response field contactTag.id exists (is not empty). The True branch confirms the tag was applied successfully. The False branch can be connected to a Slack or email alert node in the future to catch any failures.

Frequently asked questions

How do I find the numeric tag ID in ActiveCampaign?

In ActiveCampaign go to Contacts → Tags, hover over the tag you want, and click Edit. The tag ID appears in the browser URL bar as a number. Copy that number and paste it into the POST body of the tagging HTTP Request node.

What if the customer email from Zendrop does not match any ActiveCampaign contact?

The GET request in step 3 will return an empty contacts array. The IF node in step 5 will catch this because contactTag.id will be absent. You can extend the False branch to create a new contact via the ActiveCampaign API before tagging, or simply log the missed event for manual review.

Can I trigger different tags for different Zendrop events like 'Delivered'?

Yes. Register a separate webhook URL in Zendrop for each event, or use one webhook and add an IF node early in the workflow that checks the event type field in the payload. Route each branch to a different tag ID in the POST request to apply the correct tag per event.

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.