Connecting a channel
What it takes to put your assistant on WhatsApp, Instagram, Messenger, your website or a phone number — and which parts you do yourself versus which ones need us.
An assistant with no channel talks to nobody. Connecting one always has two halves, and confusing them is the single most common reason a setup looks finished and does nothing:
- The account — a WhatsApp number, a Facebook page, an embed key on your website, a phone line. This is the part that lives outside Kooday.
- The switch — telling one of your assistants to answer on it, on the Channels card of the Bots page.
Do only the first and messages arrive nowhere. Do only the second and the switch is on with nothing behind it.
This page covers the first half for each channel, and says plainly which ones you can finish on your own.
What you can do yourself, at a glance
| Channel | You do it | We do it |
|---|---|---|
| The whole connection, in one popup | Enable the channel on your plan and your assistant | |
| The same popup | Same | |
| Messenger | The same popup | Same, plus Meta’s own approval of our app |
| Website chat | Create the widget, paste the snippet | Enable the channel |
| Website voice | Create the widget, paste the snippet | Enable the channel |
| Phone | Get an Exotel account, connect it on Configuration, assign a number to an assistant | Enable the channel on your plan |
WhatsApp, Instagram and Messenger — one popup
These three are all Meta’s, and Kooday connects them together rather than one at a time.
Where to find it: Integrations (under Settings) → New integration. The card at the top is headed Connect your Meta channels, with the line “One sign-in · Four channels” above it and this underneath:
Sign in with the Facebook account that manages your business — Kooday links every channel it finds in a single step.
Four tiles show what it will look for: WhatsApp (Business number), Messenger (Page inbox), Instagram (Profile DMs) and Catalog (Your products).
Below them, a note headed Before WhatsApp goes live asks you to add a payment method in Meta Billing Hub — the last item under Before you click explains why.
Before you click
Meta’s rules, not ours — the button cannot get round any of them:
- A Facebook account that manages your business, and a Meta Business account with your business verified. Verification is Meta’s process and can take days; start it before you plan the rest.
- A phone number for WhatsApp. You can create the WhatsApp Business account and add the number inside the popup itself. The number becomes the sender.
- You will need at least one approved message template before you can start a conversation with someone who has not messaged you in the last 24 hours. Meta reviews templates; approval is usually minutes but is not guaranteed.
- A payment method on your WhatsApp Business account, added in Meta’s Billing Hub. You pay Meta directly for WhatsApp messages; Kooday never sees that bill. From 1 October 2026 this matters for your assistant’s replies too, not only templates: Meta delivers 1,000 replies a month per number for free, and without a payment method it stops delivering them after that. See Replies stopped partway through the month.
The help panel on the manual setup route puts the division of labour exactly right, and it is worth reading once: “WhatsApp messaging is Meta’s, not ours — these all have to exist in your own Meta account first. Kooday only stores the credentials and calls Meta with them.”
What the popup does
Click Connect with Facebook. The button reads “Waiting for Facebook…” while you are in Meta’s window and “Finishing setup…” while we set things up afterwards. In that second phase Kooday, without you doing anything:
- subscribes your WhatsApp Business account to our webhook, so inbound messages actually arrive;
- creates one connector per phone number you shared;
- registers each number with Meta and sets its two-step PIN for you (skipped for a number you are keeping on the WhatsApp Business app — see below);
- subscribes each Facebook page for messages, which is what makes Messenger and Instagram work;
- links your product catalogue if you shared one.
Each tile then reports connected, reconnected, needs attention or not linked. A tile can fail on its own without taking the others down — one “needs attention” among three “connected” is a normal, partial success, not a failed run.
⚠️ Only the channels on your plan get connected. Assets you are not entitled to are skipped silently — no error, just a tile that never lights up. If a channel you expected did not connect and the wording gives no reason, that is usually why. Ask us.
Once connected, it shows up on the Integrations list itself, alongside anything else you’ve connected:

