Skip to main content

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

  1. Sign up at orbit.devotel.io/signup
  2. Generate an API key at Settings > API Keys
  3. 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 example https://storage.googleapis.com/your-loa-bucket/loa.pdf) is rejected with LOA_URL_INVALID_ORIGIN.
Alternative: Purchase new numbers and update your systems gradually.

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):
Orbit (JSON):

Update Signature Verification


Step 5: Migrate Voice (if applicable)

TwiML to Orbit IVR

Twilio TwiML:
Orbit IVR API: Orbit models IVRs as IVR flows — a { 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:
The graph is validated on save: it must have exactly one entry node (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 09, *, 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).
Prefer not to hand-author the graph? Build the flow visually at Voice > IVR Builder and publish from the canvas — the API above is the same surface the builder calls.

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:
  1. Phase 1 (Week 1–2): Send 10% of traffic through Orbit, 90% through Twilio
  2. Phase 2 (Week 3–4): Split 50/50 and compare delivery rates
  3. Phase 3 (Week 5): Route 100% through Orbit, keep Twilio as fallback
  4. Phase 4 (Week 6+): Decommission Twilio
Need help with your migration? Our solutions team offers free migration support for customers moving from Twilio. Contact migrate@devotel.io.