Import History console
Every CSV contact import that runs in Orbit leaves a job row behind — one per upload, newest first. Audience → Imports is the operator console for those rows: it answers “which imports landed, what did they skip, and is one still running” without re-running the wizard. Use it as the archive companion to the import wizard itself (Audience → Import) — the wizard runs one file, this page tracks every run. The console lists jobs fromGET /api/v1/contacts/import-jobs, the same endpoint powering the wizard’s “recent imports” banner; nothing here is privileged over the API.
1. What each row shows
Each job row carries:- Status — one of
Running,Cancelled,Failed, orCompleted. The status comes from the job’s terminal lifecycle record, and a counters fallback covers rows whose lifecycle record is no longer joined. - When — the timestamp the import finished, rendered in your configured timezone (for in-flight jobs, when it started).
- Imported / Skipped / Total — the per-job counters. Imported rows became contacts; skipped rows failed validation; total is the file’s row count. A job that never finished shows
Imported + Skipped < Total.
2. Download the skipped rows and re-import them
A job withSkipped > 0 offers a Skipped CSV button. It downloads GET /api/v1/contacts/import-jobs/{id}/skipped.csv — one row per rejected input row, with the original columns plus the row index and a human-readable reason (unparseable phone, missing phone/email, a custom-field value that failed validation, a duplicate inside the file).
The remediation loop:
- Download the skipped CSV.
- Fix the cause class in those rows — reformat the phone, add the missing address, correct the custom-field value.
- Start a new import with just the fixed file (Audience → Import, or
POST /api/v1/contacts/imports). There is no way to mutate the original upload in place; a remediated file is always a new job.
3. Resume an in-flight job
A job stillRunning offers a View running job link. It opens the import wizard with the job id in the URL (?resume=<job_id>), which jumps the wizard straight to its progress step — the file is not re-uploaded and field mapping is not redone; you land on the live progress view for that job. The resume parameter is stripped from the URL after the jump so a later back-navigation does not replay it.
If someone already requested cancellation, the link renders disabled — the job is stopping and re-entering it would mislead.
Cancel and rollback are also available here, behind explicit confirmations:
- Cancel stops the in-flight job immediately. Rows already written before the abort stay imported, so you can be left with a partially-imported contact set.
- Roll back import is offered for a completed job within its 24-hour rollback window and hard-deletes the contacts that job created, along with their list/segment membership, scores, and consent records.
4. Role access and retention
- Who sees it. The console sits under the Audience nav group, which is visible to owner, admin, and developer roles. Reading the list needs
contacts:read; running a new import from it (or cancelling/rolling back one) needscontacts:write. - How long rows persist. Job rows persist in the tenant with no automatic expiry: the history is the archive, and an old row stays downloadable (counters, skipped CSV) until someone deletes it or the tenant is reaped. Rows are listed newest-first and cursor-paginated, so a long history never loads at once — use Load more to page back.
5. Authoring-side guides
This page is the operations half — the guides below are the authoring half:- Import or migrate contacts — pick between the CSV wizard, the async import API, CDP profile ingest, and the platform-migration connectors, then run a first import end to end.
- Assisted import from Klaviyo, MessageBird, or Telnyx — the onboarding wizard that pulls contacts over a connector instead of a file.
- Import and reconcile contacts — the CSV file-shape walkthrough: phone formats, opt-in columns, dedupe policy, dry-run.
See also
- Troubleshooting: contact imports — per-error-code fixes for cancel, rollback, queue, and enqueue failures
- Import and migration lifecycle — the state machine and rollback-by-import-id contract underneath
- Consent and suppression model — why importing an address is not consent
- Contacts API reference — the endpoint-by-endpoint schema for the imports routes