Test and publish a workflow

Plan a workflow's path against a pretend conversation without sending anything, then publish it — and know what Publish refuses, what it only warns about, and what it locks.

Getting here

Automate → Workflows, open a workflow, then the Test tab under the canvas. To publish, set Status to Published in the editor and press Save, or click the status chip on the workflows list.

Before you start

  • An owner, admin or agent can open the Test tab, build a workflow and save it as a draft. Publishing is an owner or admin action everywhere it can be done — the status chip on the list refuses it, and a save from the editor, to anyone else. Stopping a Published workflow is owner/admin-only from the chip, but an agent can do it by changing Status to Stopped in the editor and pressing Save — the editor's own save does not check role for that particular move, only for reaching Published — except for an Incoming Webhook workflow (see next).
  • A workflow whose trigger is Incoming Webhook needs an owner or admin to save at all, whatever the status — because saving one is what issues, or keeps, the webhook's URL.
  • Building and publishing workflows depends on your plan; see pricing. Some plans also cap how many workflows can be Published at once.
  • Nothing outside Inchat has to be connected to test. Publishing a workflow whose trigger depends on a connected account does need it (see When it fails).

Set up

  1. Build the workflow and press Save. The test reads the saved workflow, not what is on the canvas, so an unsaved edit is not in it.
  2. Click Test under the canvas. The panel is closed until you do.
  3. Pick the Channel the message would arrive on: WhatsApp, Messenger, Instagram or Website widget. Optionally paste a conversation id under Conversation (optional) to borrow that conversation's real channel and ad referral. Under More fields, add anything else a condition should see as JSON, for example {"message":{"text":"price"}}.
  4. Click Run test. Read the headline, the Conditions list (each rule, what it expected, and what the test actually held) and the numbered steps.
  5. If the plan reaches an Ask a Question step it stops at Waiting for the customer. Pick an answer, No reply, or Replies that match no option to see what runs next. Undo last answer goes back one; Start over restarts.
  6. Fix anything listed under Check before publishing.
  7. To publish from the editor, set Status to Published and press Save, read the Confirm publishing box (it lists any WhatsApp timing warnings), then press Publish. From the workflows list, click the status chip instead: it cycles Draft → Published → Stopped → Draft.

How it works

  • Run test plans the path; it does not run the workflow. It sends no message, writes nothing and queues no wait — it reads the saved workflow and prints what would happen.
  • It works on a Draft or Stopped workflow as well as a Published one. For those the headline reads Would not run live (draft/stopped), followed by how many steps it would run if published.
  • The test judges the trigger's own limits first — its channel, entry source and ad — and then the top-level conditions, one line each: what the rule expects and what the test's context actually held.
  • The test's context is thin: the Channel you pick and, if you paste a conversation id, that conversation's channel and ad referral. A condition on anything else — a tag, the message text, a contact field — shows (not set) unless you type a value into More fields.
  • At a Condition, Branch or Date & Time (business hours) step the test follows the first lane that matches. Date & Time is judged against the clock at the moment you press Run test, not when a real customer would reach it.
  • At a Randomizer (A/B split) the test picks a lane by the same weights, and the same conversation lands in the same lane every time. That lane is not a forecast of the lane a live contact gets, because the test and a live run seed the draw differently. Without a pasted conversation id, every test takes the same lane unless you type a contact id into More fields.
  • At Ask a Question the test stops and waits for you. Each option becomes a button, plus No reply (times out after …), Replies that match no option when the question has options, and a text box for a question that accepts typed answers. Each pick continues down the Success, Timeout or Invalid path.
  • A Wait is not waited. The test adds its length to a running delay and marks the steps after it [delayed +Ns]. An End step stops the plan, the way it stops a live run.
  • Check before publishing lists problems found on the whole flow, not only the path the test walked. Today that is one thing: a question whose answer leads to no step, so the run simply ends and the answer is never used.
  • Only a Published workflow starts from a real event, and its trigger and conditions still have to match that event.
  • Publishing is refused unless your plan allows workflows, and unless it would not take you past your plan's cap on Published workflows.
  • Three triggers need a connected account before they may be published: Click-to-Chat Ads needs a WhatsApp, Messenger or Instagram channel, TikTok Messaging Ads needs a connected TikTok ads account, and Call Ended needs a WhatsApp channel. A draft may be built before the account is linked.
  • A Trigger Another Workflow step that names a workflow is checked at publish: that workflow must exist, must be Published, and must not hand back to this one. Only the first problem found is shown.
  • A Message Received trigger with no channel picked and no condition is refused, so a workflow cannot be published to answer every inbound message by accident.
  • WhatsApp timing warnings never block anything. They come from a simulation of the 24-hour window over the flow's steps: it adds up waits and question timeouts, and flags any free-form step — Send a Message, Send a File (voice / image / video), Ask a Question, AI Reply, Request WhatsApp Contact Info, Ask for Marketing Consent and Send Products (WhatsApp catalog) — that can be reached more than 24 hours after the customer's last message.
  • In the editor the warnings show as a clock badge in the toolbar with a count, and again in the Confirm publishing box, which says you can publish anyway. On the workflows list, clicking the chip opens the same warning with a Publish anyway button. If the list cannot read the warnings, the publish goes ahead as if there were none.
  • A Send WhatsApp Template step does not reset that clock in the simulation; a customer replying to a question does.
  • Once a workflow is Published its trigger, conditions and steps are locked. To change it, set it to Stopped, edit, and publish again.
  • Stopping cancels that workflow's queued Wait steps. A conversation in the middle of one of its questions keeps the question it was shown and can still answer it, unless you choose to abandon those conversations when you stop.
  • When other published workflows hand off to the one you are stopping BY PICKING IT FROM THE LIST, the stop shows their names first. It warns; it does not refuse. A hand-off that names the target workflow by typed name rather than picking it is not found by this check and is not shown, though it will fail the same way once you stop the target.

