Migration from MessageBird to Orbit
This guide walks you through migrating your SMS, Flow Builder, WhatsApp, lookup, and Verify integration from MessageBird (Bird) to Orbit. The manual migration proceeds incrementally — traffic stays on MessageBird until you redirect your own integration.Concept Mapping
Prefer not to do it by hand?
The Settings → Migrations import wizard ports your MessageBird account’s configuration — channels, contacts, and Flow Builder flows — onto Orbit with a read-only access key. MessageBird is one of the five supported migration sources. It never touches your live traffic, so your existing MessageBird integration keeps running until you cut over.- In the dashboard, open the wizard for
/import/messagebird(also reachable from onboarding). - Connect — paste a MessageBird access key as the read-only credential. The key is handed forward to the job as an encrypted envelope; it is never persisted in the browser.
- Choose scope — checkbox the entity kinds you want:
channels,contacts,flows. - Dry-run preview — the wizard calls the preview endpoint and shows counts per entity, an ETA, and known conflicts before anything is written.
- Commit — start the job and stream progress; check Status:
pending,running,succeeded,failed, orcancelledfrom Settings → Migrations.
POST /imports/:source/run). See run a platform migration end-to-end for the full job lifecycle (cancel, roll back, evidence).
The rest of this guide covers the manual, code-level migration for teams who want control over each step.
Step 1: Create Your Orbit Account
- Sign up at orbit.devotel.io/signup
- Generate an API key at Settings → API Keys
- Note your key prefix:
dv_live_sk_xxxx
X-API-Key header — a single key replaces MessageBird’s AccessKey pairing.
Step 2: Port Your Numbers
Port your MessageBird numbers to Orbit. Number porting takes 7–14 business days. Via API: A port request must carry a Letter of Authorization (LoA). Orbit only accepts an LoA URL it issued itself, so upload the signed PDF to Orbit first and submit the returned URL — a link to your own bucket is rejected withLOA_URL_INVALID_ORIGIN.
Step 3: Update Message Sending
MessageBird (Before)
Orbit (After)
Key Differences
MessageBird’s
recipients array maps to Orbit’s scalar to — one recipient per send. For a bulk batch, walk your recipient list and fan out per request, or move the workload to a campaign; see campaigns.
Step 4: Update Delivery-Report Webhooks
Webhook Header Changes
Verify against
X-Orbit-Signature — it is the canonical header Orbit sends on every webhook delivery. X-Devotel-Signature is still emitted for backward compatibility only; treat it as legacy and do not build new verifiers against it.
Payload Format Changes
MessageBird (delivery report JSON):Update Signature Verification
Step 5: Migrate Flow Builder to Orbit Flows
Orbit’s Flows is a visual canvas backed by the same{ nodes, edges } graph the Flows API writes — the same shape your MessageBird Flow Builder exports carry. Export each flow from MessageBird, re-model it as an Orbit definition, and create it with POST /api/v1/flows.
Trigger mapping
Two rules to avoid surprises:
- Gate event triggers. An inbound-message event also fires on API imports and CSV uploads, not just your live traffic. Put a Condition first, or a bulk import tags along behind your flow.
- Variables are flat. Write
{{phone}}, not{{contact.phone}}; a missing key renders as an empty string. Validate with Flow’s Test mode before publishing.
Recipe example — welcome SMS rebuilt
Shape: inbound message → welcome SMS → 24-hour delay → follow-up email.Step 6: Migrate WhatsApp
MessageBird’s WhatsApp “channels” fold their connectivity into the Bird tenant via a shared managed setup. On Orbit you connect your own WhatsApp Business Account (WABA) — the migration runs through Meta Business Manager verification, embedded sign-up, display-name and template approval, and quality/risk setup. The full walkthrough is the WhatsApp WABA setup guide. During the MessageBird → Orbit cutover, keep both channels live until templates and messaging limits carry over; routing happens at your integration layer.Step 7: Migrate Verify (OTP)
MessageBird (Before)
Orbit (After)
Migration Checklist
- Create Orbit account and generate API keys
- Run the Migrations wizard for
channels,contacts,flows(or skip if manual) - Port numbers or purchase new ones
- Install the Orbit SDK (
npm install @devotel-orbit/node) - Update message-sending code (originator/recipients/body → channel/to/body)
- Update webhook endpoint handlers
- Update webhook signature verification (unsigned JSON → HMAC-SHA256)
- Re-model Flow Builder exports as Orbit flow definitions
- Stand up the new WABA for WhatsApp (if applicable)
- Migrate Verify/OTP (if applicable)
- Update monitoring and alerting
- Run parallel testing (send via both MessageBird and Orbit)
- Decommission the MessageBird integration
- Release the old account’s credentials from your secret store
Parallel Running Strategy
Run MessageBird and Orbit in parallel during migration:- Phase 1 (Week 1–2): Send 10% of traffic through Orbit, 90% through MessageBird
- Phase 2 (Week 3–4): Split 50/50 and compare delivery rates
- Phase 3 (Week 5): Route 100% through Orbit, keep MessageBird as fallback
- Phase 4 (Week 6+): Decommission MessageBird