Workflows
Build Shopify and messaging automations with Enscale's visual workflow builder.
Workflows automate customer messaging around Shopify events, conversations, ads, and reviews. You build them by dropping nodes on a canvas and connecting them.
What a workflow is made of
Every workflow is one trigger followed by any number of nodes.
- The trigger is the event that starts the flow — an order, a comment, an inbound message.
- The nodes are the steps that follow — send a message, wait, branch, look something up, hand off to an agent.
Enscale gives you raw events rather than pre-packaged recipes. There is no single "abandoned checkout" trigger; you build it from Checkout Created plus a condition on {{trigger.completed_at}}. That's slightly more work the first time, and it means the rule is yours rather than a guess.
Build your first workflow
The best starting point is a post-purchase review request. It's short, it's safe, and it introduces triggers, waits, lookups, and templates all at once.
Create the workflow
Go to Workflows in the Enscale app and create a new workflow. You land in the builder with an empty canvas.
Pick the trigger
Choose Fulfillment Updated, then add a Condition node checking {{trigger.shipment_status}} equals delivered.
That combination is "order delivered" — Shopify has no dedicated delivered event.
Wait
Add a Wait / Delay node set to 2 days. Asking for a review the moment a parcel lands rarely works.
Build the review link
Add a Fetch review link node. It produces a signed URL tied to this customer and product, which is what makes the resulting review show as a verified purchase.
Send the message
Add a Template Message node with an approved WhatsApp template, and insert the review link variable into it.
It must be a template, not a Service Message — no customer message opened a 24-hour service window here. See the service window rule.
Test, then publish
Use the builder's preview to walk the flow with sample data. When it looks right, publish it.
Workflow states
| State | Meaning |
|---|---|
| Draft | Saved but never published. Does not run. |
| Active | Published and running against live events. |
| Inactive | Published previously, currently paused. Does not run. |
Deactivating a workflow stops new runs. Runs already in flight — for example, one sitting in a 2-day wait — continue to completion.
What counts as a workflow run
One run is one full execution, from trigger to final node, no matter how many steps it contains.
- One abandoned-checkout recovery sequence for one shopper = 1 run.
- One review request for one order = 1 run.
- One comment-to-DM automation for one comment = 1 run.
A ten-node flow and a two-node flow both count as one run. Your monthly allowance depends on your plan — see Plans and limits.
Safety rules Enscale enforces
These run automatically on every workflow. You do not need to build them yourself.
- Consent. WhatsApp actions check opt-in before sending. Contacts who opted out are skipped.
- Unsubscribes. Broadcast-style actions respect unsubscribe status.
- Service window. Free-form messages are blocked outside an open 24-hour window rather than failing silently at the provider.
- Plan limits. Runs are checked against your remaining allowance before they start.
- Deduplication. Related Shopify events that describe the same thing collapse into a single run, so a checkout that fires both a create and an update webhook does not message the customer twice.
When automations pause
If you exhaust your monthly workflow-run allowance, Enscale warns you at 80%, then again at 100%. Hitting 100% starts a 72-hour grace period during which automations keep running.
After the grace period, workflow runs and broadcast sending pause until you upgrade or the month resets on the 1st.
Your inbox is never affected by this. Manual replies, conversation history, and contacts stay fully available. See Billing and usage.
Troubleshooting
| Problem | What to check |
|---|---|
| Flow never runs | Is it Active, not Draft? Does the Shopify webhook topic for your trigger exist — see Webhook reference. |
| Message not delivered | Free-form message outside the 24-hour window, or the contact lacks WhatsApp opt-in. |
| Template not available | Template is pending, rejected, or paused at Meta. See Message templates. |
| Runs stopped entirely | Check whether your workflow-run allowance is exhausted and the grace period has ended. |
| Variable renders empty | The path doesn't exist on that trigger's payload. See Variables. |
| Fetch Order Checkout errors | It needs an order ID. It cannot resolve an abandoned checkout token. |
Next steps
- Trigger reference — all available triggers.
- Node reference — all available nodes.
- Flow templates — prebuilt flows.
- Instagram comment automation — comment and DM patterns.