Trying a flow without publishing it using the simulator on the Test tab, and sending the draft to a real contact; which steps run in a test and which are skipped.
Taking a flow live and learning on customers is an expensive way to learn: a wrong wording, a missing connection or a condition wired the wrong way all land on your reputation. The tab prevents that; it lets you walk a flow end to end without publishing it and without messaging anyone. This guide covers every button in the simulator and the rules for testing on a real channel.
Test
💡 The simulator runs the draft, not the live version. So you are testing the changes you have not published yet.
What you will find in this article
The simulator window
Setting up the test contact
Which steps run in a test and which are skipped
Reading the flow's notes
Testing on a real channel
Common mistakes
The simulator window
The first section of the Test tab is the Simulator. Its description says two things: nothing is sent to real channels, and contact details change only in this test.
In the middle you see a phone frame. Its top edge carries:
Channel — A choice among your account's channels (Instagram, WhatsApp). Changing the channel shows how the flow behaves there; on Instagram, for example, a List step turns into quick reply buttons.
Event — Only appears when your draft has a trigger other than a plain message. The list holds Message plus the events in your flow (Post comment, Story reply, Post share, Link / ad…).
Start flow (play icon) — Starts the flow directly without waiting for a trigger. Use it when you want to see the flow without typing a keyword.
Time is up (timer icon) — Only appears while the flow is waiting for a reply with its own time limit. Pressing it assumes the person never answered and the flow continues from the No answer exit.
Reset — Starts the test over; the transcript and the test contact's state are cleared.
The body of the frame is the transcript. You type into the box underneath as the contact and press Send. If the flow sent buttons, you can also move forward by tapping them.
Before you do anything, the body shows this hint: "Type a keyword or start the flow directly."
Setting up the test contact
The column beside the phone (underneath it on a phone) manages the test contact. This is the only way to exercise the conditions in your flow.
Test contact — The Tags and Fields currently accumulated on the contact. When the flow adds a tag or writes to a field you see it here at once. With none, it shows a dash (—).
Language — The contact's language. With Account's language selected, the Contact's language condition decides based on the account's language.
First contact — Tick it and the person counts as having never written before. If your flow has a First contact condition, this is how you exercise both branches.
Attachment — Attaches a simulated attachment to the incoming message: Image, Video, Audio or File. No real file is uploaded; it only says "this message carries an attachment of this kind". Use it to test the Incoming attachment condition and the AI step's image-reading box. The selection resets after you send: an attachment belongs to a message, not to a person.
Follow state — It has three values and defaults to unknown. Because this information is often unavailable in real life too, the test shows it as it is, so you can exercise the "unknown" branch as well.
💡 Text is not required while an attachment is selected: in real life a customer can send a photo on its own. Leave the box empty and press Send.
Which steps run in a test and which are skipped
The simulator does not touch the real world, so some steps are simulated:
Wait step — Not waited out; skipped, with a note in the transcript.
Pre-send delay — Skipped, with a note.
Send email — Not really sent; a "not really sent in the simulator" note appears.
External request — Only read-only (GET) requests are really made; requests that write data are not, and the flow continues from the Failed exit.
Try it on — No image is generated; you have to test that step on a real channel.
Split randomly — In a test the first branch always runs.
Media step — An "attachment sent" note appears but there is no real file.
By contrast, these really run:
AI step — The model really produces a reply, so you see what it would write. This spends credits and is recorded as a test. Because it spends credits, this step only runs for roles that can edit the flow.
Conditions — Really evaluated against the test contact's state.
Actions — Tag, field and assignment changes are applied to the test contact; no real contact record is touched.
Loop protection — Runs with the same limit as live, so you catch an endlessly cycling flow before publishing.
Plan locks — A locked step stops the flow in a test too.
The 24-hour rule — For a message that could not really be delivered, a "Would not be sent" note appears.
Reading the flow's notes
Small centred grey lines appear between the messages. They explain what the flow did and are the most valuable part of a test. Common ones:
Flow started / Flow ended
Condition met → True / Condition not met → False
This message didn't match the triggers. — What you typed matched no trigger.
The flow is waiting for a button; the text wasn't taken as a reply.
Tag added: … / … = … — The effect of actions.
Would not be sent: 24 hours have passed since the contact's last message.
The AI could not produce a reply (…); the flow continued from the "Failed" exit.
Loop protection: the flow cycles without waiting for a reply, so the session was stopped here.
Handed over; automation stops
Plan lock: … is not covered; the flow stopped here.
Testing on a real channel
The second section of the Test tab is Try on a real channel, and it is only drawn for roles with edit rights. Here the draft really is sent to the contact you choose.
How to use it:
Type a name or username into Search contacts. The list filters as you type.
Press Send to this contact beside the person in the list.
The notice reads Test session started; follow it in the Logs tab.
The rules:
The person must have written to you in the last 24 hours. Otherwise the send is refused. The reason is explained in The 24-hour messaging window.
Their channel must be connected and active.
If the flow has errors the test will not start; clear the pre-publish check first.
If the person has a running session it is interrupted.
The session is marked as a test and is excluded from the stats.
If the list comes back empty it reads No one wrote in the last 24 hours.
⚠️ Note: A real-channel test sends a real message. Send it to yourself or to someone on your team; do not test on a customer's account.
A concrete example
A car wash added an out-of-hours branch to its "appointment" flow and wants to test both:
Test → Simulator. Channel: Instagram.
Type "appointment" into the box and press Send. The flow starts and the first message arrives.
Read the notes: Condition met → True means the in-hours branch ran.
To test the out-of-hours branch, temporarily change the condition's time range, or run the test outside hours; look for Condition not met → False in the notes.
When the flow asks for a phone number, type something unrealistic ("abc"). The note should read The answer did not match, asked again.
Press Reset and walk through once more from the start.
Finally, use Try on a real channel to send it to your own Instagram account and see how the message looks on a phone.
Common mistakes and how to fix them
"It worked in the simulator but not live." The simulator runs the draft. Going live needs Publish.
Expecting wait steps to run in a test. They are skipped, with a note. You only see real wait times live.
Treating "This message didn't match the triggers" as a fault. What you typed does not match your keywords; check the match mode (Contains, Exact match…).
Expecting a random split to be random in a test. The first branch always runs; to see other branches you have to reorder them temporarily.
Running a real-channel test on a customer's account. The message really goes out and cannot be taken back.
Forgetting to set the test contact's follow state. It defaults to unknown; change the value to exercise the other branches of the Follow state condition.