Skip to content
Expedify
6 min

Testing in the builder

Fire the trigger for real, then read what happened. Two surfaces show the same run from different angles, and one field in it answers most questions.

A workflow that has never run is a drawing. Everything in this course so far has been about building; this lesson is the other half of the loop, and it is the half that separates people who ship automations from people who have a lot of drafts.

Test by firing the trigger for real. Change the record. Post to the webhook. Type into the chat. Whatever starts this workflow in production is what should start it now — because a test that skips the trigger has not tested the part most likely to be wrong.

Two ways to read a run

Once it fires, the same run is visible in two places. They hold identical data and are useful at different moments.

What it is for

What it is for

The sequence is always the same: the panel tells you where, the node tells you why. Going straight to a node's panel without looking at the list first is how people spend twenty minutes debugging a node that ran perfectly.

What a run actually contains

Whichever surface you read it through, a run is the same record underneath, and it is worth knowing its shape:

status

What it tells you

failed nodes

What it tells you

duration

What it tells you

per node: output

What it tells you

per node: output path

What it tells you

The output path is the field to look at first on any branching workflow. A Condition records not just that it ran but which way it went, alongside the two values it compared. When a workflow “does the wrong thing”, this one field usually ends the investigation in seconds — the branch went the way it went because those were the values, and now you can see them.

How to read a run that went wrong

  1. Find the last node that ran. If the list stops earlier than the canvas does, the workflow left down a path you did not expect, or a node ended the run.
  2. Read its output path. On a branch, compare the two values it recorded. Nine times in ten the values explain everything.
  3. Open the node after the surprise, not the one before it. Look at the runtime input it received. If a value is empty or contains angle brackets, the problem is upstream of it, and now you know exactly where.
  4. Compare what a node produced with what the next node referenced. Field names are the most common defect in this whole course — a template referencing a field that the producing node does not emit resolves to nothing, silently.

What breaks

A green run is not a correct run, and this course has spent twenty lessons proving it. A campaign that mailed nobody, a text-to-speech node that produced no audio, a search that quietly answered a different question, a reply containing <field not found> — every one of those is a completed run with no failed nodes. Testing means reading the output, not reading the status.

Testing with data that is too clean proves nothing. The first run should use a realistic record — a contact with a missing phone number, a name with an apostrophe, an empty optional field. The workflow that works on your carefully filled test contact and breaks on the third real one is the standard experience.

Firing a real trigger has real consequences. There is no sandbox. Testing a workflow that emails, calls or charges someone does those things. Point the recipient at yourself, set a small limit on any search feeding a bulk step, and read the previous lessons' warnings about caps before rather than after.

A workflow that is not active will not fire. It is the most common reason a trigger seems to do nothing, and it is invisible unless you look — the record changes, the webhook returns success, and no run appears at all. If there is no execution to read, check this before anything else.

Try it

  1. Take any workflow you have built and fire its trigger properly. Do not simulate it.
  2. Read the run end to end before forming an opinion: which nodes ran, in what order, and what the last one produced.
  3. Open one node's panel afterwards and read the runtime input it received. Compare that against what the node above it produced.
  4. Now break something deliberately — misspell a field name in a template — and run it again. Find the defect from the run alone, without looking at your edit.
  5. Finally, run it with a deliberately awkward record: blank optional fields, an apostrophe in a name. That is the run that tells you whether it is finished.

Next: The executions panel — the same information, kept, for every run that ever fired rather than only the last one.

Related lessons