CSV format
We accept any CSV with at least one of these columns: email, phone, first_name. (We need something to identify each contact by.) Recognized columns (case-insensitive, with common aliases):
Anything we don’t recognize is ignored, not an error. Pull your CSV out of whatever tool you’re using and don’t worry about cleaning column names — we’ll handle it.
Run the import
1
Open Contacts
Navigate to Contacts in your dashboard.
2
Click 'Import'
Top-right of the page.
3
Upload your file
Drag-and-drop or browse. The first row should be column headers.
4
Review the preview
We parse the first 5 rows and show you what we’ll do with them. Check that names landed in the right column, phones look right, etc.
5
Confirm import
Click Import. We process up to ~10,000 rows per upload (most customer lists are well under that). Progress shows live.
6
Review the results
After import you see:
- Imported — new contacts created
- Updated — existing contacts merged on email/phone match
- Skipped — rows that couldn’t be parsed (with row numbers + reasons)
Deduplication during import
Imports respect the same dedupe rules as everything else: a row whose email or phone matches an existing contact updates that contact rather than creating a duplicate. So you can re-import the same CSV without creating doubles.Status during import
If your CSV has a status column, we apply it as long as it’s one of the lifecycle stages:lead, qualified, opportunity, customer, lost. A value we don’t recognize (including custom pipeline-stage names — those belong to deals, not contacts) falls back to Lead; the contact still imports.
Privacy
Imported data is only ever visible to your organization. We don’t share, sell, or analyze it for any purpose other than running ServiceBooked for you. Deleting a contact is permanent — there’s no recovery window, so re-import the CSV if you remove one by mistake. See deleting a contact for everything that gets removed with them.Common gotchas
- Phone numbers in weird formats: we handle most variants (
(613) 555-0100,613-555-0100,6135550100,+16135550100) but some international formats trip us. Skipped rows will tell you why. - Business-only contacts: if your spreadsheet has rows that are companies without a person attached, set
first_nameto the company name (e.g., “Acme HVAC Inc.”) and leavelast_nameblank. Better than skipping the row. - Custom fields: not currently supported on import. If you have data ServiceBooked doesn’t model (e.g., “warranty expiration date”), put it in the
notesfield for now.
Next
Tags
Organize contacts after import.
Statuses
What each pipeline stage means.