Enscale Docs
Automation

Trigger reference

Every workflow trigger available in Enscale, what fires it, and what data it gives your flow.

A trigger is the event that starts a workflow. Every workflow has exactly one.

This page lists all triggers available in the builder's trigger picker, grouped by where the event comes from. For each one you get what fires it, and the payload your flow can read through {{trigger.*}}.

Triggers are raw events, not recipes

Enscale deliberately gives you raw Shopify events rather than pre-baked ones. There is no "abandoned checkout" or "order delivered" trigger — you build those from a raw trigger plus a Condition node, which means you control the exact rule instead of guessing at ours.

The recipes below show how. See Node reference for the nodes involved.

Shopify triggers

These fire from Shopify webhooks. The payload is the raw Shopify webhook body, so anything Shopify sends is readable via {{trigger.*}}.

TriggerFires when
Checkout CreatedA shopper starts a checkout.
Checkout UpdatedAn existing checkout changes.
Cart CreatedA new cart is created.
Cart UpdatedA cart is updated.
Order CreatedA new order is created.
Order PaidOrder payment is captured.
Order UpdatedAny change to an order.
Order CancelledAn order is cancelled.
Order FulfilledAn order is fully fulfilled (shipped).
Order Partially FulfilledPart of an order is fulfilled.
Order EditedAn order's line items are edited.
Fulfillment CreatedA fulfillment is created for an order.
Fulfillment UpdatedA fulfillment changes (including delivery).
Draft Order CreatedA draft order is created.
Draft Order UpdatedA draft order is updated.
Customer CreatedA new customer record is created.
Customer UpdatedA customer's details change.
Customer Account EnabledA customer activates their account.
Customer Account DisabledA store admin disables a customer account.
Marketing Consent UpdatedA customer's SMS marketing consent changes.
Back In StockAn out-of-stock product becomes available again.

Building the flows people expect

Four common automations that used to be their own triggers. Each is now a raw trigger plus one condition.

Abandoned checkout

Start from Checkout Created, then add a Wait node and a Condition:

Trigger: Checkout Created
  → Wait 1 hour
  → Condition: {{trigger.completed_at}} is empty
      → Yes: send recovery message

The condition is what makes it "abandoned" — a checkout with a completed_at value became an order, so it should not receive a recovery message.

If a shopper starts a checkout without a phone number, Enscale can't message them yet. When they later enter a phone, Shopify sends a checkouts/update, and Enscale runs your Checkout Created flow at that point instead. Create and update share one dedup key, so the flow never runs twice for the same checkout.

Cash on delivery (COD) confirmation

Trigger: Order Created
  → Condition: {{trigger.payment_gateway_names}} contains "Cash on Delivery (COD)"
      → Yes: send COD confirmation template

Order delivered

Delivery is a fulfillment state, not an order state:

Trigger: Fulfillment Updated
  → Condition: {{trigger.shipment_status}} equals "delivered"
      → Yes: send delivery confirmation, review request, or reorder reminder

Refunds and COD-to-prepaid conversion

Trigger: Order Updated
  → Condition: {{trigger.financial_status}} equals "refunded" (or "paid")

Payload notes

A few Shopify payloads are narrower than people expect:

  • Order Edited sends an edit summary, not the order. Read {{trigger.order_edit.*}}, and use a Fetch Order node with {{trigger.order_edit.order_id}} if you need the full order.
  • Marketing Consent Updated carries only the customer id, phone, and {{trigger.sms_marketing_consent.state}} — no name, no email.
  • Fetch Order Checkout queries orders, not abandoned checkouts. It can't resolve a checkout token, so don't pair it with checkout triggers.

Instagram triggers

TriggerFires when
Instagram CommentSomeone comments on your Instagram post.
Instagram DM ReceivedA customer sends a new DM.
Story MentionYour account is mentioned in an Instagram story.

See Instagram comment automation for comment-to-DM patterns and rate-limit safeguards.

Instagram Comment to DM is retired

The old Instagram Comment to DM trigger no longer appears in the picker — it did the same thing as Instagram Comment followed by a Reply-to-Comment and Send-DM action pair. Workflows saved with the old trigger keep running unchanged; rebuild them on Instagram Comment when you next edit them.

Ad-click triggers

These fire when an inbound message carries an ad referral, which lets you treat ad-sourced conversations differently from organic ones. All three expose {{trigger.ad.*}} so you can branch on the ad headline or id.

TriggerFires when
WhatsApp Ad Click (CTWA)A customer messages you after tapping a Click-to-WhatsApp ad.
Instagram Ad ClickA customer DMs you after tapping an Instagram ad.
Facebook Ad Click (CTM)A customer messages your Page after tapping a Click-to-Messenger ad.

Ad tracking is available on all paid plans. These triggers also feed Meta Conversions API attribution — see Revenue attribution.

Conversation triggers

These fire from activity in your inbox.

TriggerFires when
New ConversationA new inbound conversation starts.
Conversation OpenedA resolved conversation is reopened.
Conversation Out of HoursA new conversation starts outside your business hours.
Conversation ResolvedA conversation is marked resolved or closed.
Keyword ReceivedAn inbound message matches a keyword you configure.
Campaign ResponseA contact replies to a campaign message.
AI Handed to HumanAn AI agent hands a conversation to a human.

Keyword Received takes a keyword and a match mode in the trigger config — use it for PRICE, AGENT, OFFER, and similar shortcuts.

AI Handed to Human exposes {{trigger.handover.reason}}, which is useful for alerting a specific team or tagging the conversation urgent.

TriggerFires when
Contact AddedA new contact is added to your list.
Tag AddedA specific tag is added to a contact.
Popup SubscriberA contact subscribes through a popup campaign.
Back-in-stock SubscribedA shopper joins a product back-in-stock waitlist.
WhatsApp Opt-Out (STOP)A contact opts out of WhatsApp.
Review SubmittedA customer submits a product review.

WhatsApp Opt-Out fires whether the opt-out came from a STOP keyword, an AI agent, or a staff action. The contact can no longer be messaged on WhatsApp, so use this trigger to tag, re-segment, or alert staff — not to send a farewell message.

Review Submitted exposes {{trigger.review.rating}}. Branch on it to send a thank-you for positive reviews and route negative ones to service recovery.

The 24-hour service window

This rule affects which triggers can send which kind of message, and it catches people out.

Free-form messages (the Service Message node) can only be delivered inside a channel's open 24-hour customer-service window. Approved Template Message nodes can be sent any time.

24-hour service window openCustomer messages+24hwindow closedService MessagedeliversService MessageblockedTemplate Messagedelivers any time
Free-form messages are deliverable only inside the 24-hour window a customer message opens. Approved templates can be sent at any time.

A window is open when:

  • The trigger is a conversation trigger — the customer just messaged you, so the window is already open.
  • Or a template message earlier in the same flow opened one and the customer replied.

Practically: a flow triggered by Order Fulfilled cannot open with a free-form message, because no customer message opened a window. Start it with an approved template instead. The builder flags this before you publish.

Trigger availability

Every trigger listed here is available on every plan, including Free. What differs by plan is your monthly workflow run allowance — see Plans and limits.

Next steps

  • Node reference — every node you can put after a trigger.
  • Variables — how {{trigger.*}} and other paths resolve.
  • Workflows — building and publishing a flow.

On this page