CoPhraseCoPhrase

Channels

How CoPhrase connects to messaging channels — the full matrix of connection methods, what each channel supports, and which ones are unofficial.

A channel is a place your customers message you. A connection is one linked account on that channel: one WhatsApp number, one Discord server, one Instagram professional account, one website widget.

You connect channels. You configure one agent. Every connection points at an agent, and that's the whole wiring model.

What you can connect today

Web chat, Discord, email, WhatsApp, Telegram, and Instagram DMs are live. Messenger, WhatsApp Business API, iMessage, SMS, and connected Gmail/Outlook inboxes are being built — each is marked below.

One agent, one brain, every channel

Channels differ wildly — Discord is a persistent socket to a server, WhatsApp Web is a linked-device session, Messenger is a signed webhook from Meta. The agent doesn't know about any of that.

Every inbound message, whatever the channel, is converted into the same normalized message before it reaches the agent:

  • who sent it (resolved to a contact within the current channel identity)
  • which thread it belongs to
  • what's in it — text, image, audio, video, file, location

The agent replies with a normalized message back, and the connector layer figures out how to actually deliver it on that channel. The agent code contains zero channel-specific logic.

Three consequences worth knowing:

One contact, many identities. The data model can attach multiple channel identities (an Instagram user id, a phone number, a Discord user id) to one contact. Contacts are created per channel identity; verified rules for safely linking the same person across channels are being built.

The thread is the work item, not the person. That same contact still has two separate threads — one Instagram, one WhatsApp. Taking over the WhatsApp thread doesn't silence the agent on Instagram. The merged cross-channel history shows up as context on the contact, not as one merged conversation.

Capabilities degrade, they don't break. Every channel declares what it can carry — maximum message length, which media types, whether it supports typing indicators. The agent is told the limits before it writes, so it writes a reply that fits. Anything richer than the channel supports falls back to text.

The channel matrix

ChannelHow you connect itOfficial API?Status
Web chat widgetScript tag on your site → iframeYesLive
DiscordInvite the CoPhrase bot into your serverYesLive
EmailForward your support address to a CoPhrase inbound addressYesLive
WhatsApp (Web)Linked device — scan a QR code or enter a phone codeNoLive
TelegramBot token from BotFather → webhookYesLive
Instagram DMsInstagram Login on a professional accountYesLive
WhatsApp Business APIManaged number, or bring your own via Meta signupYesBeing built
MessengerMeta OAuth on a Facebook PageYesBeing built
iMessageA BlueBubbles server on a Mac you runNoBeing built
SMSBring your own Twilio account, number, and credentialsYesBeing built
Email — connected Gmail / OutlookOAuth on a mailbox you already haveYesBeing built

Official vs unofficial — read this before connecting

Some channels have an API the platform vendor sanctions. Others work by holding a session that looks, to the vendor, like the customer's own device.

Official channels (widget, Discord, Telegram bot, Instagram DMs, Messenger, WhatsApp Business API, SMS, email) avoid the account-session automation risk of unofficial connectors. Provider policy, approvals, messaging windows, templates, and rate limits still apply.

Unofficial channels are WhatsApp Web and iMessage.

Unofficial channels put your account at risk, not ours

WhatsApp Web is a linked-device session on your real WhatsApp number — the same mechanism as WhatsApp on your laptop. WhatsApp does not sanction automating it. Numbers that send too much, too fast, or from the wrong kind of network get restricted or permanently banned, and the ban lands on your number, not on CoPhrase. iMessage requires a Mac you own and keep running, and is likewise not an official Apple integration.

We ship WhatsApp Web because it's what many businesses actually use, and we surround it with the machinery it needs: automatic warm-up ramps, a dedicated residential IP per number, send governors, and restriction detection. Those controls reduce the risk. They cannot remove it. If an official route exists for you — WhatsApp Business API instead of WhatsApp Web — take it.

What's next

Every channel above marked Being built is in active development:

ChannelWhy it's not live yet
WhatsApp Business APINumber resell runs through a managed Twilio subaccount, and A2P/10DLC registration is filed in your name. Telephony registration is calendar-bound and cannot be rushed.
MessengerMeta App Review. Provider review is calendar-bound.
iMessageRequires a Mac you own and keep running, plus a tunnel back to us. High setup cost, so it's sequenced behind broader demand.
SMSBring-your-own Twilio, gated on the same A2P/10DLC registration as WhatsApp Business API.
Connected Gmail / OutlookOAuth on a mailbox you already have, so the thread lives in your real inbox. Until it lands, email works by forwarding — same agent, same inbox, replies still from your own domain.

Messaging windows (Meta channels)

Instagram, Messenger, and WhatsApp all enforce a 24-hour window. It is the single most surprising constraint on these channels, so it's worth stating once here:

  • The window opens (and re-opens) only when the customer messages you. Nothing you send extends it.
  • Instagram and Messenger: free-form replies are only allowed inside the window. You can never message someone who hasn't messaged you first.
  • WhatsApp: outside the window, only pre-approved templates may be sent — and sending a template does not re-open the free-form window. Only a reply from the customer does.

CoPhrase tracks the window per conversation and routes sends accordingly. Details on each channel's page.

What each channel can carry

Limits are enforced before sending, not discovered afterwards — providers silently truncate over-length messages, so we don't let them get that far.

ChannelOutbound message lengthOutbound media
Instagram DMs1,000 charactersText and images
Telegram4,096 charactersText
WhatsApp (template body)1,024 charactersPer approved template
SMSBilled in 160-character GSM-7 segmentsText out; MMS receive-only
Web chat widgetNo practical limitText; buffered reply

The agent sends a complete reply on every channel. The widget's authenticated SSE stream carries identity-only wake events and then refetches durable items; it does not carry token deltas, so the reply appears at once rather than typing itself out. Token-by-token widget display is being built. Provider channels receive the full reply in one message, with a typing indicator where supported.

Inbound media

The web chat widget is text-only. Every other channel runs inbound media through the same pipeline, where the provider supports it:

  • Audio messages (voice notes) are transcribed before the agent replies.
  • Images and PDFs are read and described before the agent replies.

WhatsApp and Instagram customers lead with voice notes and photos constantly, which is why media understanding is part of the target connector design rather than an optional add-on.

A few behaviors that apply everywhere

  • Rapid-fire messages collapse. A customer who sends four messages in ten seconds gets one considered reply, not four.
  • Language is mirrored. The agent replies in the language the customer wrote in.
  • First message from a stranger is spam-checked. Flagged contacts get no reply and stay out of your inbox counts. The raw message is still stored — nothing real is silently dropped.
  • A verified human reply pauses the AI on that thread. Take over and reply from the inbox, or reply as a mapped manual owner in Discord. See Handoff.

Next

On this page