Help Center
Contacts & leads9 min read

Import contacts from a spreadsheet

Bring a list of people into Exabloom in one go — a CSV from another tool, an event sign-up sheet, or a tidy export from your old CRM. You’ll upload the file, line its columns up with the right contact details, and let it run. Here’s the model behind each step, so a thousand-row import lands the way you expect.
Before you begin
You import from the Contacts page — look for the Import button in the toolbar. Have your list ready as a .CSV file with a header row (it’s the “Save as → CSV” option in Excel or Google Sheets).
Start here

The 60-second version

Importing is a short, three-step wizard. You can stop reading after this and get a clean import — the rest of the guide is for when you want to understand exactly what each choice does.

Import Contacts
1Upload file
2Map columns
3Confirm details
Upload file
Map columns
Confirm details
Every import moves through the same three steps: upload the file, map its columns to contact details, confirm and run.
  • Upload file — drag your CSV in (or browse), then pick an import mode.
  • Map columns — tell Exabloom which spreadsheet column is the name, which is the phone number, and so on. It guesses for you; you fix the rest.
  • Confirm details — give the import a name and press Submit. It runs in the background.
Nothing happens until you submit
Uploading and mapping are just preparation inside the dialog. No contacts are created or changed until the final Submit.

Choose an import mode

This is the one choice that changes what actually happens to your data, so it’s worth getting right. After you upload a file, an Import mode dropdown appears. Exabloom matches rows to existing contacts by phone number, then the mode decides what to do with each match.

Default
Create and update contacts

The default. New phone numbers become new contacts; numbers you already have get their details refreshed from the file.

New numberCreates it
Existing numberUpdates it
Create contacts only

Only adds people you don’t already have. Rows whose phone number already exists are left untouched.

New numberCreates it
Existing numberSkips it
Update contacts only

Only edits people you already have. Rows with a phone number that isn’t in your contacts yet are skipped.

New numberSkips it
Existing numberUpdates it
Good to know
If you’re not sure, leave it on Create and update contacts. It’s the most forgiving: nobody gets skipped, and people you already have simply get refreshed.

Prepare your spreadsheet

A few minutes tidying the file beforehand saves you a messy results screen later. The import reads a plain .CSV — other formats aren’t accepted — with one row of headers at the top and one contact per row after that.

  • One header row. The first row should be column titles (Name, Mobile, Email…), not a real person. Clear, distinct titles also help the auto-mapper guess correctly.
  • Phone numbers in full. Always include the country code — +65 8123 4567, not 8123 4567. This is how a contact links up across WhatsApp and your other channels.
  • No duplicate numbers. Two rows with the same phone number can’t both become the same contact — remove repeats before uploading.
  • Dates in a consistent format. If you’re importing into a date or time custom field, keep one format throughout (e.g. DD/MM/YYYY) — you’ll tell Exabloom which one during mapping.
Don’t have a file yet?
The quickest way to get the column shape right is to Export your existing contacts first (next to the Import button), edit that sheet, and re-import it.

Map your columns

Mapping is where your spreadsheet’s columns get matched to Exabloom’s contact attributes. Each row of the table is one column from your file: its name on the left, a couple of sample values from your data in the middle, and the attribute it will fill on the right.

File Column
Sample Values
Contact Attribute

Parent Name

Mei Ling

Arjun

First Name

Mobile

+65 8123 4567

+65 9876 5432

Phone No.

Must include country code + national number

Search by field name
⊘ Skipped
Phone No.
First Name
Email · in use
Tags
New Custom Field

Notes

Trial booked

Referred by Jane

⊘ Skipped
The mapping table. Open any Contact Attribute dropdown to search the list, ⊘ Skip a column, or create a custom field on the spot.

When you upload, Exabloom auto-maps columns whose header matches a known attribute — a “Mobile” or “Phone” column lands on Phone No. without you lifting a finger. Anything it can’t place is set to ⊘ Skipped, so a stray column never imports by accident. Check its guesses and adjust.

The attributes you can map to

These built-in contact attributes are always available. Map a column to as many as apply — but each attribute can only be used once per import (pick it for one column and it greys out for the rest).

First Name*Last NamePhone No.*EmailTagsTelegram HandleFacebook IDInstagram ID
First Name and Phone No. are required
You can’t advance from mapping until one column is matched to First Name and one to Phone No. (marked above). If either is missing you’ll see a prompt asking you to map it.