When it fails

  • Save is refused in the editor before any publish check if no trigger is chosen (Select a trigger to start this workflow.), if any step still has a configuration error (Fix N configuration error(s) before saving.), or if there is no step (Add at least one step (click + on the canvas).).
  • Publish refused, wrong role: the status chip says Only owners and admins can publish or stop automations., and a save to Published from the editor says Only owners and admins can publish automations. The workflow keeps its status.
  • Publish refused, plan: Workflows need a paid plan. Start a plan under Settings → Billing to build one.
  • Publish refused, over the cap: This plan keeps N live workflows. Stop one, or upgrade under Settings → Billing. Nothing changes until one workflow is stopped or the plan is upgraded; see pricing.
  • Publish refused, trigger not connected: the message names the missing account, for example No TikTok ads account connected., and the workflow stays as it was.
  • Publish refused, hand-off target: a Trigger Another Workflow step points at a workflow that no longer exists, is itself, is not published (“name” is draft — publish it before you publish this workflow.), or hands straight back (the two would loop).
  • Publish refused, unscoped trigger: This workflow runs on every inbound message in the workspace. Add at least one condition (for example “Message sender is customer” plus a keyword or a channel) before publishing.
  • Saving a published Contact Inactive workflow FROM THE EDITOR is refused while it holds a free-form step: Published inactivity workflows can only contact customers with approved WhatsApp templates. Replace free-form message, media, question, AI reply, or quote steps with Send Template. The workflows list's status chip does not run this check — a Contact Inactive draft holding a free-form step can be published straight from the chip.
  • Saving a change to a workflow that is already Published is refused: Published workflows are locked. Stop the workflow before editing.
  • A refusal appears in red beside the chip or in the editor's error line, and the workflow's status does not change.
  • After a workflow is published, a Trigger Another Workflow target can still be stopped or deleted. The publish check does not run again. When a customer reaches that step the step is recorded as failed, the customer gets nothing from the hand-off, and its line in the run log reads that workflow is stopped, so it cannot be entered (or that workflow no longer exists). Steps placed after it in the entry workflow still run.
  • A hand-off chosen by workflow name rather than picked from the list is not checked at publish. When it runs with no published workflow of that name, the step fails with no published workflow named “…” — the funnel step it hands to is missing.
  • A free-form send that meets a closed messaging window when the workflow really runs fails that step with Messaging window closed — free-form send blocked. Use a send_template step (approved WhatsApp / utility template) instead.
  • You read the reason for a failed step in the workflow's Activity tab: pick the run under Execution log.

