Migration guide

How to migrate from Clickatell to Bird

A developer-focused guide to moving SMS and WhatsApp traffic from Clickatell to Bird, covering channel changes, request-format mapping, and a step-by-step migration checklist.

Clickatell is a cloud messaging and chat-commerce platform offering SMS, WhatsApp, RCS and Apple Messages for Business APIs. Bird (formerly MessageBird) is a communications-infrastructure platform providing unified APIs for email, SMS, WhatsApp and voice. On the messaging.dev Score, Clickatell rates 61/100 and Bird 76/100; this guide covers what actually changes at the API level when you move, not why you should.

What you gain and lose

Channels. Both platforms carry SMS and WhatsApp, so your core traffic transfers directly. Moving to Bird adds Voice and Email as first-party channels. It also drops two channels Clickatell supports — RCS and Apple Messages for Business — so if you rely on either, Bird cannot replace them. Neither provider offers MMS, Viber, Facebook Messenger or Telegram, so nothing changes there.

Compliance and residency. Both are GDPR, ISO 27001 and SOC 2 aligned; Bird additionally holds HIPAA. Clickatell runs EU servers only with no region choice, while Bird offers both EU and US data residency and lets you pick a region (encoded in the API key prefix).

Pricing and credit. Clickatell sells self-service prepaid pay-as-you-go credits with quote-based enterprise tiers and no free developer credit. Bird uses usage-based pricing with no platform or seat fees and includes a free email tier (1,000 messages/month); its published US SMS rate starts at $0.0073 versus Clickatell’s $0.008.

Tooling. Clickatell ships SDKs for Python, PHP, Java, Node.js and C#; Bird ships TypeScript, Python and Go — Python is the only overlap. Both provide a sandbox, both rate high on docs quality, and both expose a REST API (Clickatell also offers SMPP, Bird SMTP).

How the request format differs

Clickatell:

curl -X POST https://platform.clickatell.com/v1/message \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"channel":"sms","to":"27123456789","content":"Hello World"}]}'

Bird:

curl -X POST "https://us1.platform.bird.com/v1/sms/messages" \
  -H "Authorization: Bearer bk_us1_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155550100",
    "from": "Bird",
    "text": "Your Bird verification code is 481920. It expires in 10 minutes.",
    "category": "authentication"
  }'

Endpoint. The base URL changes from https://platform.clickatell.com/v1/message to a region-prefixed host, https://us1.platform.bird.com/v1/sms/messages. The channel, which Clickatell carries as a channel field in the body, moves into Bird’s URL path (/v1/sms/).

Authentication. Clickatell passes the raw API key in the Authorization header with no prefix. Bird uses a Bearer token whose value is a region-prefixed key (bk_us1_... / bk_eu1_...); the prefix must match the host you call.

Payload. Clickatell wraps sends in a messages array; Bird posts a single flat object. The message body maps contenttext, and the recipient stays to but switches to E.164 with a leading + (27123456789+14155550100). Bird adds an explicit from sender and a category field (e.g. authentication) that Clickatell’s example omits.

Migration checklist

  1. Create a Bird account and generate a region-prefixed API key (bk_us1_ or bk_eu1_) for your chosen residency.
  2. Map each request field: contenttext, keep to (reformat to E.164), add from and category, and drop the messages wrapper.
  3. Re-point your sending code to the region host and change the auth header to Bearer.
  4. Re-test against Bird’s sandbox before sending live traffic.
  5. Update delivery and status webhooks/callbacks to Bird’s format.
  6. Run both providers in parallel and reconcile delivery receipts.
  7. Cut over once volumes and error rates look correct, then retire the Clickatell path.

For a from-scratch setup, see how to start with Bird, or review the full Bird vs Clickatell comparison.

Watch out for

  • You lose RCS and Apple Messages for Business entirely — Bird carries neither.
  • Bird’s SDK set drops PHP, Java, C# and Node.js; only Python overlaps, so other stacks fall back to raw REST.
  • Recipient numbers must be reformatted to E.164 (leading +); Clickatell’s example uses a bare number.
  • API keys are region-bound — a us1 key won’t authenticate against the eu1 host.
  • Bird’s published coverage is 150 countries versus Clickatell’s 190; verify your destinations.