Skip to documentation
Documentation

Channels compared

Every channel a Keiki agent can run on, what it can do there, how long it takes to go live, and its limits.

One agent runs on any mix of these channels. Tools, memory, steering and billing sit above the channel layer, so one config serves them all. Add a channel from Channels → Add channel or an agent's Channels tab.

At a glance

ChannelYou connectReady inStatus
iMessage, dedicated lineA line bought in Keiki, or imported from your provider accountRight away to a few days, by line typeLive
iMessage, shared numberNothing: the agent gets a join codeRight awayLive
WhatsAppA number through WhatsApp's guided signup, your Kapso account, or your own Meta appAbout 5 minutesLive
TelegramA bot token from @BotFatherRight awayLive
SlackA Slack app created from Keiki's manifestA few minutesLive
Microsoft TeamsAn Azure Bot registration and the app packageMinutes to days, by your Microsoft 365 adminLive
EmailAn AgentMail inbox, US or EU regionRight away; a custom domain waits for DNSLive
XAn X account, through Log in with XRight awayLive
Phone callsA US local number bought in KeikiRight awayLive
Apple Messages for BusinessA channel Keiki assignsAfter reviewRequest access
SMS/RCSA request with your purpose and volumeAfter reviewEarly access

iMessage reaches Android users too: the line's provider falls back to SMS/RCS on the same number (what that supports).

Everything except a bought iMessage line needs an active plan. Without one, connecting answers plan_required.

What each channel supports

The shared tools are reply, react, update_message, delete_message and send_file. A channel without a feature answers unsupported before anything is sent.

CapabilityiMessageWhatsAppSlackTelegramEmailTeamsSMS fallback
ReplyYesYesYesYesYesYesYes
Reply to a specific messageYesYesNoYesNoNoNo
ReactYesYesYesYesNoNoNo
Edit a sent messageYesNoYesYesNoYesNo
Delete a sent messageYesNoYesYesNoYesNo
Receive filesYesYesYesYesYesYesYes
Send filesYesYesYesYesYesNoYes
Send a file as a replyNoYesNoYesNoNoNo
Voice notesYesYesNoYesNoNoNo
Message effectsYesNoNoNoNoNoNo

SMS fallback is an iMessage contact on Android, or with iMessage turned off. The line's provider delivers to them over SMS/RCS instead, so the agent gets plain text and files only.

iMessage line types

The iMessage column above is an Instant line.

CapabilityInstantStandardOn request
Edit a sent messageYesNoYes
Delete a sent messageYesNoNo
Send filesYesYesNo
Voice notesYesNoNo
PollsYesYesNo
Contact cardsYesYesYes
iMessage Apps cardsYesNoNo

Edit and delete need the contact on iMessage, not SMS, within Apple's time limits.

Beyond the shared tools

ChannelAddsGuide
iMessageTapbacks, threaded replies, effects; group chats on dedicated photon or blooio lines with Group chats enabled; linq lines ignore groupsiMessage Apps, Group chats
WhatsAppNative cards from one send_card specNative cards
SlackThreaded answers, approval buttons, human handoff in a thread, native cardsSlack agents, customer workspaces
Microsoft TeamsNative cardsNative cards
TelegramWith Group chats enabled, answers only when addressed unless you change replyMode; native cards as inline keyboards, with private (ephemeral) replies to a button press in groups; HTML widgets in private chats with Dynamic UI on; card numbers masked on arrivalGroup chats, Native cards, Telegram widgets
EmailReplies in the same thread, with attachments
Apple Messages for BusinessText and media, a choice picker (ask_question) and a time picker (offer_times)Apple Messages for Business
XText direct messages and public replies to posts that mention the account
Phone callsInbound and outbound calls; voice, tone and greeting per line; 13 languages

Provisioning

iMessage lines

LineReady inNotes
InstantRight awayBought from Channels → Buy line
StandardA few minutesBought from Channels → Buy line
On requestWhen the team fills the request by handNot charged at request time; you get an email when it's ready
ImportedOnce the account's credentials check outFrom your own iMessage provider account
Shared numberRight awayContacts text a join code such as K-7QF2MD. See Shared iMessage number

Everything else

ChannelSteps
WhatsAppLog in with Facebook → pick a business → verify the number. It keeps working in the WhatsApp Business app
WhatsApp, your own Meta appConnect it → add the callback URL and verify token in Meta's webhook settings (Meta has no API for this step)
TelegramPaste the @BotFather token. Keiki sets the webhook
SlackCreate the app from Keiki's manifest → install it. Customer workspaces join through a signed install link
Microsoft TeamsRegister the bot in Azure → connect it in Keiki → install the app package. A tenant-wide upload may need a Microsoft 365 admin; the tenant appears after its first message
EmailCreate the inbox. On your own domain, add the DNS records shown; AgentMail verifies them a few minutes after DNS propagates
XLog in with X
Phone callsChannels → Phone calls → Buy line → pick an area code or state, or let Keiki choose. An agent can hold several lines
Apple Messages for BusinessRequest access with your purpose and monthly volume → the team assigns a channel
SMS/RCSRequest access with your purpose and monthly volume

Limits

ChannelFilesMessage sizeDaily volumeOther
iMessage100 MB7,000 sent and 50 new conversations per line per UTC day, pooled across your linesPast a cap: daily_line_volume_reached. Plan for 5,000 a day (best practices)
iMessage, Standard lineSame as iMessageAfter several unanswered messages: recipient_reply_required
iMessage, shared numberThe caps count every organization on the numberReplies only to contacts who texted its code; no contact card
WhatsApp100 MB; Meta caps images at 5 MB, audio and video at 16 MBVoice notes in OGG/Opus. Outside Meta's service window: recipient_reply_required (Meta error 131047)
Telegram50 MBCaptions over 1,024 characters go as their own message; 10 files per albumDeletes in a private chat only within 48 hours
Slack1 GBSplit at about 3,800 charactersEdits and deletes only in the current thread
Microsoft TeamsReceive onlySplit at 20,000 characters
Email25 MB, sent or receivedThe first 10 inbound attachments are described to the agent; the rest are listed
Apple Messages for Business100 MBChoice picker: 5 options, 24-character titles. Time picker: 10 slotsCustomer-initiated only; no reactions or contact cards
XText onlyA token X rejects shows Reconnect
Phone callsUS local numbers; each minute spends platform credit

recipient_reply_required also applies when an inbound-only line tries to contact someone who has not messaged it first. It is not retryable, and a platform notice doesn't clear it: only a real message from the contact does. To bring the contact back from a page your app hosts, use the return link.