Test a Workflow
Run a saved workflow version from the editor (as a call, a run with variables, or a first SMS or chat message) and watch its path on the canvas.
Test runs the workflow you have open, as it was last saved, without routing a phone number to it or publishing it first. You can place a voice call from your browser, start a run with variables you choose, or send the workflow a first SMS or chat message. While the test runs, the canvas shows the path it takes and a run panel shows what each node did.
Start a test
Select Automations → Workflows in the left navigation and open a workflow. Test sits in the top right of the editor, next to Publish. On a narrow window it shrinks to an icon; hover over it to see the name.
The test runs the version open in the editor, as it was last saved, whether that version is a draft or published. Unsaved changes are handled before the test starts:
- A draft with unsaved changes is saved in place when you click Test.
- A published version with unsaved changes can't be saved in place. The editor says so and opens Save as New Draft. Save the draft, then click Test again to test it.
The Test version dialog then asks which kind of test to run:
| Kind | What it takes | What it does |
|---|---|---|
| Voice Call | Nothing | Places a call from your browser into the workflow |
| Run | Starting variables, optional | Starts the workflow with those variables |
| SMS | A First Message, and optional starting variables | Starts the workflow as if that text had arrived |
| Chat | A First Message, and optional starting variables | Starts the workflow as if a visitor sent that message |
The Voice Call kind runs on the same telephony path as a phone call, so Play Message, Capture DTMF, speech capture, and the AI Voice Agent node behave as they do for a caller.
For the other kinds, Add Variable adds a Name and Value pair under Starting
Variables. Values are passed as text, a row with no name is ignored, and two rows can't share a
name (Each variable needs a unique name.).
Choose Start Call or Start Run, and grant microphone permission if your browser asks. If a run can't start, the dialog shows Couldn't start the test run with the reason, and the canvas stays editable.
The dialog keeps the kind, variables, and message you started with, so clicking Test again repeats the same test. Cancel clears them.
Watch the path
While a test runs, the canvas is read-only in your browser. You can pan, zoom, and click nodes, but not move, add, connect, or delete them, and undo, redo, and save are off. The editor header shows Test run in progress and the version under test.
As the run moves:
- Once the first node runs, the nodes the run hasn't reached are dimmed.
- Each edge the run took is drawn thicker and animated. The other edges fade.
- The node running or waiting right now pulses.
- Each visited node carries a badge with its step number. A node visited more than three times
shows its first three steps and a
+ncount for the rest.
Exit Test in the header leaves the test and unlocks the canvas. Exiting during a voice test hangs up the call. A Run, SMS, or Chat test carries on to its end on the server after you exit; the editor stops showing it.
The run panel
The Test Run panel opens on the right when the test starts. The Run Panel switch in the header hides and shows it.
The top of the panel says where the run is:
| Status | Meaning |
|---|---|
| Starting… | No node has run yet |
| Running | The workflow is running |
| Waiting for the next message at node name | An SMS or chat test reached a node that waits for a reply |
| Ended | The workflow finished |
| Ended with an error | The workflow stopped on an error |
| Caller disconnected | The workflow ended with a disconnect |
| Call ended | A voice test call ended before the workflow recorded its finish |
Below that, Nodes lists every step in order with the node's name and its state: Running,
Waiting, Done, or Error. Once the run has ended, Response shows the payload a
Response node returned, or No Response node ran. Variables shows the variables as the run
last recorded them.
Click a step, or a visited node on the canvas, to open that node's detail. All Nodes, a click on an empty part of the canvas, or Escape goes back to the list. The detail shows:
- Visit — for a node the run reached more than once, which visit to show.
- Result — the Exit the node took, the Next Node, and the Duration. A node that took its fallback exit shows Took the fallback exit.
- Message — for Send SMS and Send Chat Message nodes, the message the node sent or would have sent.
- Response — the node's own response data.
- Variables After This Node — the variables once the node finished, with the names it changed listed under Changed.
Some values are hidden:
- A private variable's value is masked with
*wherever it appears in the panel, including inside other values. - When Redact Data in Logging is on for the workflow or for a node, that node's response,
message, and variables show
[REDACTED]. - When a node's recorded data is over 64 KB, its values show Too large to display with the size.
During a call
A voice test shows the call at the top of the Test Run panel, above the node list, so you can watch the path on the canvas while you talk. The Call bar shows the time elapsed against the five minute limit, and its arrow hides the call controls while keeping Hang Up in reach. Turning off the Run Panel switch hides the call controls too, but the call keeps going; Exit Test hangs it up.
- Keypad — the digits 0 to 9,
*, and#. A press is sent to the call as a key press, so a Capture DTMF node or a menu reads it as it would from a phone. The digits you've sent show above the keypad. The keys are disabled until the call connects. - Mute — stops sending your microphone.
- Hang Up — ends the call.
When the call ends, the panel says why and links to View call details:
| Message | What happened |
|---|---|
| The workflow ended the call. | The call's channel closed, for example at a disconnect |
| Call ended. | You hung up |
| Ended after the 5 minute test call limit. | The call hit the time limit |
| The call ended at transfer node "…". Nothing was dialed. | The workflow reached a transfer node |
The path and the run panel stay on the canvas after the call ends, until you click Exit Test.
Text messages aren't sent
A Send SMS node in a test doesn't send a text. It records the message it would have sent (the To, From, and Body) under Message in the node's detail, then takes the exit a sent message would. With Wait for Reply on, it waits as it would after a real send. This holds for every kind of test, voice test calls included, and for subroutines the workflow calls.
The exception is an AI Voice Agent's tools. During a voice test call, both of these do send a real text:
- A Send SMS node in a workflow the agent runs as a tool. That workflow runs as a normal run.
- A Send SMS node tool on the agent. The agent sends it directly, outside any workflow.
A Send Chat Message node's message shows under Message the same way.
SMS and chat tests stop at the first wait
An SMS or Chat test sends the workflow one message, the First Message. When the workflow reaches a node that waits for the next message, such as Send SMS with Wait for Reply on, the status shows Waiting for the next message at that node. Sending a follow-up message from the editor isn't supported yet.
If the waiting node has a timeout, the run takes its no-reply exit when the timeout passes, and the canvas follows it if you are still in the test.
Transfers dial nothing
A test call never places a transfer.
- A Transfer to External or Transfer to Queue node ends the test call when it is reached. The end message names the node, and the call details list the transfer as Test call ended at transfer with the node's name and the kind of transfer. The end message waits up to about 30 seconds for that record; if it has not arrived, the panel shows The workflow ended the call. instead.
- An AI Voice Agent node's own transfer tool is refused, and nothing is dialed. The agent is
told
This is a test call, so the transfer was not placed. - A workflow the agent hands off to, and a subroutine the workflow calls, are part of the same test call. A transfer node reached there ends the call the same way.
To confirm the transfer destination itself answers, use a real call to a routed number.
Billing
A voice test call is billed as call minutes, the same as a phone call into the workflow. It has no
number of its own, so on the Billing page's Usage tab its minutes show as Local call, in,
beside the workflow's IVR time. See How a call is
billed. If your organization has no call-minute
balance, the call ends before it connects and the panel shows
Couldn't complete the call with Your organization's balance is too low to place a test call.
Call details
A voice test call is recorded as a conversation, and Call Logs lists it as Browser test call in place of a caller's number. When it ends, View call details opens its page under Insights → Call Logs, with the steps the workflow took. See Call Logs for how to read it.
Limits and defaults
| Limit | Value |
|---|---|
| Call length | 5 minutes, then the call ends |
| Concurrent calls | One at a time per signed-in user, counting agent preview calls |
| Version tested | The version open in the editor, as last saved |
| Transfers | Never dialed; the call ends at a transfer node |
| Messages per SMS or chat | One, the First Message |
| Records per run | 2,000 records or 8 MB; the step list stops at either |
| How long a run is kept | One hour after its last update |
| Subroutines | The Subroutine node shows on the path; its nodes don't |
The one-call limit is shared with Call Agent in the agent editor, so a preview call left running in another tab blocks a test call until it ends or reaches its own five minute limit.
Troubleshooting
Permission needed. The browser refused microphone access. Enable it for this site in your browser's settings, then use Try Again.
Couldn't complete the call. The call failed to start. If the message is
Failed to start a test call., one cause is another test call or agent preview call still running
under your account, for example in a tab you left open. End it, or wait for it to reach the five
minute limit, then try again. If the message says the balance is too low, see
Billing.
Your sign-in session expired. Reload the page and start the call again.
This test run is no longer available. The run's record expired an hour after its last update, or the run never started. The path clears from the canvas. Click Exit Test and start a new test.
Can't reach the test run. The path may be out of date. The editor failed to read the run three times in a row. It keeps trying, and the notice clears once a read succeeds.