Limits

  • A test sends nothing, so it cannot show that a template is approved or that the contact has given marketing consent — those are checked only when a Send WhatsApp Template step really sends.
  • An HTTP Request, Add Google Sheets Row or AI Reply step appears as one summary line. The test does not call the address, reach the sheet or write the reply, so it cannot show whether any of them works.
  • The test follows one path per run. The lanes it did not take are not shown, and a Trigger Another Workflow step appears as a line only: the test does not enter the workflow it names.
  • The test judges only the trigger's channel, entry-source and ad limits. Other trigger settings, such as inactivity minutes, are not simulated.
  • The test does not check WhatsApp's 24-hour window. It cannot know when a real customer last wrote, and the timing warnings belong to the editor and the publish box, not to the test.
  • The timing warnings look at steps and the trigger only. They do not know which channel a conversation will arrive on, and they cost a clock-time wait as a full day, so they can warn where a send would in fact arrive in time.
  • Publishing checks only what this article lists. It does not look up the teammate, tag, template or contact field a step names, and it does not check the accounts that Add Google Sheets Row, Send Conversions API Event and Send TikTok Lower Funnel Event need; a step that needs one is found out when it runs.
  • Stopping a workflow cancels only that workflow's own queued waits. It does not touch another workflow's waits, even one that hands off to it.
  • The test and Publish cannot prove a workflow will answer a real customer. They show the path and the checks above, not whether the trigger's event will happen, a provider will accept a send, or a customer will reply.

Best practices

  • Test each lane on purpose. Put a value into More fields for the condition that decides it, run the test, then change the value and run it again.
  • Publish the workflow another one hands to first, then the workflows that hand off to it. Publishing in the other order is refused.
  • Before you stop a workflow that others hand off to, read the names the stop box shows — and remember it only finds a hand-off picked from the workflow list, not one that names the target by typed text. Every workflow that hands off to it, shown or not, will fail at that step until you publish again.
  • When a timing warning names a step, put Send WhatsApp Template in its place or shorten the wait before it. A template is the send that may go out after the window closes.
  • Save before you test. The test only ever sees the last saved version.

Use cases

  • Before switching on Aurelia Skincare's welcome flow, test it on WhatsApp with {"message":{"text":"price"}} and again with other text, and check each condition line says what you meant.
  • Sarah Chen answers a qualifying question with a button: pick that option in the test, then No reply, then Replies that match no option, to see all three paths before any customer meets them.
  • A main flow and three entry flows for Michael Torres's ad campaigns: publish the main flow first, then each entry flow.
  • A nurture flow that waits two days between messages: the publish box warns about the later message; swap it for Send WhatsApp Template, then publish.

FAQ and troubleshooting

Does Run test send a real message to my customer?
No. It sends nothing, writes no tag or note, saves nothing and queues no wait. It prints the steps the workflow would take.
Can I test a workflow that is still a Draft?
Yes. The headline says Would not run live (draft/stopped) and gives the number of steps it would run if published.
The test says it would not run. Why?
Open the Trigger scope box if there is one: the channel, entry source or ad you chose is outside the trigger's limits. Otherwise read the Conditions list — each failed rule shows what it expected and what the test actually held. (not set) means the test had no value for that field; paste a conversation id or type the value under More fields.
Will the Randomizer test tell me which variant a customer gets?
No. It shows that the lane exists and what follows it. The same conversation always lands in the same lane in a test, and that lane is not the lane a live contact will get.
Publishing was refused. What do I check?
Read the red message. It names one of the refusals listed under When it fails: your role, your plan, the cap on Published workflows, a missing connected account, a Trigger Another Workflow target that is missing, not published or hands back, a Message Received trigger with no channel and no condition, or (from the editor) a free-form step in a Contact Inactive workflow. Fix that one, then publish again.
Publishing warned me about WhatsApp's window. Did it block?
No. The box says you can publish anyway, and Publish anyway does. The warning means a free-form message placed after a long wait may be refused by WhatsApp; use Send WhatsApp Template or shorten the wait.
I need to change a workflow that is Published.
Stop it, edit and save, then publish again. A save that leaves it Published is refused. Stopping cancels its queued waits and shows you which other published workflows hand off to it BY PICKING IT FROM THE LIST — a hand-off that names it by typed text is not shown, though it will fail the same way. Publishing again needs an owner or admin even if an agent was the one who stopped it.
A workflow handed off to a workflow I later stopped. What happens?
Nothing stops you from stopping it. The entry workflow keeps running, the Trigger Another Workflow step fails with its reason in the Execution log, and the customer gets nothing from the hand-off. Publish the target again, if it still exists, to restore it.

Related

  • Workflows: how a flow runs — A workflow is one trigger, optional conditions and an ordered list of steps; only a published workflow runs, and this article explains how a run starts, forks, pauses, fails and stops.
  • Trigger Another Workflow — Hand the conversation to another published workflow, from its first step or a chosen one, so a large design can stay several small workflows instead of one long flow.
  • Build a workflow with AI — Describe a flow in plain words and the assistant drafts it for you to review: the draft sits in the side panel until you put it on the canvas, nothing is saved until you press Save, and nothing runs on customers until the workflow is published.

Reading this with an AI assistant? Plain Markdown version.