The Channels column
A workflow belongs to one brand and runs for that brand on every channel the brand talks on. Open Brand → Workflows and you will see a Channels column with four icons on every row:
- A speech bubble — the chat widget. Always available.
- The Facebook logo — Facebook Messenger.
- The Instagram logo — Instagram messages.
- A telephone — phone calls answered by one of the brand's voice agents.
A greyed-out icon means this script cannot run there. Hover it and it tells you why. Chat is never greyed out; the other three depend entirely on which steps you used.
Exactly what rules a channel out
One incompatible step is enough to take the whole workflow off a channel — it is not step-by-step, it is all or nothing.
| Channel | Ruled out by |
|---|---|
| Facebook and Instagram | A Start Form step |
| Phone calls | A Start Form, Open link, Buttons, Show expected reply time, Request agent, Collect data or Ask a Question step |
The reasons are practical rather than arbitrary. A form is a panel you fill in, and Facebook and Instagram have nowhere to put one. On a call there is no screen, so buttons and links have nothing to render into, and there is no person to hand a caller to. Collect data and Ask a Question are ruled out on calls for a different reason: the phone side cannot yet park a script mid-question and pick it up again when the caller answers.
Compatibility is also inherited through the Start Workflow step. If the script you call cannot run on the phone, neither can the one calling it.
What the product tells you, and where
You get told twice, which is deliberate:
- While you draw. In the builder, every incompatible step carries a small warning icon. Hovering one says either "This action is not compatible with Facebook/Instagram conversations" or "This action is not compatible with phone calls".
- After you save. The Channels column on the Workflows list shows the verdict for the finished script. Hovering a greyed-out phone icon says: "Cannot run on phone calls — it contains a form, link, buttons, reply-time, request-agent, collect-data or ask-question step".
These are recalculated every time you save, so fixing a step and saving is enough to get the channel back.
Building a workflow that works on the phone
A phone-safe script is a conversational one. In practice that leaves you these steps:
- Write a message — the agent speaks the line.
- Conditions — branch on the caller's country, email, first visit, visit count, or whether your team is online.
- Custom API action — look something up in your own system and speak the answer back.
- Send to VEX AI — hand the question to the brand's AI.
- Start Workflow — as long as the script it calls is phone-safe too.
The design shift is that you stop offering choices and start asking plainly. Instead of a Buttons step with four options, write a message that asks the caller what they need and let the AI or an API action take it from there.
Two extra conditions on the phone
Even a perfectly phone-safe workflow needs two more things to be true before it is ever offered on a call:
- Its trigger must be "User says". Chat open, Visit, Chat minimize and the rest describe things that only happen in a chat widget. On a call, the AI decides to run a workflow because the caller said something that matches its intent — so the intent description you write on that trigger is what actually gets it picked.
- The brand must also have a Vex AI agent. Workflows and your own API tools are only offered on a call when the brand has a chat AI as well. Knowledge lookup and ending the call always work; those two do not. Most people never notice, because a brand that has phone agents usually has a Vex too.
Facebook and Instagram: what changes
Everything except forms works, but a few steps look different because Meta's messaging has its own controls:
- Buttons arrive as tappable quick replies rather than buttons in a chat window.
- Collect data with a dropdown also arrives as quick replies, and two things can change that. With more than thirteen choices the quick replies are dropped altogether and the options are written out as a numbered list instead, so the visitor answers with a number. With a choice longer than twenty characters the quick replies still appear, but the full wording is also written out as a numbered list underneath so nothing is cut short on the chip.
- Answers are checked. A malformed email, a non-number, or a choice that is not on your list gets a short "please try again" reply rather than being accepted silently.
- Open link is sent as plain text, because the link card belongs to the chat widget.
- Start Form, if a script somehow reaches one there, tells the visitor the form is unavailable, requests a human agent, and ends the workflow.
Next step
For what each step actually does, see Workflow nodes explained. To understand what a voice agent can and cannot do on a call, see What your voice agent knows, and where that knowledge comes from.