Automatically Hold High-Risk Shopify Orders in Zendrop and Alert Your Team on Slack
When Shopify flags an order as high risk, this workflow instantly cancels or pauses fulfillment in Zendrop and sends a Slack alert so your team can review before shipping. Stop fraudulent orders from ever leaving your warehouse.
- 1
Step 1 — Trigger on New Shopify Order
Add a
Shopify Triggernode and set theTopicfield toorders/create. Connect your Shopify credentials (API key and password for your store). Every new order will fire this trigger and pass the full order payload downstream, including therisk_levelfield. - 2
Step 2 — Check if Order Risk Level is High
Add an
IFnode connected to the Shopify Trigger. In the condition, setValue 1to the expression{{$json["risk_level"]}}andValue 2to the stringhigh. UseEqualas the operator. Orders flagged as high risk proceed to the TRUE branch; all others are ignored. - 3
Step 3 — Cancel or Hold the Order in Zendrop via HTTP Request
Add an
HTTP Requestnode on the TRUE branch. SetMethodtoPOSTandURLtohttps://app.zendrop.com/api/v1/orders/cancel(or the hold endpoint from your Zendrop API docs). In theBodysection use JSON mode and pass{"order_id": "{{$json.id}}", "reason": "High risk order flagged by Shopify"}. Add your Zendrop API key in theHeadersasAuthorization: Bearer YOUR_ZENDROP_API_KEY. Store the API key in n8n credentials and reference it via the node'snotesfield. - 4
Step 4 — Notify Your Team on Slack
Add a
Slacknode after the HTTP Request node. SetResourcetoMessageandOperationtoPost. SetChannelto your fraud or ops channel name (e.g.#fraud-review). In theTextfield enter a message like:🚨 High-Risk Order Held: Order #{{$node["Shopify Trigger"].json["order_number"]}} from {{$node["Shopify Trigger"].json["email"]}} — Total: ${{$node["Shopify Trigger"].json["total_price"]}}. Please review in Shopify and Zendrop before releasing.Connect your Slack OAuth2 credentials.
Frequently asked questions
What exactly does Shopify mean by 'high risk' and where does that field come from?
Shopify runs its own fraud analysis on every order and assigns a risk level of low, medium, or high based on signals like mismatched billing/shipping addresses, VPN use, and chargeback history. The `risk_level` field is included in the order payload when you use the orders/create webhook topic in n8n.
What if Zendrop's API endpoint or authentication method is different for my plan?
Log in to your Zendrop account, navigate to Settings > API, and copy your personal API key and the exact endpoint for canceling or holding orders. Update the `URL` and `Authorization` header in the HTTP Request node accordingly. If Zendrop uses a different auth method (e.g. a query parameter), adjust the node's `Query Parameters` section instead of Headers.
Can I release the hold automatically after a manual review approval?
Yes — you can extend this workflow by adding a second workflow triggered by a Slack slash command or a Google Sheets row update. When a reviewer marks an order as approved, that second workflow calls the Zendrop API to release the hold and optionally tags the Shopify order. This is an Intermediate-level addition and can be built as a separate n8n workflow.