Connecting Channels
Each messaging channel is connected from Configuration → Integrations. The Chat Inbox only shows channels your school has actually turned on — there's no clutter from unconnected providers.
Connection paths at a glance
| Channel | How you connect | What we store | Webhook |
|---|---|---|---|
| WhatsApp Business | "Continue with WhatsApp" (Embedded Signup) — or paste credentials manually | Phone Number ID + WABA ID + system user token | Auto-subscribed on connect |
| WeChat OA | Paste AppID + AppSecret + Server Token (+ EncodingAESKey if msg-encrypt is on) | Per-OA credentials | Manual: paste our URL into the OA platform |
| Messenger | "Continue with Facebook" — pick a Page | Page access token + Page ID | Auto-subscribed |
| Instagram DM | "Continue with Instagram" — pick an IG Professional account | IG user id + token | Auto-subscribed |
| Telegram | Paste bot token | Bot token | Auto-set on connect (path-based secret) |
| Viber | Paste bot token | Bot token | Auto-set on connect |
What "Embedded Signup" means
For WhatsApp / Messenger / Instagram, Kinderpedia uses Meta's official Embedded Signup flow. The connect modal opens a popup that walks the user through Meta's permissioning UI. The school never has to copy/paste tokens — Meta hands them to us directly on completion. The integration tile shows that the connection was set up via Embedded Signup so admins can tell at a glance.
If the Embedded Signup popup is blocked or fails (some corporate browsers), the modal falls back to manual paste: WABA ID, Phone Number ID, system user token.
Disconnecting
Disconnect any channel from the same Integrations row → … menu → Disconnect. The integration row is kept (with status = disconnected) so you have a historical record; new inbound is no longer accepted; outbound reply UI is hidden.
For Meta channels, disconnect also calls Meta's DELETE /subscribed_apps so we stop receiving webhooks at all.
Per-user channel permission
After a school connects a channel, individual staff still need the <channel>.send permission to reply. The default role pack includes them for "Admin" and "Admissions Manager"; toggle them on for additional roles under Users & Permissions → Roles.
Encrypted at rest
Every channel's credentials (tokens, secrets, encoding keys) are encrypted at rest. Only the connection flow sees them in plaintext; the UI never receives the raw credentials, only non-sensitive metadata.