Skip to main content

Executions — see what your flow did

An execution is one run of a flow, recorded from the moment its trigger fired to the moment the last path ended. Executions is where you read those runs back: what set each one off, what every block was handed, what it returned, which branch it took, and where it stopped.

This is the page to open when someone says "the bot replied the wrong thing" or "the flow didn't do anything". Instead of guessing from the customer's side, you see the run itself.

The Executions page listing a flow's runs

note

Executions are per flow. Open the flow you want to investigate, then open Executions from its top bar. There is no account-wide run list.

Opening Executions​

  1. Open Studio from the left sidebar.
  2. Click the flow you want to investigate.
  3. Click Executions in the editor's top bar.

The page opens over the canvas. Your canvas is untouched underneath — Back to the canvas (the arrow at the top left) returns you to exactly what you were editing, unsaved changes included.

What gets recorded​

RecordedNot recorded
Real runs — a customer messaged you, a form was submitted, a schedule came due, a webhook firedSimulator sessions. A dry run is not a run, and never appears here
Test Run results, marked Test runs so you can filter them outAnything that happened before this feature was released
Every block that executed, in order, with its inputs, outputs, errors and timingBlocks that never ran — they are shown dimmed on the replay instead

Recording starts the first time a flow runs after the feature is released. A flow that has been live for months starts with an empty list and fills up from its next run.

One run can span a whole conversation

A run lasts until the flow's last path ends — not until the next customer message. When a Reply Message waits for the customer, their answer continues the same run; it does not start a new one. So customer writes → bot asks → customer answers is one execution. A new execution starts only once the previous one has ended and the customer writes again.

The list​

ElementWhat it is
ExecutionsThe page title, with a one-line description of what you are looking at.
Retention pillHow many runs are kept right now, out of how many your plan allows, and the plan's name. Hover it for the full rule. See How much history you keep.
RefreshReloads the rows and the counts. Runs do not stream in live — refresh after you have tested something.
← (top left)Back to the canvas.

Status tiles​

Four tiles sit under the header. Each one is also a shortcut: click it and the Status filter jumps to that value.

TileCountsClicking it
Runs keptEvery run currently stored for this flowClears the status filter
CompletedRuns where every path finishedFilters to Completed
FailedRuns where a block returned an errorFilters to Failed
WaitingRuns paused right now, waiting for a customer reply or a timerFilters to Waiting

Failed is the tile to watch. A number that climbs after a publish usually means the change broke something.

Filters​

FilterOptionsWhat it does
StatusAny status, Completed, Failed, Waiting, Running, Timed out, CancelledShows only runs that ended that way. See Run statuses.
Run typeAll runs, Real runs, Test runsSeparates real customer traffic from your own Test Run results.
FromA date and timeOnly runs that started at or after this moment.
ToA date and timeOnly runs that started at or before this moment.
Sort byNewest first, Oldest first, Slowest first, Fastest firstThe order of the rows.
Clear filters—Resets everything back to all runs, newest first.

Filters apply as soon as you change them.

note

Picking a From or To date forces the order back to Newest first or Oldest first — a date range and a duration sort cannot both decide the order. The Sort by dropdown updates itself so it always shows the order the rows are actually in.

A row​

Each row is one run.

ElementWhat it tells you
Coloured dotThe outcome at a glance — teal completed, red failed, amber waiting, coral running, grey cancelled. Waiting and running pulse.
#42The run's number. Runs are numbered per flow, so #42 in one flow is unrelated to #42 in another.
Status chipCompleted, Failed, Waiting, Running, Timed out, Cancelled.
Test chipPresent only on a Test Run. Real customer runs have no chip.
v3Which published version of the flow ran. Useful when a run predates your last publish.
Quoted textThe customer message that set the run off. When there is no message — a schedule, a webhook — the trigger's name is shown instead.
Red lineThe run's error, when it has one.
Date and timeWhen the run started, in your own timezone.
DurationHow long the whole run took, from trigger to last path.
n stepsHow many blocks executed.
n failedHow many of those failed. Only shown when it is not zero.

Click anywhere on a row to open the run.

Load more at the bottom fetches the next 25 rows. It appears only when there are more.

Replaying a run​

Clicking a row loads that run onto the canvas and plays it back.

A run replaying on the canvas

A light travels the path the run actually took: each block lights up in turn, and a glowing pulse runs along each connection in the order it was crossed. It is the fastest way to see the shape of what happened — where the flow branched, and where it stopped.

A replay is a recording, not your flow