Adding another WhatsApp number later
You do not run the popup again for a second number — doing so re-shares the whole account and rewrites every number already connected. Use Add WhatsApp number, the button beside New integration on the Integrations list. It covers three cases:
- a number already on your WhatsApp Business Account: pick it and add it;
- a number not on the account yet: Register a new number, choose whether Meta should text or call it with a one-time code, and enter the code in Kooday (choose the call for a virtual or VoIP number — most cannot receive texts);
- a number still signed in to the WhatsApp Business app: that one does need the popup, New integration → Connect with Facebook, because keeping the app on it is a step only Meta performs.
Two WhatsApp numbers, and why walks through the register path, and why a second number is worth having.
Adding another Facebook Page or Instagram account later
The popup only lets you tick Pages the first time round: once a business has finished connecting WhatsApp to Kooday, Facebook will not offer that business again, and the Page and Instagram steps go with it. So a Page you did not tick on the first run — or one you created since — goes in through Add Facebook Page, beside Add WhatsApp number on the Integrations list. An Instagram account always comes with the Page it is linked to; there is no way to share one on its own.
The dialog offers two routes:
- Choose Pages on Facebook opens a shorter Facebook window that asks only about Pages and Instagram. Tick the ones you want and Kooday connects them the same way the first run did. Pages you had already connected read reconnected; new ones read connected. If this button is missing and the dialog says the route is not switched on for your account yet, use the second route.
- Sync Pages from Meta is for a Page your admin has already shared with Kooday inside Meta itself (Business settings → Integrations → Business apps → Kooday). Kooday asks Meta which Pages it can now reach and connects any it has not seen. Pages already connected are left exactly as they are — their names included. This route needs a WhatsApp number or catalogue connected through the popup to work from; a workspace with only Pages has the first route. A very large share is added a batch at a time: More Pages to add means run it again.
Either way, the new connector then needs wiring to an assistant, exactly as the first one did — see Then wire it to an assistant below.
If a Page you connected earlier is no longer shared with Kooday, the sync says so by name: No longer shared with Kooday. Nothing is removed for you; share the Page again in Meta, or delete the connector if it is gone for good.
Keeping the WhatsApp Business app
If the number you connect is already in use on the WhatsApp Business app, Kooday detects it and connects in coexistence mode:
Connected in coexistence mode — Keep using your WhatsApp Business app — messages you send there will appear in your Kooday inbox too.
The button says the same thing up front: “Already on the WhatsApp Business app? Keep it — the same number works in both places.” You do not have to choose between your phone and your assistant.
When it does not work
The wording is specific, so read it rather than retrying blindly:
| What you see | What to do |
|---|---|
| The Facebook signup session expired or was already used — please run Connect with Facebook again. | The handoff is valid for about half a minute. Just run it again. |
| multiple WhatsApp Business Accounts were shared — re-run signup sharing exactly one, or connect manually | Go back and share one account. |
| the WhatsApp Business Account has no phone number yet — add one in the signup flow and reconnect | You skipped adding the number. |
| the number’s two-step verification PIN does not match the one kooday holds | Reset the two-step PIN in WhatsApp Manager (Account tools → Two-step verification), then try again — press Verify and add if you were registering a number, or run Connect with Facebook again otherwise. |
| this WhatsApp number is already connected to another kooday workspace | Exactly what it says. Disconnect it there first. |
| Facebook signup not configured | The one-click route is not switched on for your account — “enter your credentials manually below, or contact support.” |
Then wire it to an assistant
The popup creates credentials. It does not put your assistant on the number. Two more steps on the Bots page:
- On the assistant’s Configuration tab, pick the new connector in the Connector field.
- Switch the channel on in the Channels card.
Until you pick a connector, the WhatsApp row tells you: “On, but not yet active — no WhatsApp connector selected below.” Instagram and Messenger fail the same way and do not warn you, so send yourself a real test message before you believe either is working.
See Creating your assistant for that card in full.
Letting customers call the number
Messaging and calling are separate switches. Connecting a WhatsApp number gets your assistant answering messages; the call button in WhatsApp stays hidden until you turn it on, on the connector’s Calling on WhatsApp panel under Integrations.
Do that only after the two steps above. The button cannot be switched on for an assistant that does not have both WhatsApp and voice enabled — a call would be declined the instant it arrived — so Kooday greys it out and names the assistant that needs fixing.
Full walkthrough: Answering WhatsApp calls.
Checking it later
A connection can break without anyone telling you — a number removed in Meta Business Manager, access revoked. Open the connector on Integrations and use Connection status → Check now. It “Asks Meta right now whether this number is still connected”. If it has broken, Reconnect with Facebook runs the same popup again. A number in coexistence shows a coexistence chip and “This number is also in use on the WhatsApp Business app.”
What customers see: your business profile
The name, logo and “about” line in a customer’s chat are your business profile, and Meta holds them per number. Open the connector on Integrations and use the Business profile panel: it shows what is set today, and Edit changes the about line, description, address, email, category, website links and logo. Leave a field alone and it stays as it is; clear it and it is cleared.
A freshly connected number usually has none of this set — customers see only the display name until you add it.
Two things stay on Meta’s side, and Manage on Meta in that panel takes you there: the display name itself (Meta reviews it — the Integrations list shows whether it is approved, pending review or declined), and business verification with the green tick.
A word on Messenger
Messenger is the newest of the three and the one most likely to need a further step on our side before inbound messages reach you — Meta reviews our app separately for it. If Instagram and WhatsApp connect and Messenger stays quiet, that is the usual explanation. Ask us rather than re-running the popup.
Your website — chat and voice
Both website channels are fully self-serve, and both live on the same screen.
Where to find it: Widgets, under Settings. “Put your bot on any website — a talk-to-us call button or a text chat bubble. Add a widget, lock it to the sites allowed to use it, and paste the snippet into your page.”
Creating one
New widget asks for five things:
| Field | What to put |
|---|---|
| Name | Where it goes, for your own reference — the placeholder is Marketing site. |
| Bot | Which assistant answers. |
| Type | Voice — “A call button — visitors talk to your bot.” Or Chat — “A chat bubble — visitors type, replies stream in.” |
| Allowed sites | ”One origin per line (scheme + domain, no path). The widget only works on these sites — a key copied elsewhere is refused.” |
| Audio quality | Voice only. Best (24 kHz), High (16 kHz) or Standard (8 kHz) — matches phone calls. Leave it on Best unless you have a reason. |
Two things you cannot change afterwards:
- The type is fixed at creation. A chat widget never becomes a voice widget.
- Chat and voice are two separate widgets with two separate snippets. If you want both a bubble and a call button on the same page, create two and paste both.
If a type is greyed out, it reads “Voice isn’t available for Front Desk. Contact your administrator to enable this channel.” — the assistant’s channel is off or not granted. Fix that on Bots first.
The snippet, and the key you see once
⚠️ Copy the snippet before you close the dialog. The confirmation says so: “Your widget is ready — copy the snippet now”, and “It contains a secret key that we show only once — you can reopen the snippet from the list later, but the key will be hidden.” If you lose it, issue a replacement from the list — you cannot recover the original.
It is one <script> tag, pasted before </body>:
<!-- kooday chat widget -->
<script src="https://app.kooday.tech/widgets/chat/v1.js"
data-tenant="your-tenant"
data-bot="frontdesk"
data-key="YOUR_EMBED_KEY"
data-position="bottom-right"
async></script>
The voice one is identical but points at /widgets/voice/v1.js.
Allowed sites is a real lock, not a note. The key only works on the origins you listed, so a snippet lifted from your page source cannot be used elsewhere. The flip side: list every origin your site actually serves from, including a staging domain if you test there, or the widget silently refuses on the ones you forgot.
Making it look like your site
Optional attributes go on the same <script> tag. Chat takes
data-button-color, data-text-color, data-title, data-greeting,
data-launch-label and data-position. Voice takes data-button-color,
data-text-color, data-border-radius, data-idle-label, data-position, and
data-mount="#your-element" if you want the button inside your own layout rather
than floating. Out of the box the voice button is a teal pill in the bottom-right
reading “Talk to us”.
If you want to build the interface yourself and keep only the conversation, the dialog also shows a headless option.
Phone
Self-serve, from Settings → Phone & voice. Kooday places and answers calls through your own telephony account — either Exotel or Plivo, and you can connect both if you like; each gets its own row on the Phone & voice screen.
What you do:
- Get an account and a number with your chosen provider, in your own name. The account and the per-minute telephony charges stay yours; Kooday does not resell them.
- Connect it on Phone & voice. That screen takes your provider’s API credentials and caller ID — encrypted the moment you save, and never shown again (only the last four characters of the secret). See Connect your Exotel account or Connect your Plivo account for the full walkthrough.
- Assign the number to an assistant. On that assistant’s Configuration tab, set Phone number to your number in E.164 format. It has to match the caller ID on one of your connected credentials, or the save is refused.
- Point the provider at the assistant. Exotel and Plivo work differently here: Exotel’s Voicebot applet takes the assistant’s raw Connection URL (a WebSocket address, shown on the assistant’s Configuration tab with a Copy connection URL button); Plivo instead needs the assistant’s Plivo Answer URL (an HTTP address, shown on the assistant’s Bots page) — pasting the wrong one of the two into Plivo will not work. See each provider’s own help page for the exact steps.
Bringing your own number needs the telephony capability, included from Starter upward.
If the phone side is not finished, the dashboard tells you when you try to place a call: “No telephony number is connected, or the provider is unavailable. Check your call settings.”
Troubleshooting
The popup finished but no messages arrive
Check the two halves. On Bots → Channels, is the channel switched on? And on the same tab, is a connector actually selected? WhatsApp says “On, but not yet active” when it is not; Instagram and Messenger do not.
A channel is greyed out and says to contact my administrator
That channel is not granted to that assistant. It is a Kooday-side setting; no switch on your side changes it.
The widget does not appear on my site
In order: is the snippet before </body>; is the site’s origin in Allowed
sites exactly as the browser sees it (scheme and domain, no path); and is the
assistant’s channel on. An origin mismatch fails silently by design.
I lost the widget key
Issue a replacement from the widget list, then update the snippet on your site. The old key stops working, so do both together.
Replies stopped partway through the month
From 1 October 2026, Meta charges for WhatsApp replies sent inside the 24-hour window once a number has had 1,000 of them delivered in a month (Meta’s pricing documentation). If your WhatsApp Business account has no payment method, Meta delivers the first 1,000 and then stops delivering the rest until the next month starts or you add a payment method.
Kooday does not show you when this happens: your assistant’s replies still appear in the thread, because a reply there means it was handed to Meta, not that it arrived. If customers go quiet late in a busy month, open Billing Hub, check that the WhatsApp Business account behind this number has a payment method, and add one if it does not. The 1,000 free replies reset each month and unused ones do not carry over.
WhatsApp worked and then stopped
Open the connector and click Check now. If it reports revoked access or a removed number, Reconnect with Facebook.
Where to go next
- Connect your Exotel account and Connect your Plivo account — the full walkthroughs for the Phone & voice screen above.
- Creating your assistant — the Channels card and what each switch does.
- Your knowledge base — what it answers from once people can reach it.
- When a customer asks you to stop — what happens across every channel you just connected.
Still stuck? We answer support mail the same working day.
Email support