The five channels, two lines each
Meta Cloud API (Official)
Meta’s API, with a verified number and a business account. It is the channel that accepts the most:
the only one with forms, catalog and templates. In exchange, it has the 24-hour
window.
WhatsApp Web
The QR code connection, with the phone paired. No window and no template: you write at any time.
Some store features require the number to be a WhatsApp Business account with registered products.
Instagram and Messenger
Direct message conversations. They accept text, media and buttons, and stop there: no location, no
contact, no option list. Both have a 24-hour window.
Telegram
A bot. It accepts almost everything and has no window, but it speaks another language: what is a
message type on WhatsApp is sometimes a keyboard button there.
How to read the table
⚠️ never means “it might work”. It means that it works and we know under which condition — and
the condition is spelled out below, and also on each endpoint page, right under its little table.
The everyday conversation
Text and media are the common ground: they work on all five, with the same body. It is from there up
that the channels start to disagree.
When the customer answers with a tap
A quick reply button is the one that comes back as the customer’s answer, and it exists on every
channel. An action button is the one the device executes: open a link or place a call. The link works
everywhere; calling only where the platform has a phone button.
Store and orders
A store message depends on a store existing. On WhatsApp the catalog lives in the business account; on
Instagram and Messenger the messaging API does not reach the catalog; on Telegram there is no catalog,
and what exists is a one-off charge.
Pre-approved template
A template is the message Meta approves in advance so you can write first, outside the window. It only
exists where there is a window: Meta Cloud API and Messenger. On the other channels you write
whenever you want, so it would not be missed.
The caveats, one by one
Sticker on Instagram and Messenger
On both, you do not send your own file. Instagram accepts only the heart sticker; Messenger accepts only the public stickers from Meta’s catalog, picked by id, plus the thumbs-up. A.webp made by
your team goes through on WhatsApp and Telegram, and is refused on these two.
What to do: on these channels, send the same artwork as an image. The customer sees the figure; it
just does not come with a transparent background.
Source: Messenger Sticker API.
Action button on Instagram and Telegram
An action button is the pair “open a link” and “call”. On these two, only the link works: the Instagram button template accepts only link and reply, and the Telegram keyboard has no phone button. What to do: swap the call button for a link button withtel: as the destination when the channel
allows it, or write the phone number in the message text.
Catalog, product and order on WhatsApp Web
They work, but through a different path: they go through the Z-API compatibility layer and only go out if the connected number is a WhatsApp Business account with registered products. A personal number has no catalog, so there is nothing to send. What to do: if the store is the important part of your integration, use Meta Cloud API. On Web, treat the catalog as an extra that depends on how the customer set their number up. Sources: product, catalog and order on Z-API.Multi-product only on the official platform
Sending several products in one message only exists on Meta Cloud API. On the unofficial connection you can send one product at a time, and on the other channels there is no equivalent.Order details on Messenger and Telegram
Both have something similar, and the difference matters:- Messenger: the order receipt shows items, total and payment method, but it is the record of a purchase already made. There is no pay button.
- Telegram: the invoice collects payment inside the app, and for that it requires a payment provider configured on the bot.
Request location on Telegram
It works, it just is not a message type: it is a keyboard button that asks for the location (request_location). For the customer it is
the same, they tap and the location arrives. We mark it ✅ because the result is the same.
Reaction on Messenger
Here the honest answer is: we do not know. The reaction the customer sends does reach you through the webhook, but we could not find confirmation in Meta’s documentation that the business can react to a message. The changelog mentions it, the endpoint reference does not describe the field. On Instagram, the reaction is documented and works. What to do: do not build a flow that depends on reacting on Messenger without testing it first. As soon as we confirm it, this page changes.Template on Instagram
This is not a Meta decision, it is a consequence of how we connect: the Graph APImessage_templates
edge exists only on the Page node, and Omni Z-API connects Instagram through Instagram Login,
which does not expose that edge. Details in Connect Instagram.
When the channel does not accept it: what to send instead
The 24-hour window, in one sentence
The content.type for each feature
Some of these endpoints are still in development. Each page warns at the top, and the
playground shows which ones already answer for real.
Next steps
Send the first message
The minimum body, and what comes back.
Conversation window
When you can write first, and when you need a template.
Channel lifecycle
Create, connect, subscribe, disconnect and remove.
Official API limitations
What classic Z-API has and the official one does not.