How to migrate from Attentive to Bird
A developer guide to moving a messaging integration from Attentive's event-triggered API to Bird's direct-send API, covering channels, compliance, request-format changes and a step-by-step checklist.
Attentive is an AI-powered SMS, MMS, RCS, email and push marketing platform for consumer brands: its API triggers messages from subscriber events and journeys rather than sending them directly. Bird (formerly MessageBird) is a communications-infrastructure platform that exposes unified REST APIs for direct SMS, WhatsApp, voice and email. On the messaging.dev Score, Attentive rates 40/100 and Bird 76/100. This guide covers what actually changes when you move a sending integration from one to the other.
What you gain and what you lose
Channels. Both providers keep SMS and email. Moving to Bird you gain WhatsApp and voice, and you lose MMS and RCS — if any Attentive flows use MMS or RCS, Bird has no equivalent channel today. Neither provider offers Viber, Facebook Messenger, Telegram or Apple Messages for Business.
Compliance. Both carry GDPR and SOC 2. Bird additionally lists ISO 27001 and HIPAA, which Attentive does not, so no certification is lost in this direction.
Data residency. Attentive runs on US servers only, with no region choice (EU/UK/Swiss data is processed in the US). Bird runs both US and EU servers and lets you choose the region — the API key prefix encodes it.
Pricing and onboarding. Attentive is custom-quoted, with no self-serve signup and no published per-message rates. Bird is self-onboarding with published usage-based pricing (SMS from $0.0073 to US numbers) and a free email tier of 1,000/month; Attentive offers no free developer credit.
Tooling. Both offer a sandbox and REST. Attentive also exposes GraphQL and ships mobile SDKs (iOS/Swift, Android/Kotlin, React Native); Bird exposes SMTP and ships server-side SDKs (TypeScript, Python, Go), with docs rated high versus Attentive’s medium. For a side-by-side view, see the Attentive vs Bird comparison.
How the request format differs
Attentive quickstart:
curl -X POST 'https://api.attentivemobile.com/v1/events/custom' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"type": "Order Shipped",
"user": { "phone": "+13115552368" },
"properties": { "Order Id": "54321" }
}'
Bird quickstart:
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"
}'
The biggest structural change is the endpoint. Attentive has no direct send-SMS endpoint: you POST a custom event to /events/custom on https://api.attentivemobile.com/v1, and a preconfigured journey decides what (if anything) to send. Bird sends directly through /v1/sms/messages on https://us1.platform.bird.com/v1 (or the eu1 host).
Both use a Bearer token in the Authorization header. Bird’s key is region-prefixed (bk_us1_... / bk_eu1_...), and that prefix must match the host in the base URL.
Payload fields map as follows: the recipient moves from Attentive’s user.phone to Bird’s to. Attentive supplies no sender or message body — the number and copy live in the journey — so on Bird you must add from (sender) and text (the message body you now own). Attentive’s type and properties (event name and metadata) have no Bird equivalent; Bird instead adds category (for example, authentication).
Migration checklist
- Create a Bird account (self-serve) and generate a region-prefixed API key; choose
us1oreu1. - Map the request fields:
user.phone→to; addfromandtext; droptype/properties; setcategory. - Move message copy out of Attentive journeys into your own
textpayloads — Bird sends exactly what you send. - Re-point sending code to
https://us1.platform.bird.com/v1/sms/messages(oreu1) and swap theAuthorizationtoken. - Re-test in Bird’s sandbox before live traffic (both providers have one). See how to start with Bird for the full quickstart.
- Update your webhooks and delivery callbacks to Bird’s format.
- Run both integrations in parallel, compare delivery, then cut over.
Watch out for
- No MMS or RCS on Bird — Attentive flows using either channel need a different approach.
- You now own the body and sender. Bird won’t apply Attentive’s journey logic; you must supply compliant copy and manage consent and opt-outs yourself.
- Region lock. The key prefix must match the host — a
us1key will not work againsteu1. - Different model. Bird is a direct-send transactional platform, not a marketing-journey/subscriber system, so Attentive’s event-and-journey flow and GraphQL API have no direct equivalent.