WhaBuzz docs
Guides

Migrating from Plivo or WATI

Move your numbers, templates and integration from another WhatsApp provider onto WhaBuzz.

WhaBuzz speaks Meta's Cloud API. If your current provider (Plivo, WATI, or any BSP) wraps that API in its own format, migration is mostly changing what you send, not where your customers' conversations live.

#What carries over

#What does not

#Steps

  1. Check who owns the WABA. In Meta Business Manager, open WhatsApp accounts. If the WABA belongs to your business, you can connect it yourself. If it is owned by the provider, ask them to transfer it to your business, or migrate the number to a WABA you own using Meta's number migration.
  2. Connect it. Use Embedded Signup in the console, or POST /v1/numbers/connect with a system-user token. Moving a number from a different provider's WABA to yours is POST /v1/numbers/migrate.
  3. Import templates. POST /v1/templates/sync.
  4. Add a webhook endpoint and verify it (Webhooks). Keep your old provider's webhook receiving until you cut over.
  5. Change your send code. Meta's body replaces your provider's. See the mapping below.
  6. Change your inbound handler. The data field of a WhaBuzz event holds Meta's change value and raw holds Meta's full POST. If your code already parsed Meta's format, the field paths are Meta's. Add signature verification and dedupe_key.
  7. Cut over. WhatsApp delivers inbound messages to one webhook subscription per app at a time. Subscribing the WABA to WhaBuzz moves inbound delivery. Do it at a quiet hour, send a test message to the number, and confirm a message.inbound event arrives.

Cutting a number over has a short window where inbound messages go to neither provider. Keep the old provider's account open until you have seen traffic arrive on WhaBuzz.

#Mapping a send

Whatever your old call looked like (provider JSON with the destination, template name and variables), the WhaBuzz equivalent is Meta's body:

{
  "from": "1013622581841046",
  "to": "16505551234",
  "type": "template",
  "template": {
    "name": "renewal_reminder",
    "language": { "code": "en" },
    "components": [{ "type": "body", "parameters": [{ "type": "text", "text": "Kerry" }] }]
  }
}
json

Meta's message reference documents every field. If your old provider flattened variables into a list, you will build components[].parameters[] yourself.

#Things that will differ

This page as Markdown: /guides/migrating.md. All docs in one file: /llms-full.txt.