Migration from Twilio to Orbit
This guide walks you through migrating your SMS, voice, and messaging integration from Twilio to Orbit. Most Twilio concepts map directly to Orbit equivalents, and the migration can be completed incrementally.Concept Mapping
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
Step 2: Port Your Numbers
You can port existing Twilio numbers to Orbit. The process 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 you upload the signed PDF to Orbit first and submit the returned URL — a link to your own bucket (for examplehttps://storage.googleapis.com/your-loa-bucket/loa.pdf) is rejected with
LOA_URL_INVALID_ORIGIN.
Step 3: Update SMS Integration
Twilio (Before)
Orbit (After)
Key Differences
Step 4: Update Webhook Handlers
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
Twilio (form-encoded):Update Signature Verification
Step 5: Migrate Voice (if applicable)
TwiML to Orbit IVR
Twilio TwiML:{ nodes, edges } graph (the same shape the
visual IVR builder saves). Create a draft
flow with POST /api/v1/voice/ivr-flows, then publish it so inbound callers see it:
ivrStart), at
least one terminal node (transfer, hangup, voicemail, ringGroup, …), no
unreachable nodes, and no loops without an exit. DTMF menuOptions[].key values must be
0–9, *, or #. Per invariant #45, transfer targets must be phone numbers or
on-net extensions — raw sip: URIs are rejected (outbound voice exits only via the
Devotel softswitch).
Upgrade to AI Agents
Instead of static IVR trees, consider deploying an AI voice agent:Step 6: Migrate Verify (OTP)
Twilio (Before)
Orbit (After)
Migration Checklist
- Create Orbit account and generate API keys
- Port numbers or purchase new ones
- Install Orbit SDK (
npm install @devotel/orbit-sdk) - Update message sending code
- Update webhook endpoint handlers
- Update webhook signature verification
- Migrate voice/IVR flows (if applicable)
- Migrate Verify/OTP (if applicable)
- Update monitoring and alerting
- Run parallel testing (send via both Twilio and Orbit)
- Decommission Twilio integration
- Cancel Twilio account
Parallel Running Strategy
We recommend running Twilio and Orbit in parallel during migration:- Phase 1 (Week 1–2): Send 10% of traffic through Orbit, 90% through Twilio
- Phase 2 (Week 3–4): Split 50/50 and compare delivery rates
- Phase 3 (Week 5): Route 100% through Orbit, keep Twilio as fallback
- Phase 4 (Week 6+): Decommission Twilio