Workflow triggers | IcloneU
Automations

Workflow triggers

A workflow only runs when something kicks it off — a comment on your ad, a WhatsApp message, a new tag, a webhook from another tool. That kick-off is a trigger. This reference walks the trigger catalogue, grouped by the channel or contact event it listens to, and explains how each one is matched so it fires on exactly the right moment.

11 min read Intermediate Updated August 25, 2026

In the Workflows builder, a workflow's start points are its triggers — shown as nodes on the canvas. Open a workflow and click Add Trigger to pick one from a categorized, searchable list. Connected services add their own event triggers on top of the catalogue below: a connected store contributes commerce events — orders placed, paid or fulfilled, shipment updates, abandoned checkouts, carts and browsing — that appear in the same list once the connector is set up, with their event fields available as run variables like any other trigger's. This guide walks the whole catalogue channel by channel, then covers how each trigger is matched and the two switches that sit on almost all of them.

Included with every paid plan
Every workflow starts with a trigger

A workflow does nothing until something sets it off, and that something is a trigger — you can add more than one. Each trigger you add starts Enabled, and the picker only offers the triggers that fit the account linked to your workflow, so link the right connected account first and the channel you want will appear.

Adding a trigger

Each trigger shows up as a node on the canvas. The Add Trigger button opens the picker, headed Start automation when…, with a category rail on the left and a searchable list on the right. Click a trigger to drop it in; select the node afterwards to open its settings, and use Delete Trigger to remove one.

  1. Open the picker

    In a workflow, click Add Trigger. The picker opens under the heading Start automation when….

  2. Find a trigger

    Browse the category rail — Messenger, Instagram, WhatsApp, Telegram, Email, Contact events, External, AI — or type into Search triggers… to match across every category at once.

  3. Add and configure it

    Click a trigger to add it to the canvas; it arrives Enabled. Select the node to open its match settings in the drawer on the right.

The picker follows your linked account

The list is scoped to the account linked to this workflow — a Facebook workflow won't show WhatsApp triggers, and vice versa. The platform-agnostic triggers (contact events, the inbound webhook, connector events and the Clone handoff) always show. If a channel's triggers are missing, link the connected account for that channel first.

Messenger triggers

These fire on the Facebook Messenger account linked to your workflow. Post comments carries the richest set of options (see Matching your trigger below).

TriggerFires when
Ad clickUser clicks a Facebook ad
Post commentsUser comments on your post
Direct messagesUser sends a direct message
QR code / ref linkUser opens a chat from your QR code or m.me ref link

Instagram triggers

Triggers on your linked Instagram account, covering DMs, comments, story replies and story mentions, ads and live.

TriggerFires when
Post or Reel commentsUser comments on your Post or Reel
Story replyUser replies to your Story
Story mentionUser mentions you in their Story
Instagram messageUser sends an Instagram direct message
Instagram ad clickUser clicks an Instagram ad
Live commentsUser comments on your Live
Instagram referral linkUser clicks an Instagram referral link
A Story mention is the one Instagram event your Clone never answers by itself

A mention arrives as a DM carrying no text, so IcloneU deliberately keeps it out of the chat pipeline: no paused flow resumes on it, and the Clone is never asked for a reply. A Story mention trigger is therefore the only way to respond to one. Instagram opens its normal reply window when someone mentions you, so a message step inside the flow lands in the one-to-one thread as usual. A Story reply is a different event — it carries text, runs the full DM pipeline, and does get a Clone answer.

There is nothing to configure on Story mention: it fires on presence, and its drawer holds a single line — Fires whenever someone mentions your account in their Instagram Story. The story media link is available in the flow as {{rv_story_mention_url}}. No further configuration.

WhatsApp triggers

Triggers on your linked WhatsApp Business account.

TriggerFires when
WhatsApp messageUser sends a WhatsApp message
WhatsApp linkUser clicks a wa.me link

Telegram triggers

Triggers on your linked Telegram bot. All three match on keywords and message intent.

TriggerFires when
Telegram messageUser sends a Telegram message
Bot commandUser sends a /command to your bot
Inline button clickUser clicks an inline keyboard button

Email triggers

An inbound email has a richer envelope than a chat message, so it gets five triggers — one on the body, one on the subject, two on the addresses, and one on attachments. Email is an Expert channel: these five appear once an email address is connected, which needs Expert or Enterprise.

TriggerFires when
Email receivedAn email arrives in your inbox
Subject matchesAn email arrives whose subject contains your keywords
From sender or domainAn email arrives from a specific address or domain
Sent to addressAn email arrives at a specific address or alias (support@, sales@…)
Has attachmentAn email arrives with at least one attachment

