Skip to content

How flows work

A flow sends the right email to one person at the right moment, on its own: when they leave a cart, subscribe, order, sign up in your product, or on a date you choose. You build it once from a trigger and a few steps; from then on every person who matches goes through it at their own pace.

Use flows for anything that depends on what a person did. Use a campaign for one email to many people at once.

Every flow starts with a trigger and ends with an End workflow step. In between, the steps run one after the other for each person.

Trigger Starts when
Store events Something happens in your connected shop: Order placed, Cart abandoned, New subscriber, or Customer created or updated (someone subscribed while creating a shop account).
Something happens in your app Your product sends an event with that name to POST /events (for example user.signed_up). An optional filter keeps only some of them (plan = pro).
Schedule A recurring time (every day, every Monday at 9:00, or any cron expression) or a one-time date, in the time zone you choose.
Run now You press Run now on a published flow.
API / webhook Your own system calls the flow’s trigger URL with its token and the person’s email. The same call id twice starts it once.

A schedule or Run now reaches nobody on its own: add an Audience & filters step right after the trigger to say who enters (a segment, an uploaded list of up to 2,000 rows, or your contacts filtered by rules). The editor will not publish such a flow without it, so it can never email your whole list by accident.

Step What it does
Audience & filters Decides who enters; only right after the trigger. Whoever does not match ends there.
Wait Pauses one person’s path: for a while (60 minutes, 2 days), until a day and time (“Monday at 9:00”), or until they do something (kyc.completed) for at most a set time, with a Yes and a No path.
Condition Splits the path by rules on the contact (fields, tags, your custom attributes), on the trigger’s event, or on whether they opened or clicked an email from this flow.
Email Sends one of your email templates. The template is copied into the flow when you publish, so editing it later does not change what a live flow sends until you publish again.
Add tag Tags the contact, for later rules and segments.
Webhook Posts the contact (email, name, tags) to an HTTPS address you control, signed with the flow’s own key.
End workflow The path stops here.

On the trigger you can list up to 10 events that end a person’s run wherever it is (“stop the trial reminders when they subscribe”). Cart reminders also stop by themselves when the cart is ordered or emptied.

An Email step can test up to three versions (A, B, C): another template each, optionally under another sender name. Each person gets one at random. You choose what decides the best one (Clicks, Orders or Revenue) and whether a clearly better version is kept for everyone on its own.

You edit a draft; people go through the live version until you press Publish. History lists every published version: open one read-only, restore it as the draft, or discard your draft and go back to the live one.

Test run sends the draft through for one test contact, made up or a copy of a real one, and you follow every step in Runs. Nothing real happens: no email reaches the contact, no tag is added, no webhook is called, and waits pass instantly. You can choose what the test assumes (they opened, clicked, are in the segment, did the awaited event) and have each email also sent to your own inbox, marked [Test].

Runs shows every person a flow has taken in, and what happened to them.

Status or reasonWhat it meansWhat you do
RunningThe run is executing its current step.Nothing.
WaitingThe run is at a wait step, or pausing before retrying a step that failed.Nothing: it continues at the time shown.
SucceededThe run reached its end, or ended early for a reason recorded in its history.Nothing.
FailedA step failed even after every retry.Open the run's history to see which step and why.
TerminatedStopped from outside: the flow was unpublished or the contact was erased.Nothing.
StepWhat it means
EnrolledThe contact entered the flow: its trigger happened for them.
EnteredThe run arrived at a step.
EvaluatedA condition, an audience check or a wait-for-event was decided; the history shows which way it went.
SentThe email step queued its email for sending.
TaggedA tag was added to the contact.
WebhookCalledThe flow called your webhook address.
WaitedA wait step was reached; the run continues at the time it shows.
RetriedA step failed for a passing reason and will be tried again.
FailedA step failed after every retry; the run stops there.
CompletedThe run ended, at the end of the flow or early for the reason it shows.
SkippedThe email step did not send: the sending gate stopped it, and the history shows the reason.
SimulatedIn a test run: what the step would have done, without doing it.
Status or reasonWhat it meansWhat you do
audience_not_matchedThe contact did not fit the audience the flow is limited to, so the run ended right after the trigger.Nothing, or widen the flow's audience.
cart_closedThe cart the flow was about was ordered or emptied, so there was nothing left to remind anyone of.Nothing: this is the reminder working as intended.
exit_eventThe contact did one of the things the flow stops on (for example they activated or subscribed).Nothing.

An email step that did not send shows the sending gate’s reason.

Flows on Store events start on the facts Azimea records:

EventWhat it meansWhen it happensWho sends it
order.placedAzimea recorded a new order on the contact's timeline.When the order arrives, from any source.Azimea
cart.abandonedAzimea's verdict that a cart was left: it starts the abandoned-cart flow.30 minutes without change, with products and an address, and no order.Azimea
contact.subscribedA contact became a subscriber: a newsletter or form sign-up starts welcome flows; someone who ticked marketing while creating a shop account starts the flows on new customer accounts.When a contact's consent becomes Subscribed.Azimea

Flows on Something happens in your app start on your product’s events; these names make the ready-made product flows work without changes:

EventWhat it meansWhen it happensWho sends it
user.signed_upA person created an account in your product.Right after sign-up.Your product, through POST /events
user.activatedA person reached the moment your product counts as "they got it" (their first project, first payment, first report).When you decide activation happened.Your product, through POST /events
trial.endingA person's trial ends soon.A few days before the end of the trial, as you choose.Your product, through POST /events
subscription.startedA person started paying.On the first successful payment.Your product, through POST /events
  1. Flows › New workflow: start from a template (abandoned cart, welcome series, post-purchase follow-up, win back) or from an empty flow.
  2. Pick the trigger, then add steps from the library on the left; connect them on the canvas.
  3. Choose What it is for: Marketing, or Service message for an email that only informs (see After the order).
  4. Run a Test run and read it in Runs.
  5. Press Publish. Problems that would stop it are shown on the canvas first.

Send events to POST /events, or call a flow’s trigger URL. See What you can build today.

Symptom Likely cause Fix
Publish is refused A step is incomplete (no template, no tag, no HTTPS address, a schedule without an Audience step). Fix the problems marked on the canvas.
Nobody enters The flow is a draft, or the trigger never happens (no store connected, your app does not send that event yet). Publish it; check Runs and the contact’s timeline.
People enter but get no email The sending gate stopped it; the run shows the reason. See why an email was not sent.
An edited template is not used Live flows keep the copy taken at publish. Publish the flow again.
A run is Failed A step failed after every retry (often a webhook address that does not answer). Open the run’s history for the step and the reason.