Migrating from Respond.io or Kapso

Move a WhatsApp number, contacts and workflows from a hosted inbox into your own app with Sendo.

Respond.io and Kapso are hosted inboxes. Sendo does the same job inside your app: the conversations land in your database and the inbox is a screen of your product. Migrating is mostly about the WhatsApp number, because everything else is yours to import.

Concepts#

Respond.io / KapsoSendo
Workspace / projectYour app; organizations are tenantId
Channel (WhatsApp number)sendo_accounts row (Numbers and tenants)
Contactsendo_contacts, linked to your own record through linkContact / appRef
Inbox, assignment, notesinbox and sendo.inbox (Team inbox)
Users and rolesYour users; Sendo asks resolveRole, resolveUsers, resolveAssignees
Saved replies, tagsSnippets and tags
Workflows, business hours, auto-assignRules (Workflows); anything else is your code (sendo.on(...))
AI agentsendo.agent({...}) with any model (Agents and models)
Broadcastssendo.broadcasts (Broadcasts)
Reportssendo.metrics and the Metrics screen (Metrics)

1. Install Sendo next to the old tool#

Follow the quickstart with a test number first, so the webhook, the agent and the inbox are proven before you touch the real number.

2. Move the number#

  • If you own the Meta app and the WhatsApp Business account (you created them, or the old tool connected through your own app): point the app’s webhook at https://<your-app>/api/sendo/webhook, add the number with npx @quami/sendo accounts add, and run npx @quami/sendo doctor. Your templates stay, because they belong to the WhatsApp Business account.
  • If the old tool is the Meta Tech Provider or BSP: disconnect the number there, then connect it to your app through Embedded Signup or Meta’s phone number migration flow. Templates belong to the old WhatsApp Business account; if the number moves to a new one, re-submit them and wait for approval before you need them.

Check Meta’s current documentation for number migration before you start; the steps depend on who owns the business account.

3. Import contacts and consent#

Export contacts from the old tool (CSV) and upsert them with the adapter or your own SQL (sendo_contacts: account, phone, profile name). Bring marketing consent along: record it with sendo.contacts.setOptIn(contactId, true, { source: "import" }), because broadcasts of MARKETING templates only go to contacts who opted in.

4. Conversation history#

Sendo doesn’t import another tool’s message history. Keep the export as an archive, or insert it yourself with the adapter if your team needs it in the thread. New conversations start in Sendo from the cut-over.

5. Rebuild workflows as rules#

Business hours, routing by keyword, auto-assign, escalation and auto-close are rules, editable on the Reglas screen or kept in code with sendo rules sync. Anything more specific is a few lines of your own code on Sendo events.