Your own fields, and date formats

  • Custom fields you’ve created show up in the same dropdown. Need one that doesn’t exist yet? Click New Custom Field at the bottom of the list to create it without leaving the import.
  • Date and time fields show an extra format picker once you map them — choose the layout your file uses (like DD/MM/YYYY) so the values are read correctly. There’s a custom option for unusual patterns.
  • Skip what you don’t need. Leaving a column on ⊘ Skipped simply ignores it — the data isn’t imported, but your file is untouched.

Name it and run

The last step is a quick sanity check. You’ll see how many contacts are about to import and how many columns you mapped, plus an Import name field.

Give it something you’ll recognise later — “March newsletter leads” beats “import 7” — because that’s the name you’ll scan for on the Bulk Actions page when you check how it went. Press Submit and you’ll get an Import scheduled! confirmation: contacts process in the background, and large files may take a few minutes.

Good to know
From the confirmation you can hit Check progress to jump straight to the Bulk Actions page, or close the dialog and carry on — the import keeps running either way.

Read the results

Every import is logged on the Bulk Actions page. Find your import by name, open its menu, and choose Show stats to see how it landed.

Import results

Total

1,000

Processed

940

94%

Unprocessed

60

6%

Want the full breakdown?

Download Report (.csv)
The import results dialog: Total rows, how many Processed (created or updated), and how many were Unprocessed.
  • Processed — contacts created or updated, depending on your import mode. Your total contact count only grows by the genuinely new ones.
  • Unprocessed — rows that were skipped: invalid data, an import-mode mismatch, or a duplicate phone number within the file.

To see exactly which rows didn’t make it and why, click Download Report (.csv) in that dialog (or Download import report from the same ⋮ menu). The report lists every row with its outcome, so you can fix the rejects in your sheet and re-import just those.

“Only error contacts” won’t show import errors
In the ⋮ menu’s View contacts submenu, the Only error contacts option opens the Contacts page filtered to error rows — but for an import those rows were never created as contacts, so you’ll land on an empty list. It’s a known quirk; to inspect failed rows, use Show stats → Download Report instead.

Why a row doesn’t import

A non-zero Unprocessed count is normal and usually harmless. The three reasons a row gets skipped:

Invalid or incomplete data
A phone number with no country code, an empty First Name, or a value that doesn’t fit the attribute’s type (a word where a Number field expects a figure, a date in the wrong format).
Duplicate phone numbers in your file
If the same number appears on two rows of the same upload, only one can win — the others are skipped. De-duplicate the sheet before you upload.
Import-mode mismatch
Create contacts only skips numbers you already have; Update contacts only skips numbers you don’t. A high unprocessed count is often just the mode doing its job.
Tip
Because the import matches on phone number, a clean, fully-formatted phone column is the single biggest thing you can do to keep the Unprocessed count down.
Copy this

Setups to copy

Three common jobs and the mode that fits each. Map First Name and Phone No. in every case — the rest is up to you.

Load a fresh list of leadsCreate and update contacts

Map First Name and Phone No., add a Tags column like spring-campaign so you can find them later, and Skip anything you don’t need yet.

Top up an existing list without duplicatesCreate contacts only

Upload the whole sheet — people you already have are left exactly as they are, and only the genuinely new numbers get added.

Bulk-edit details you already storeUpdate contacts only

Export your contacts, fix the columns in a spreadsheet, then re-import. Match on Phone No. and only the mapped columns are overwritten — unmapped fields stay as they were.

Good to know & pitfalls

  • Nothing is saved until you press Submit. Uploading and mapping all happen in the dialog — close it before submitting and no contacts are touched.
  • First Name and Phone No. are mandatory. You can’t move past mapping until a column is matched to each. Everything else is optional.
  • Phone numbers need a country code. Store them in full international form (for Singapore, +65…) so they match across WhatsApp and your other channels.
  • Big imports run in the background. After you submit, contacts are processed in batches — large files can take a few minutes. You don’t have to wait on the dialog.
  • De-duplicate before uploading. Repeated phone numbers within one file are skipped, which inflates the Unprocessed count for no real reason.

Migrating from another tool?

Our Singapore-based team can help you clean up an export and get your contacts imported correctly during onboarding — just reach out.