Nothing on this canvas can be moved, edited, connected or deleted, and Publish is switched off. You are looking at a record of something that already happened. Exit preview returns you to your draft, exactly as you left it.

The replay banner​

ControlWhat it does
Run #42 · CompletedThe run and its outcome, with the coloured dot beside it.
Second lineWhen it started, how long it took, the flow version, and a Test runs marker when it was one.
▶ ReplayPlays the travelling light again from the beginning.
Back to executionsReturns to the list, keeping your filters.
Exit previewCloses the replay and restores your draft.

What the canvas shows​

What you seeWhat it means
Teal ring around a blockIt ran and completed.
Red ringIt ran and failed.
Amber ringThe run paused here — waiting for a customer reply or a timer.
Dimmed blockIt never ran in this execution.
Numbered badgeThe step order — 1 is the trigger, 2 is the next block that ran, and so on. A block the flow entered twice shows the number of its last visit.
Bright teal connectionThe run crossed this connection.
Faded connectionThis path was not taken.

Click any block on the canvas to open its step in the step panel.

The flow this replay draws​

Studio stores a snapshot of the flow's layout each time you publish a new version, and a replay is drawn against the snapshot the run actually used. Blocks you have deleted since still appear, wired the way they were, so an old run makes sense even after you have rebuilt the flow.

If no snapshot exists for a run — for example a run recorded before its version was snapshotted — the canvas falls back to the flow as it stands today and says so, both in the banner and above the steps:

No snapshot was stored for this run, so the canvas shows the flow as it stands today. Blocks may have changed since.

The Steps panel​

While a run is open, two panels sit either side of the canvas. The run panel (on the right) holds the run's summary and every step in order. The step panel takes the place of the block library — nothing can be added to a run that already happened — and shows one step in full: what came into the block, what it did, and what it passed on.

One step of a run in the step panel: what came into the block, what it did, and what it passed on

Run summary​

FieldMeaning
OutcomeCompleted, Failed, Waiting, Running, Timed out, or Cancelled.
StartedWhen the trigger fired.
TookTotal duration.
TriggerWhich trigger block started the run.
Flow versionThe published version that ran.
ConversationThe conversation the run belonged to, when it had one. Click it to open the conversation in a new tab.
Waiting forOnly on a waiting run — a reply from the customer, a reply that matches a branch, or a Wait block's delay.

A red box below the summary carries the run's error, when there is one.

The step list​

Every block that executed, in order. Each entry shows its step number, the block's name, its type, how long it took, its error if it had one, and a one-line outcome — the customer's message on the trigger, ↩ “reply” on a block that waited for an answer, → branch on a condition.

ColourMeaning
Teal numberThe step completed.
Red numberThe step failed.
Amber numberThe run paused at this step.

A block that has since been deleted from the flow is tagged block since deleted. Its step stays on the timeline — what happened, happened.

A block can appear twice

The list is a record of what ran, not of which blocks exist. A condition the flow legitimately re-enters — because the first customer reply matched nothing and a second one arrived — appears twice, in the order it ran. That is usually the answer to "why did the customer get asked the same thing again?".

One step in detail​

The step panel opens on step 1 — for a chatbot, the customer's message — and ‹ › at its top walk through the steps in order. Click a step in the list, or a block on the canvas, to jump straight to it.

Each step reads top to bottom as three cards:

CardWhat it holds
What came inWhere the run came from — the trigger, or the block before it and the branch it left through. The customer message this block was working on, with its type (Text, Chose from a list, Tapped a button), the chosen option's ID, and when it arrived; on the first step also who sent it, on which inbox. Any {{variable}} the block was given, with its value. For a condition, the values its rules read.
What the block didFor Reply Message, the message exactly as the customer saw it — text, list button and options — and whether it was sent. For If / Else, every condition marked ✓ or ✕ with what it compared and the actual value it found. The block's error, if it failed.
What it passed onThe customer's reply, when the block waited for one, and how long it took them. The branch taken. The variables the block set. And the next block — click it to go there — or a plain sentence saying why nothing came next.

The last line of What it passed on is usually the answer to "why did the bot stop?":

It saysIt means
Next block → a blockThe run continued there. Click it.
Nothing is connected to the “Fallback” branch, so the flow ended here.The condition chose a branch you never connected. Connect it, or turn the Else branch off so the flow waits for another reply instead.
Nothing is connected after this block, so the flow ended here.This was the end of the path.
Waiting for the customer's reply.The run is paused on this block right now.
The block failed, so this branch stopped here.The error is shown under What the block did.

