Channels
Esta página aún no está disponible en tu idioma.
A channel is the messaging account you send and receive through. API calls
use the channel_id returned by channels.list().
| Surface | Channel |
|---|---|
| WhatsApp Business numbers | |
| Web | Website chat installed on approved origins |
| Instagram Professional accounts linked to a Facebook Page (beta) | |
| Messenger | Facebook Pages with messaging access (beta) |
Connect a channel
Section titled “Connect a channel”Open Channels, then select Connect beside the channel you need. For WhatsApp, Wabery asks how the number is used today and shows the matching setup:
| Choose | When to use it |
|---|---|
| Set up a new number | The number is new or is not connected to another WhatsApp API provider. |
| Keep using the Business app | Your team wants to keep using the WhatsApp Business mobile app alongside Wabery. |
| Move an existing API number | The number is currently connected to another provider or WhatsApp Business Account. |
| Reconnect a Wabery number | The channel was previously disconnected from this Wabery project. |
Choosing the correct path matters: normal setup does not move an existing API
number between accounts. See Connect WhatsApp for the
short guided checklist. Once connected, your wab_live_ key can send and
receive on the channel. The sandbox gives you a shared test number with no Meta
setup. Sandbox messages are free through September 30, 2026; from October 1,
their published destination-market service rate is deducted from your Wabery
wallet without markup.
WhatsApp Calling requires a dedicated, eligible Meta Cloud number plus your own WebRTC or SIP media application. It is not available on the shared Wabery sandbox. Follow WhatsApp Calling to enable the number, configure call permissions, and receive signaling webhooks.
Instagram and Messenger appear as Beta options on your project’s Channels page. Select Connect, start the Meta sign-in, and choose the Facebook Page that owns the messaging account. Follow Connect Instagram or Connect Messenger, and check the channel capability comparison before promising either to a client.
Website chat connects without a Meta account. Choose Website chat, add the allowed website origins, customize the launcher, then install the script shown by Wabery. Read Website chat for the complete setup and security boundaries.
Disconnected social-channel attempts cannot be revived because Wabery removes their access tokens. Reconnect them through a new Meta sign-in after the required permissions have been approved.
Each connected number, account, or website has its own row on Channels. Choose Manage on that row to view its status and change its connection settings. The WhatsApp Business sandbox has its own row under Testing on Channels. Choose Manage, then Flows, to return to draft and sandbox-tested Flows before or after you connect a live number.
Targeting a channel
Section titled “Targeting a channel”Every send takes a channelId:
await wabery.messages.send({ channelId: "channel_...", conversationId: "conversation_...", text: "Thanks for reaching out!",});curl https://api.wabery.com/v1/messages \ -H "Authorization: Bearer $WABERY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel_id": "channel_...", "conversation_id": "conversation_...", "text": "Thanks for reaching out!" }'Routing inbound messages
Section titled “Routing inbound messages”Each channel has a routing_mode that decides what happens to inbound messages
on it — AGENT runs your Wabery-hosted agent with its automations and functions,
and EXTERNAL forwards to your project webhook. On a dedicated number, this
overrides the project’s routing_mode. A channel left in AGENT under an
EXTERNAL project still goes to the hosted agent. New channels copy the
project’s routing when you connect them. See Webhooks → Channel
routing for the full
precedence rules.
channels.list() / channels.get(id) include a routing_warning when a channel
bypasses the project’s configured webhook. Set a channel’s routing in code:
const { data } = await wabery.channels.list();data.forEach((c) => c.routing_warning && console.warn(c.id, c.routing_warning));
await wabery.channels.update("channel_...", { routingMode: "EXTERNAL" });wabery channels listwabery channels update channel_... --routing-mode EXTERNALPublish readiness
Section titled “Publish readiness”WhatsApp channels include publish_readiness on channels.list(),
channels.get(id), and project responses. Use it before publishing Flows or
submitting templates:
{ "can_publish_flows": false, "can_submit_templates": false, "business_verification_status": "not_verified", "account_review_status": "APPROVED", "phone_number_status": "CONNECTED", "blockers": ["BUSINESS_NOT_VERIFIED", "NO_PAYMENT_METHOD"]}The shared Wabery sandbox can publish Flows when the sandbox WhatsApp Business
Account is verified, but it cannot submit templates because templates belong to
Wabery’s sandbox account. Dedicated WhatsApp numbers must pass Meta’s business
and account readiness checks before Flows can be published. Templates have one
extra billing prerequisite: template submission and proactive template sending
require a Meta payment method on the WhatsApp Business Account. Without it,
can_publish_flows can still be true, but can_submit_templates is false and
blockers includes NO_PAYMENT_METHOD. Read
why WhatsApp templates need a payment method
for the billing context. Wabery returns 412 with the same publish_readiness
blockers instead of queueing work that cannot succeed.
Broadcast channel availability
Section titled “Broadcast channel availability”The broadcast composer lists only connected, dedicated WhatsApp numbers. Unavailable numbers remain visible with their exact blocker so an operator can fix the account instead of guessing. Common blockers include missing Meta billing, an unverified business, a restricted or disconnected number, poor quality, and a readiness check that must be retried.
Wabery allows only one active dedicated WhatsApp channel for a normalized phone number across the platform. Reconnecting the same number reuses its eligible channel in the current organization and project; it never transfers a channel from another tenant. Disconnected rows are retained because historical messages refer to them, but they are not selectable for new broadcasts. This is why an older number can appear in channel history without representing another active sender.
If a channel says Payment method required, add billing to the WhatsApp Business Account in Meta Business Manager and then refresh its status in Wabery. If it says the payment status could not be checked, retry the check before changing billing—the unknown state is not treated as proof that billing is missing.
The 24-hour window
Section titled “The 24-hour window”WhatsApp restricts free-form messages to a 24-hour window after the user’s last message. Outside the window you must use an approved template. Wabery returns a clear error when a send falls outside the window — see Errors & rate limits.