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 walks each screen for when you want to understand exactly what each choice does.
Drop in a .CSV, then pick an import mode.
Tell Exabloom which column is the name, the phone number, and so on.
Name the import and press Submit. It runs in the background.
Prepare your spreadsheet
A few minutes tidying the file beforehand saves you a messy results screen later. The importer reads a plain .CSV - other formats aren’t accepted - with one row of headers at the top and one contact per row after that. This is the shape to aim for:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | First Name | Mobile | Tags | Notes |
| 2 | Mei Ling | +65 8123 4567 | spring-open-house | Trial booked |
| 3 | Arjun | +65 9876 5432 | spring-open-house | Referred by Jane |
| 4 | Priya | +65 9123 4455 | spring-open-house | |
| 249 | … | |||
- One header row. The first row should be column titles (First Name, Mobile, Email…), not a real person.
- Phone numbers in full. Write +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 - only the first is used.
- Tags in one cell. Put one or several tags in a Tags column, separated by commas. New tags are created for you.
- Dates in a consistent format. If you’re importing into a date or time custom field, keep one format throughout (for example DD/MM/YYYY) - you’ll tell Exabloom which one during mapping.
Here is the same idea gone wrong. Every red cell below would end up in the Unprocessed count:
| A | B | C | |
|---|---|---|---|
| 1 | First Name | Mobile | Joined |
| 2 | Mei Ling | +65 8123 4567 | 15/09/2024 |
| 3 | +65 9876 5432 | 16/09/2024 | |
| 4 | Arjun | +65 8123 4567 | 17/09/2024 |
| 5 | Priya | call me | next week |
Open the importer
Open Contacts
Click Contacts in the left sidebar.
Open the Import menu, then choose Import contacts
Click Import, then Import contacts.
Upload and choose an import mode
Choose your file
Drag your .CSV onto the dashed box, or click Browse files.
Pick the import mode, then click Next
Check the file name, choose an Import mode, then click Next.
The mode is the one choice that changes what actually happens to your data, so it’s worth getting right. Exabloom matches rows to existing contacts by phone number, then the mode decides what to do with each match.
The default. New phone numbers become new contacts; numbers you already have get their details refreshed from the file.
Only adds people you don’t already have. Rows whose phone number already exists are left untouched.
Only edits people you already have. Rows with a phone number that isn’t in your contacts yet are skipped.
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.
When you arrive, Exabloom has already guessed. A column is matched automatically only when its header reads the same as an attribute (ignoring capitals): First Name, Last Name, Email, Phone, Tags, Facebook ID, Instagram ID, or the name of one of your custom fields. A header like Mobile or Phone No. is not recognised and is set to ⊘ Skipped, so a stray column never imports by accident. Columns with nothing in them don’t appear at all.
Fix what the guess missed, then click Next
Open the Contact Attribute dropdown for Mobile, pick Phone No., then click Next.
Each attribute can be used once per import - pick it for one column and it greys out for the rest. These built-in attributes are always in the list:
- 'Phone No.' attribute cannot be empty. Please map one file column to 'Phone No.' attribute.
Advanced · only if you need it
Most imports stop above. These two extras handle dates and columns that have no home yet.
- Date and time fields. Map a column to a custom Date, Time or Date time field and a format picker appears under its sample values. It opens on YYYY-MM-DD; change it to the layout your file uses (like DD/MM/YYYY). There’s a custom option for unusual patterns.
- A field that doesn’t exist yet. Click New Custom Field at the bottom of the attribute list, fill in Name, Group and Type, and Create - it’s made and mapped without leaving the import.
Select the format for 'Enrolled on' to ensure correct DATE parsing.
New Custom Field
Name
Group
Type
Name it and run
Name the import and click Submit
Type an Import name, then click Submit.
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.
Check progress, or close and carry on
When the green Import scheduled! panel appears, click Check progress.
Contacts are processed in the background, in batches of 200 rows, so a big file can take a few minutes. Your contacts list fills up as each batch lands.
Read the results
Every import is logged on the Bulk Actions page. Its Status badge moves from Creating to Processing to Completed. While it’s still running, the row’s ⋮ menu also offers Pause, Resume and Cancel.
Open Bulk Actions
Click Bulk Actions in the left sidebar (or use Check progress).
Monitor, pause, resume, and review large-scale operations across your contacts in a single place.
Show stats
Click the ⋮ beside your import, then Show stats.
Monitor, pause, resume, and review large-scale operations across your contacts in a single place.
Processed: Contacts created / updated depending on the import settings. Your total grows only with new contacts.
Unprocessed: Contact creation / update skipped due to invalid data, import settings, or duplicate phone numbers within your file.
Remove duplicate rows before uploading for cleaner results.
- 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.
Download the report to see which rows failed
Click the ⋮ again, then Download import report.
Monitor, pause, resume, and review large-scale operations across your contacts in a single place.
The report is your original file with two columns added at the right: error says why a row failed, and action says what happened to it - CREATE, UPDATE, or IGNORE. Fix the rejects in your sheet and re-import just those.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | First Name | Mobile | Tags | error | action |
| 2 | Mei Ling | +65 8123 4567 | spring-open-house | CREATE | |
| 3 | +65 9876 5432 | spring-open-house | First name is required | IGNORE | |
| 4 | Arjun | 91234567 | spring-open-house | UPDATE | |
| 5 | Priya | call me | spring-open-house | Invalid phone format in field Phone No. Unable to verify the country code and national number. | IGNORE |
| 6 | Mei Ling | +65 8123 4567 | spring-open-house | IGNORE |
Why a row doesn’t import
A non-zero Unprocessed count is normal and usually harmless. The three reasons a row gets skipped:
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.
Map First Name and Phone No., add a Tags column like spring-campaign so you can find them later, and leave anything you don’t need on ⊘ Skipped.
Upload the whole sheet - people you already have are left exactly as they are, and only the genuinely new numbers get added.
Export your contacts, fix the columns in a spreadsheet, then re-import. The export’s column names map themselves. Keep First Name and Phone No. mapped (they’re always required), and map only the columns you changed - 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 - even in Update contacts only. Everything else is optional.
- Write phone numbers in full. Start with + and the country code (for Singapore, +65…). A number with no country code is read as a number from your workspace’s own country - fine for a purely local list, wrong for anyone abroad.
- Match uses phone number alone. Two people who share a number are one contact to the importer, and a contact you hold under a different number will be created again.
- An empty cell in a mapped column can blank a saved value. On an update, the file wins for every column you mapped, including its empty cells. Skip the columns you don’t want to touch.
- Tags are only ever added. A Tags cell can hold several, separated by commas. Importing never removes a tag a contact already has.
- Big imports run in the background. After you submit, contacts are processed in batches of 200 rows. You don’t have to wait on the dialog - Bulk Actions shows the status.
- De-duplicate before uploading. Repeated phone numbers within one file are ignored, 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.