Block settings (as configured), folded at the bottom of each step, still holds the block's settings with every {{variable}} filled in. A field you wrote with variables shows both halves:

message_text Hi Dana, your order is ready ⟵ Hi {{contact.contact_name}}, your order is {{var.status}}

The value on the left is what the block actually used. The template on the right is what you wrote.

Runs recorded before October 2026

Older runs did not save the customer's messages on every step. For those runs the step panel rebuilds the first message and the last reply — and says so — and conditions show which rule matched, but not the values they compared.

Credentials are never shown here

Settings whose name looks like a secret — Authorization, api_key, token, password and similar — are replaced with ••• redacted •••. You can still see them in the block's own settings on the canvas; they are kept out of the run log because run logs get exported, screenshotted and pasted into support tickets.

Run statuses​

StatusMeaningWhat to do
CompletedEvery path finished.Nothing — though "completed" only means no block errored. Read the steps to check it did the right thing.
FailedA block returned an error. Other branches kept running.Open the run and find the red step.
WaitingThe run is paused, waiting for a customer reply or a Wait countdown.Normal for a chatbot. It becomes Completed when the customer answers, or Timed out if they never do.
RunningExecuting right now.Refresh in a moment. Most runs finish in under a second.
Timed outA wait expired before the customer replied.Consider a shorter timeout, or a branch that handles silence.
CancelledThe run was stopped — usually because the flow was paused or deleted while it was mid-conversation.Expected after a pause or a delete.

How much history you keep​

Your subscription plan decides how many finished runs each flow keeps. The retention pill in the header always shows where you stand:

412 of 500 kept · Free

The rule is oldest out, newest always kept. On a plan that keeps 500, run 501 is recorded in full and the oldest finished run is removed to make room — so you always hold the most recent 500. You never lose a new run because the flow is at its limit.

PointDetail
Counted per flowA busy flow cannot push a quiet flow's history out. Each flow keeps its own last N.
Never removedA run that is still Running or Waiting is live state — a customer sitting mid-conversation with your bot — so it is never deleted to make room, whatever its age.
Deleting the flowTakes every run with it. There is no history after a flow is deleted, and no way to get it back.
Changing planMoving to a smaller plan trims each flow down to the new number over its next few runs. Moving up simply lets history grow further.
Nothing is blockedRetention is a depth, not a quota. Hitting it never stops a flow from running, and never stops you from changing plan.

The exact number per plan is shown on Billing → Plans, on every plan card, alongside agents, storage and analytics history.

Save a run before it ages out

Retention has no "pin this run" button. If a run matters — a bug you are reporting, a case you want to review next week — take a screenshot of the steps panel while it is open.

Test runs and real runs​

Test Run results are recorded here too, tagged Test runs, and they count towards your retention.

Use Run type → Real runs while investigating a customer complaint, so your own testing does not clutter the list.

Testing a chatbot? Use the simulator instead

Test Run fires the flow once with sample data and records an execution. The Simulator lets you hold a whole back-and-forth conversation with your bot, records nothing, and sends nothing. For chatbots it is almost always the better tool.

Permissions​

To do thisYou need
Open Executions, read runs, replay themStudio → Read
See the customer's own messages inside a runCustomers → Conversations → Read as well

Studio permission is not conversation permission. Without Customers → Conversations → Read, the run's structure is still fully visible — which branch it took, what failed, how long it took, what your flow sent — but the customer's own messages and contact details are hidden, with a note saying why:

The customer's own messages are hidden because your role does not include reading conversations. The flow's own logic — which branch it took, what failed, how long it took — is all shown.

Every default role that grants Studio also grants Conversations, so most accounts never see this. It matters only for a custom role built with one and not the other. See System permissions.

Nobody can edit or delete a run — there is no permission that allows it. Runs leave only through retention or by deleting the flow.

Limits​

LimitValue
Runs kept per flowSet by your plan. See How much history you keep.
Rows per page25, with Load more
Steps recorded per run400. A run that somehow does more keeps the first 400 — where a runaway flow goes wrong is at the start.
Long values in a stepTruncated, with the number of characters dropped shown at the cut.

What Executions cannot tell you​

QuestionWhere to look instead
Why didn't the flow start at all?No run means no trigger matched. See Troubleshooting → The flow never runs.
What did the customer see on their phone?The conversation itself, in the inbox.
Who published this version?Version history and the Audit Log in Settings.
How is this flow doing overall, this month?Analytics. Executions is per-run, not a report.

Next​