Assisted import from Klaviyo, MessageBird, Telnyx, or Twilio
Onboarding ships an assisted import wizard that connects to your current provider, shows you exactly what will come across before anything is written, and runs the import as a background job you can watch, cancel, or roll back. Dedicated connectors exist for Klaviyo, MessageBird, Telnyx, and Twilio. The wizard is always read-only against the source: it never sends messages, changes configuration, or touches live traffic on the old account. Cut-over happens when you point your own integration at Orbit, not when the import finishes.1. Start the wizard and connect a source
Open the import wizard from onboarding (or revisit it later from the dashboard under Settings → Import) and pick your source. Each connector has its own first step:- Twilio — OAuth or API credentials. The preferred path is Twilio Connect:
click through to authorize Orbit on Twilio’s site and you are returned with a
protected session, no secrets pasted anywhere. When Twilio Connect is not
available for your account (for example self-hosted subaccounts), the wizard
offers a fallback: paste your Account SID (starts with
AC) and Auth Token. - MessageBird — access key. MessageBird publishes no OAuth flow, so create a live access key under Settings → Developers → API access and paste it. Read scope is sufficient; the key is never used to send traffic.
- Telnyx — API key. Paste a Telnyx V2 API key (starts with
KEY). - Klaviyo — private API key. Create one in Klaviyo under Settings → API
keys (starts with
pk_). Read-only scope covers the whole import.
2. Pick what carries over
Step two shows one checkbox per entity kind the source supports — all checked by default. Uncheck anything you want to leave behind.
Two patterns are worth knowing before you pick:
- Configuration versus contacts. Some kinds are data — Klaviyo profiles, MessageBird contacts, Twilio recipients — and land in your Orbit contacts table. Others are configuration metadata: Telnyx messaging profiles and 10DLC registrations, MessageBird channels and flows, Klaviyo flow definitions. These carry over as mapped configuration for reference and re-provisioning, not as live senders — registering numbers for messaging on Orbit is its own step (see 10DLC registration).
- Consent travels with contacts. Opt-out and consent state on imported contacts is preserved, so a suppressed recipient on the old platform stays suppressed in Orbit.
3. Dry-run before you commit
Start the dry-run and nothing is written. The preview shows, per entity kind, the estimated count on the source account, how many rows already exist in Orbit (known conflicts), and an estimated runtime. Use it to sanity-check your picks:- Refresh the counts after changing entity selections or conflict policies.
- If the source rate-limits the preview, wait a moment and retry — a failed dry-run never changes anything.
- Known conflicts are not errors. They become the rows your conflict policy (skip, overwrite, merge) is applied to, so set that policy on the previous step deliberately rather than accepting the default by accident.
4. Run, watch, and verify
The import runs in the background. The final wizard step shows per-entity progress (imported / skipped / failed counters) and finishes with a reconcile table. You can leave the page — the job continues, and the wizard state is URL-encoded so a refresh or a reopened link picks the same job back up. If something goes wrong, the wizard says so explicitly rather than hanging:- Import failed. You get a failure banner with a reference to give support, plus a retry action. Rows already imported stay imported.
- Live progress unavailable. If the progress feed drops, the wizard falls back to polling and, if polling also fails, shows a banner with a link to the durable history view under Audience → Imports (also mirrored on Settings → Migrations).
- Cancel and rollback. Cancel a running import at any time; rows already brought in remain. After a job finishes, an owner or admin can roll it back from the wizard or from Settings → Migrations, which removes the contacts that specific job created and nothing else.
- The reconcile table’s imported counts match the dry-run estimates (plus or minus the conflicts you chose to skip).
- Spot-check imported contacts in Audience → Contacts: phone numbers are E.164, email and consent state match the source, and custom attributes carried over.
- Lists and segments exist under Audience → Segments (Klaviyo) with their definitions intact.
- Templates are visible in the template library and flows under Orchestration → Journeys (Klaviyo) where mappings applied.
- Complete any source-specific follow-ups: port the phone numbers you want to keep (see Port numbers), and re-register messaging senders where the old registration does not transfer.
- Only then redirect your integration and run the two platforms in parallel for a window before decommissioning the source.
Choose the right migration path
This wizard is the assisted path. Two neighbours cover the cases it does not:- Migrate from Twilio — the manual, code-level concept map (TwiML → IVR, webhooks, Verify) for when you are rewriting the integration rather than porting account contents.
- Run a platform migration end-to-end — the operational reference: managing finished jobs, role requirements, and rollback semantics from Settings → Migrations (including the fifth source, Front, which is operated from there rather than the onboarding wizard).