How to migrate from BulkSMS to Bird
A developer-focused guide to migrating from BulkSMS to Bird, covering channel, compliance, and API request-format differences with a step-by-step checklist.
BulkSMS is a business messaging platform for sending bulk SMS and RCS to mobile networks via web app, API, and SMPP. Bird (formerly MessageBird) is a broader communications infrastructure platform offering SMS, WhatsApp, voice, and email through unified APIs. On the messaging.dev Score, BulkSMS rates 43/100 and Bird 76/100; this guide covers what actually changes at the API level when you move between them.
What changes when you move
Channels. Both providers send SMS. Migrating to Bird you gain WhatsApp, voice, and email. You lose RCS, which BulkSMS supports and Bird does not. Neither provider offers MMS, Viber, Facebook Messenger, Telegram, or Apple Messages for Business, so those stay unavailable either way.
Compliance. Both are GDPR-aligned. Bird additionally lists ISO 27001, SOC 2, and HIPAA; BulkSMS lists none of the three.
Data residency. Both run EU servers. Bird also runs US servers and lets you choose your data region. BulkSMS is EU-only (with South Africa as an additional listed region) and offers no residency choice.
Pricing and free credit. BulkSMS uses pay-as-you-go prepaid credits with no single published headline SMS rate. Bird uses usage-based transactional pricing with no platform or seat fees and publishes per-country rates (from $0.0073 per US message). The free developer credit differs in kind: BulkSMS gives 5 free test SMS on signup, while Bird’s free tier is email-only (1,000/month), so there is no free SMS allowance on Bird.
Tooling. BulkSMS ships no official SDKs and rates “med” on docs. Bird provides TypeScript, Python, and Go SDKs, rates “high” on docs, and offers a sandbox for pre-production testing (BulkSMS has none). One narrowing: BulkSMS exposes REST, HTTP, SMPP, and SMTP interfaces, whereas Bird exposes REST and SMTP only, with no SMPP.
How the request format differs
BulkSMS:
curl -X POST https://api.bulksms.com/v1/messages \
-u 'API_TOKEN_ID:API_TOKEN_SECRET' \
-H 'Content-Type: application/json' \
-d '{"to": "+27000000000", "body": "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"
}'
Three things change. The endpoint moves from api.bulksms.com/v1/messages to a region-prefixed host, us1.platform.bird.com/v1/sms/messages (or eu1...); the host must match your key’s region. The authentication switches from HTTP Basic auth (-u 'API_TOKEN_ID:API_TOKEN_SECRET') to a region-prefixed API key (bk_us1_... / bk_eu1_...) sent as a Bearer token in the Authorization header. In the payload, the recipient stays as to, but the message body moves from body to text, and Bird additionally expects a from sender field and a category field (for example "authentication") that the minimal BulkSMS call omits.
Migration checklist
- Create a Bird account and generate a region-prefixed API key, choosing
us1oreu1to match your residency needs. - Map the request fields:
tostaysto,bodybecomestext, and addfromandcategory. Replace Basic auth with the Bearer token. - Re-point your sending code to the region-matched base URL (
us1/eu1). - Re-test using Bird’s sandbox, which is available, before sending live traffic.
- Update your webhooks and delivery callbacks to Bird’s format so status events keep flowing.
- Run both providers in parallel for a period and reconcile delivery results.
- Cut over fully, then decommission your BulkSMS credentials.
For a full setup walkthrough, see how to start with Bird, and for a dimension-by-dimension breakdown see Bird vs BulkSMS.
Watch out for
- RCS goes away. BulkSMS supports RCS; Bird does not. Any RCS traffic must fall back to another channel.
- No SMPP on Bird. BulkSMS offers SMPP; Bird exposes only REST and SMTP, so a binary/SMPP integration must be rebuilt on REST.
- No free SMS. Bird’s free tier is email-only (1,000/month); unlike BulkSMS there is no free test-SMS credit.
- Narrower country coverage. Bird lists 150 countries versus BulkSMS’s 213; verify your destinations are supported.
- Region-locked keys. The key prefix (
us1/eu1) must match the host, or requests will fail.