Contact-event triggers

These fire on a change to the contact record itself, not on an inbound message — so they run whatever channel the contact came from, and always appear in the picker. Instead of keywords, each one picks a subject to watch.

TriggerFires when
New contact createdA new contact is created
Custom field changedA custom field value changes
System field changedA built-in contact field (name, email, ...) changes
Tag appliedA tag is applied to a contact
Tag removedA tag is removed from a contact
Subscribed to sequenceA contact subscribes to a sequence
Unsubscribed from sequenceA contact unsubscribes from a sequence
Date/time occurredA specific date/time is reached
Segment enteredContact enters a saved segment
Segment entered is swept, not instant

Whether a contact is in a segment is a question about the whole contact record — spend, orders, tags, reachability — so it can't be answered by an event the way a tag change can. A background sweep re-runs each watched segment every 15 minutes and fires on whoever is newly inside. The drawer states the rule: Fires when a contact newly matches the selected segment (checked every 15 minutes). Contacts already in the segment when you save don't fire; a contact that leaves and re-enters fires again.

  • You must pick a concrete segment. The Segment box has no Any option — the sweep has nothing to resolve without one — so a trigger you never finished configuring silently never fires.
  • The first sweep after you save is a headcount, not a send. It records who is already in the segment without firing for any of them, which is what stops a new trigger on an old segment from messaging your whole list at once.
  • A busy sweep is spread out, not truncated. At most 200 new members per segment fire on any one pass; the rest are picked up on the next one, so nobody is dropped.
  • It reaches one channel. The trigger fires on the entering contact's own platform, so only contacts on the same channel as the workflow's run account are reached — a Telegram contact entering the segment doesn't start a WhatsApp workflow.

Only active saved segments appear in the picker, and the segment's own criteria are what decide membership — editing those criteria changes who the trigger fires for, with no change to the workflow.

External: inbound webhook and connector events

The Inbound webhook trigger (category External) starts a workflow when another system POSTs to a private URL — an order tool, a form, your own backend. It fires whenever An external system POSTs to a unique URL to start this automation.

Open the trigger and click Generate webhook URL to mint the Endpoint. The token in that URL is the secret, so keep it private; Regenerate URL replaces it and instantly invalidates the old one. The JSON body you POST carries a contact object that identifies (or creates) the contact to run for, and a data object whose fields become {{rv_*}} run variables inside the flow.

There is no View available variables button here — that flyout exists only on connector-event triggers, which know their own payload — so the naming rules are worth spelling out. Every key in data becomes a variable. Characters that aren't letters, digits or underscores become underscores, because that is all a token is allowed to contain. Nested objects flatten too, their path joined with underscores, up to three names deep; anything deeper stays reachable only as the raw JSON of the object above it. Arrays are never expanded item by item — you get the array's raw JSON, ready for an External Request or an AI step to read. And a key you send at the top level always wins a name collision with a flattened path.

Worked through: a body whose data is {"order":{"id":7,"customer":{"email":"a@b.c"}}} gives you four tokens — {{rv_order}} (the order object as raw JSON), {{rv_order_id}}, {{rv_order_customer}} (raw JSON again) and {{rv_order_customer_email}}. Go one level deeper — an address object inside customer — and you would still get {{rv_order_customer_address}} as raw JSON, but its own fields would not get tokens of their own.

The body is capped at 256 KB

A POST larger than 256 KB is rejected before the workflow starts, and nothing runs. The cap exists because the URL token is the only thing authenticating this endpoint, so it must not be able to make IcloneU buffer an arbitrarily large body. Send the identifiers and the handful of fields the flow actually reads — not a whole export.

Connector event sits in the same External category and fires when a connected platform sends the event you pick under Event — the dropdown groups events under each connected platform, so what's in the list depends on what you've connected. A Shopify store contributes seven: Order created, Order paid, Order fulfilled, Order shipment update, Checkout abandoned, Cart abandoned and Product browsed, not bought; a Hotmart account contributes Purchase approved, Checkout abandoned and Subscription canceled; WooCommerce and Wix each contribute Checkout abandoned. Other connectors can declare events of their own, so open the dropdown on your own account to see the real list. The match is platform-wide, not per store: with more than one connection of the same platform the event name shows (all connections), and any of those connections' events start the workflow.

Order created is the newest of the Shopify events and the one people most often want. It fires the moment an order is placed — before payment — which makes it the entry point for a cash-on-delivery confirmation flow. Keep using Order paid when you need a confirmed purchase; that is still the earliest signal that money actually moved. Order created is also the only Shopify event carrying {{rv_is_cod}}, {{rv_payment_method}} and {{rv_financial_status}}.

