What Differs per Channel
The bot is the same everywhere. The rendering is not, because a WhatsApp thread and a web widget do not support the same message types. What a channel cannot display is converted into something it can, not dropped.
What Changes on WhatsApp and Instagram#
| Web and WordPress | |||
|---|---|---|---|
| Forms | Rendered in the chat | Secure link, or a native WhatsApp Flow | Secure link |
| Choice buttons | Yes | Yes | No, written into the message |
| Menus | A panel of rows | Reply buttons, or a sheet behind one button | Numbered in the message |
| Conversation starters | Under the greeting | On the first reply | On the first reply |
| Images | Yes | Yes | Yes |
| Links and redirects | Opens a tab, or shows a button | A tappable button | Written into the message |
| Reply deadline | None | 24 hours | 24 hours |
A web chat usually runs for minutes and a WhatsApp thread often runs for hours. That changes how conversations are counted rather than how the bot behaves. See what counts as a conversation.
Forms#
On the web a form renders inside the chat panel. A WhatsApp or Instagram thread has nowhere to draw one, so the visitor is sent a secure one-time link, fills the form in on a page, and is offered a link back into the thread. On WhatsApp a Form node can instead send a native WhatsApp Flow, which renders in the thread.
See the Form node for those two settings, how long a link stays valid, and what a form leaves in workflow state.
Choices and Quick Replies#
On the web, quick replies render as buttons. On WhatsApp they render as WhatsApp's own reply buttons or list.
On Instagram they are written into the message text as a numbered list, and the bot reads the visitor's answer back out of their reply. Instagram Lite and Instagram web do not render buttons reliably, and the recipient's client cannot be chosen, so the options go into the text that all of them render. Instagram Direct also has no formatting of any kind: anything marked up for it arrives showing its own markup.
Menus and Conversation Starters#
A Menu node's answer reaches the node the same way whichever rendering the visitor got, so no branch of the workflow is channel-specific.
Conversation starters, the options a bot offers before anyone has typed anything, reach every channel and are offered once per conversation. Set up to three on the bot's Triggers tab. See bot settings.
The 24-Hour Window#
Meta accepts a message to a user for 24 hours after that user's last message in the thread, on both WhatsApp and Instagram. Only a message sent in the thread restarts the clock: a secure form submission reaches Chatleadr rather than Meta, so it leaves the deadline where it was.
Two rules follow for workflow design. A Delay node that resumes within 24 hours delivers normally, and past that only an approved WhatsApp template is delivered. A long background job delivers its result when it finishes inside the window.
A Message node can be configured to send an approved template on WhatsApp instead of its normal text, which is the supported way to reach someone outside the window.
Write One Workflow for Every Channel#
Four practices keep a workflow channel-agnostic.
- Do not name the interface. "Click the button below" is inaccurate on Instagram, where the options are rendered as text.
- Keep messages short. A paragraph sized for a wide web panel is several screens on a phone.
- Assume a form arrives as a link. State what is about to be asked before the form appears, because on WhatsApp the visitor decides whether to open a link before seeing any fields.
- **Branch on
channelonly for behaviour.** A hand-off to WhatsApp has no meaning on WhatsApp, so that belongs in a Decision. Differences of wording do not.
Common Questions#
Can I Send an Image on WhatsApp?#
Yes. A Message node in image mode works on every channel.
Does the Bot Know Which Channel It Is On?#
Yes, as the channel variable in workflow state, which a Decision node can branch on. The rendering differences are applied after the message is composed, so the assistant is not instructed to write differently per channel.