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.
- 1
Receive the Zendrop shipped webhook
Add a
Webhooknode as the trigger. SetHTTP Methodto 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
Extract the customer email
Add a
Setnode connected to the Webhook node. Create one field: setcustomerEmailto 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
Look up the contact in ActiveCampaign
Add an
HTTP Requestnode. SetMethodto GET andURLtohttps://YOUR_ACCOUNT.api-us1.com/api/3/contacts?email={{ $json.customerEmail }}. Add a headerApi-Tokenwith your ActiveCampaign API key stored as an n8n credential. The response will include the contact's numericidneeded for tagging. - 4
Add the 'Order Shipped' tag to the contact
Add a second
HTTP Requestnode. SetMethodto POST andURLtohttps://YOUR_ACCOUNT.api-us1.com/api/3/contactTags. SetBody Content Typeto 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 sameApi-Tokenheader. - 5
Confirm success with a filter check
Add an
IFnode after the tag step. Set the condition to check that the response fieldcontactTag.idexists (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.