How is_cod decides

{{rv_is_cod}} is read off the gateway's name, not off a flag Shopify sets: it recognises Shopify's own Cash on Delivery (COD) plus the renames Mexican stores commonly use, contra entrega and contraentrega. A store on a custom manual gateway with some other name will come through as not cash-on-delivery, so branch on {{rv_payment_method}} — the raw gateway name — instead of trusting the flag.

A connector event only fires through this account's own connection

If the event you pick belongs to a connector that isn't connected on the account you're building in — after installing a recipe, importing a flow, removing a connection, or connecting the store on a sibling account — the trigger can never fire, because the incoming webhook is only routed through that account's own connections. The editor shows a strip above the canvas saying This flow is triggered by a connector event, but that connector is not connected on this account — the trigger will never fire. with a Go to Connectors link, and marks the trigger card with an amber triangle. Saving is not blocked, so you can go and connect the platform. One catch: the editor reads the connection list once, when it opens — so after connecting, close the workflow and reopen it before you expect the warning to clear. Your chosen event stays selected the whole time.

AI: Clone handoff requested

The Clone handoff requested trigger (category AI) fires the moment your Clone asks to pass a live conversation to a human — The clone asks to hand the conversation to a human (can't answer, frustration, etc.). Use it to notify a teammate, open the inbox, or route the person somewhere specific.

You can scope it to one ReasonLow AI confidence, User requested human, Frustration detected, Matched a "requires human" topic or Conversation loop — or leave it on Any reason to run on every handoff. The reason and the conversation are available in the flow as {{rv_handoff_reason}} and {{rv_conversation_id}}.

Matching your trigger

Select a trigger node and the drawer shows only the match controls that fit its shape. Leave a match field blank and the trigger fires on any event of that kind.

Text triggers — direct messages, comments, story and live replies, all the Telegram triggers, and the email body and subject — share the Trigger matching group: Define keywords to match exactly, or describe the message intent for AI-based matching. Add words under Comments include these keywords and rule some out under Comments exclude these keywords (both case-insensitive), turn on Match misspelled keywords to forgive typos, or describe the goal under Message intent for AI-based matching.

Post and Reel comment triggers add a post selector — Any post, or a Specific post chosen from the last 30 days — so a workflow can watch every post or just one.

Public-feed replies are Facebook only

Facebook Post comments add three options Instagram does not have: First level comments only, Like the comment, and Auto-respond in public feed — the last opens an Auto-Response group with an AI-Generated Response toggle. Instagram Post or Reel comments match keywords and start the flow, but they have no public-reply options — those settings live on Facebook post comments only.

Ad and referral triggers match a code rather than text. Ad clicks match an Ad ID (blank = Any ad); QR and ref-link triggers match a Ref code (blank = Any link or QR code) and show Your link plus a Download QR button once a connected account is linked — until then you'll see Link a connected account to this automation to generate the shareable link and QR code.

WhatsApp link carries no hidden referral, so it matches the text of your link's Pre-filled message — keep that message distinctive. The WhatsApp number field only builds the wa.me link and QR; it isn't used to match.

The email envelope triggers match without keywords: From sender or domain takes a full address or a whole domain like @acme.com, Sent to address routes by recipient or alias, and Has attachment fires on any inbound email carrying at least one file, with no configuration at all.

Contact-event triggers show an Event matching subject instead of keywords: a tag (blank = Any tag), a system or custom field (blank = Any field), a Segment for Segment entered — which has no blank-means-any option, as above — or, for Date/time occurred, a When to fire choice of Relative to a contact date field or At a specific date and time.

In date-field mode the first thing the drawer asks for is a Date source, and there are two. Custom field is the original one: you type the Contact date field that holds the date, a birthday or a renewal date you store on each contact. Last interaction (built-in) uses a date IcloneU maintains for you, with nothing to type. Either way you then set an Offset (days), a Time of day, and the Repeats every year checkbox.

Last interaction (built-in) is what makes a sunset flow work

This source anchors on the last message the contact sent you, and nothing else moves it — not a reply from your Clone, not an ad or link click. Set the Offset (days) to 30 and you have a "no reply in 30 days" trigger. Because the anchor moves forward every time that contact writes again, the due moment moves with it: the trigger re-arms instead of firing once and going quiet, which is exactly the behaviour a win-back or hygiene flow needs. Picking this source also unticks Repeats every year for you — "N days after the last message" is a one-off, not an anniversary — though you can tick it back on.

This is not the same clock as the Contacts list

The Last interaction time shown on the Contacts surface also moves on activity that isn't an inbound message — an ad or referral click with no message will freshen it. The built-in date source counts only messages the contact actually sent. So a contact can read as active in the Contacts list and still be 45 days silent as far as this trigger is concerned. That is deliberate: a sunset flow should measure whether someone is still talking to you.

Repeats every year: birthdays versus one-off dates

That checkbox decides whether the contact's date comes back around: On: fires on this date every year (birthdays, anniversaries). Off: fires once at the field's own date (renewals, expirations, invoices). With Custom field as the source it arrives ticked, so leave it for a birthday flow and untick it for a renewal, expiry or invoice reminder that should fire once. The Offset (days) is applied to the contact's date first, so with the annual repeat on it's the shifted month and day that come back each year, a 29 February one falling on the 28th in years that don't have one. The Time of day is read in the same Timezone your account's reply timing uses, falling back to UTC while none is set.

Connector event triggers match on the Event you pick from the dropdown. Once an event is selected, a View available variables button appears — click it to open the list of that event's fields with their {{rv_*}} tokens, ready to use in any later step.

The remaining triggers carry their own match, or none. Story mention has no match settings at all — it fires on presence, and its drawer is a single explanatory line. Clone handoff requested scopes by Reason, as described above; and the Inbound webhook's match is its private Endpoint URL — anything that POSTs there starts the flow.

Two switches on every trigger

Whatever its shape, almost every trigger carries the same two switches at the top of its drawer.

  • Enabled — the on/off switch for the trigger. New triggers arrive enabled; turn it off to pause a trigger without deleting it.
  • Fire every time — controls repeats. Off (the default) fires the trigger only the first time it matches for a given contact; on re-fires it on every match. Leave it off on Date/time occurred: that trigger keeps track of each occurrence on its own, so an annual date already comes back next year without it.
Fire once, or fire every time

By default, a trigger fires only the first time it matches for a given contact — so an onboarding flow doesn't restart every time the user sends another message. Turn this on to let the trigger re-fire on every match (useful for catch-all triggers or "always-on" reply rules).

Frequently asked

Yes. A workflow can carry several triggers, and any Enabled one that matches will start it — handy for catching the same intent across, say, a comment and a DM. Add each with Add Trigger; remove one with Delete Trigger.

The picker only lists triggers for the account linked to that workflow, so a Facebook workflow won't show WhatsApp triggers. Link the connected account for the channel you want and its triggers appear. The platform-agnostic triggers — contact events, the inbound webhook, connector events and the Clone handoff — always show.

Keywords match the literal words in the message, with Match misspelled keywords to forgive typos. Message intent hands the message to the AI and matches on meaning — you describe the goal, e.g. Person wants to..., and it can fire even when the wording is different. Use either or both.

Not by default. A trigger fires only the first time it matches for a given contact, so an onboarding flow doesn't restart on their next message. Turn on Fire every time to re-fire on every match — the right choice for catch-all or always-on reply rules.

Only if you want it to. Date/time occurred in Relative to a contact date field mode ships with Repeats every year ticked, which is right for birthdays and anniversaries. Untick it for renewals, expirations and invoice dates: the trigger then fires once, at the date the field itself holds, instead of coming back the following year.

No. First level comments only, Like the comment and Auto-respond in public feed live on Facebook Post comments only. Instagram Post or Reel comments still match keywords and start your workflow — they just don't post a public reply.

Most often the recipe's trigger is a Connector event for a platform you haven't connected on this account yet. The trigger can't fire, because the incoming webhook only routes through this account's own connections. Open the workflow: if that's the cause, a strip above the canvas reads This flow is triggered by a connector event, but that connector is not connected on this account — the trigger will never fire. and offers a Go to Connectors link. Connect the platform, then close and reopen the workflow — the editor checks your connections once when it opens, so the warning won't clear until you do.

No, and that's on purpose. A story mention carries no text, so there's nothing for the Clone to answer — IcloneU skips the chat pipeline entirely and only runs a Story mention automation. If you want a thank-you or a discount to go out when someone tags you in their Story, build it as a workflow on that trigger; there's no setting that makes the Clone do it. A Story reply, which does carry text, is answered like any other DM.

Yes — Segment entered fires when a contact newly matches a saved segment, which is how you turn a criteria list (say, spent over a threshold and no purchase in 60 days) into a flow. It runs on a 15-minute sweep rather than instantly, it needs a specific segment chosen, and its first pass after you save deliberately fires for nobody so an existing segment isn't blasted.

Was this guide helpful?
Thanks for the feedback!

Last updated August 25, 2026 · Automations

Reconnecting to the server… Reload
🗙
Connecting…
Connection lost
Reconnecting to the server…
We couldn't reconnect automatically.