How to migrate from Clickatell to Sinch
A developer's guide to moving SMS and multichannel messaging from Clickatell to Sinch, covering channel and compliance differences, request-format changes, 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. Sinch is a broader cloud communications platform covering messaging, voice and email. On the messaging.dev Score, Clickatell rates 61/100 and Sinch 92/100 — this guide walks through what actually changes at the API level when you move.
What you gain and lose
Channels. Both providers support SMS, RCS, WhatsApp and Apple Messages for Business, so no channel is lost moving in this direction. Sinch adds MMS, Viber, Facebook Messenger, Telegram, voice and email on the same account.
Compliance. Both carry GDPR, ISO 27001 and SOC 2. Sinch additionally lists HIPAA, which Clickatell does not.
Data residency. Clickatell runs EU servers only, with no US region and no residency choice. Sinch offers both EU and US servers plus APAC, Australia and Brazil, and lets you choose where data lives.
Pricing and credit. Both are pay-as-you-go. Clickatell uses prepaid credits with quote-based enterprise tiers; Sinch adds volume and committed-use pricing. Sinch includes free trial credit for new accounts, whereas Clickatell offers no free developer credit.
The rest is largely a wash. Both ship the same five SDKs (Python, PHP, Java, Node.js, C#), both provide a sandbox, and both rate “high” on docs quality. Sinch adds SMTP alongside REST and SMPP. The one dimension where Clickatell is broader is coverage: 190 countries versus Sinch’s 150.
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"}]}'
Sinch:
curl -X POST 'https://us.sms.api.sinch.com/xms/v1/YOUR_SERVICE_PLAN_ID/batches' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"from":"+15005550006","to":["+15551234567"],"body":"Hello from Sinch"}'
Base URL. Clickatell posts every channel to one endpoint, https://platform.clickatell.com/v1/message. Sinch posts to a region-specific host with your {service_plan_id} embedded in the path and a /batches resource.
Authentication. Clickatell passes the raw API key in the Authorization header with no prefix. Sinch expects a Bearer token: Authorization: Bearer YOUR_API_TOKEN.
Payload mapping. Clickatell wraps one or more messages in a messages array, each carrying channel, to (a single string) and content. Sinch’s SMS Batches endpoint drops the channel field, takes from (the sender), to as an array of recipients, and body for the text. So map content → body, single to → to array, and add an explicit from.
Migration checklist
- Create a Sinch account, generate an API token, and note your
service_plan_id. See how to start with Sinch for the full walkthrough. - Map the request fields:
content→body, singleto→toarray, addfrom, dropchannel, and select the correct regional host. - Swap auth: change
Authorization: YOUR_API_KEYtoAuthorization: Bearer YOUR_API_TOKEN. - Re-point your sending code at the
.../batchesendpoint. - Re-test in Sinch’s sandbox before sending live traffic.
- Update delivery-report webhooks and callbacks to Sinch’s format.
- Run both providers in parallel and compare delivery.
- Cut over once delivery and callbacks match.
Watch out for
- Coverage. Sinch lists 150 countries against Clickatell’s 190. Confirm your destination countries are supported before you cut over.
- Region-pinned endpoint. The quickstart host is
us.sms.api.sinch.com. To keep EU data residency you must send to the matching regional endpoint, not the default US host. - Service plan required. Sinch embeds
service_plan_idin the URL path; there is no single global endpoint like Clickatell’s.
For a full side-by-side, see the Clickatell vs Sinch comparison.