Monitor, cancel, and roll back platform migrations
The import wizard carries you from connect to run, but the wizard’s progress view is the only screen that exists while onboarding is open. Once you close it, the durable operations surface for migration jobs is Settings → Migrations in the dashboard. This page lists every platform-migration job your organization has run and is where you cancel a migration that is going wrong or roll back one that already landed. The full wizard walkthrough lives in run a platform migration end-to-end; this guide is the operations half of the lifecycle. Open it from the dashboard sidebar: Settings → Migrations.1. What the page lists
Each row is one persisted migration job for your organization, showing:- Source — the platform the job pulled from: Twilio, Telnyx, Klaviyo, MessageBird, or Front.
- Status — the job’s current state in the lifecycle (
pending,running,succeeded,failed,cancelled). - Started — when the job began, in your timezone. After a rollback, the row also shows a “rolled back” marker so you can tell a reverted migration apart from one that still stands.
2. Status and what each state allows
Migration jobs follow the same state machine the troubleshooting table documents:
Terminal means the job never moves again. Three consequences fall out of that:
- Cancel is only offered on
pendingandrunningrows. Asking to cancel a terminal job comes back as a conflict — read it as “already finished,” not as a failure. - Rolling back a job that is still in flight is refused — cancel it, wait for it to settle into a terminal state, then roll back.
- Run rollback promptly. The rollback window for import jobs is 24 hours after the job finished; past that, remove leftover rows with a targeted bulk delete instead of a job-level rollback. A job that was already rolled back is rejected as already done — second attempts are safe but change nothing, and the row’s rolled-back marker tells you the first one landed.
3. Cancel a running migration
Useful when the job is importing the wrong scope, or the upstream account turned out to be stale.- On the job’s row, click Cancel.
- Read the confirm dialog — it states the outcome — and confirm with Cancel migration. Use Keep running to back out.
cancelled the next time it reaches a safe checkpoint between batches, so the stop is clean rather than mid-batch. What the semantics mean in practice:
- Already-imported data stays. Cancel stops future work; it does not undo past work. Your workspace may be partially migrated.
- The job ends in
cancelled, a terminal state — you cannot resume it. Re-run the wizard to restart. - Rollback remains available after the cancel lands, so the full reversal is cancel → wait for the terminal state → roll back.
4. Roll back a finished migration
Rollback is restricted to the owner or admin role; other roles see the job list but never get the button.- On a terminal job’s row, click Roll back.
- Read the confirm dialog — rollback permanently deletes every contact this job created — and confirm.
- Contacts the job created are deleted. The success toast reports how many rows were removed.
- Pre-existing contacts the job merely updated are untouched — rollback never destroys data that existed before the migration.
- Imported non-contact configuration (imported routing, channel settings) is out of rollback’s scope and stays.
- A job rolls back once. After a successful rollback the row carries the rolled-back marker and the count, and a second attempt is rejected — there is nothing left to remove.
5. Platform migrations vs contact CSV imports
Both show up under “import jobs,” but they are different lifecycles:- Platform migration (this page) — Orbit pulls contacts and platform configuration over an authenticated connection to Twilio, Telnyx, Klaviyo, MessageBird, or Front. Jobs appear on Settings → Migrations. Run one from the provider-migration hub on Settings → Integrations, or from onboarding.
- Contact CSV import — you upload a shaped file of rows over the API or from Audience → Imports. Jobs appear on the contacts import history, not here. See import and reconcile contacts.
IMPORT_NOT_CANCELLABLE, IMPORT_STILL_RUNNING, ALREADY_ROLLED_BACK, queue unavailability) live in troubleshooting: contact imports.
6. When to escalate
Most Migrations-page problems resolve locally — refresh the list, read the job’s live status, match your action to the state table above. Escalate when:- a job sits in
pendingfor more than a few minutes (the worker should pick it up almost immediately), - a
runningjob stops advancing and cancel does not move it tocancelled, - cancel or rollback keeps returning conflicts after a refresh, or
- a rollback completed but you suspect imported contacts remain.
- Your organization / tenant id — visible in the dashboard URL and on Settings → Organization.
- The job id — the
imp_…identifier for the migration (shown on the API response for the job list; quote it when you contact support). - The response’s
meta.request_idfor any failing API call — support can replay the exact state of the request from that id.
See also
- Run a platform migration end-to-end — the wizard side: connect, dry-run preview, live progress, and the equivalent API calls
- Migrate from Twilio — the concept mapping (numbers, messaging services, TwiML, webhooks) for the most common source
- Import and migration lifecycle — the state machine and entity model underneath both import paths
- Troubleshooting: contact imports — per-error-code fixes for cancel, rollback, and queue failures
- Import and reconcile contacts — the CSV import path for sources without a connector
- Opt-out lists — consent enforcement that applies to migrated contacts exactly as it does to any other audience