Channel Constraints
Which channels can start a conversation, and what each channel requires
| Channel | Send to an existing chat | Start a new conversation |
|---|---|---|
| ✅ Free-form inside the 24-hour window | ✅ Approved template required outside the 24-hour window (sendWhatsAppTemplateMessage in GraphQL, templateName in MCP) | |
| Telegram | ✅ | ❌ The user must start the bot first |
| Viber | ✅ | ❌ The user must subscribe first |
| ✅ Human-agent tag applied | ❌ Can't cold-start | |
| Web widget | ✅ | ❌ Visitor-initiated only |
Starting a conversation on a channel that doesn't allow it returns 400.
Media
Upload media to the acting org first, then reference it by ID in media (GraphQL) or mediaIds (MCP). Arbitrary URLs aren't accepted.
Delivery Failures
If the channel provider rejects a send, you get a message back with deliveryStatus: FAILED rather than an error. Check deliveryStatus on every send.