Skip to content

Contact bulk import

Import many contacts at once from a spreadsheet. A short assistant walks you through four steps: pick a file, line up your columns, choose a few options, and watch the import run.

Where to find it
Contacts list → Bulk Import button
Who can use it
Team members who can create contacts

Bulk import is the fastest way to bring a list of contacts into Nextal — for example, an HR contact list you exported from another tool, or a fresh list from a client. You open the assistant, drop in a spreadsheet, tell Nextal which column means what, and the assistant creates the contacts one by one.

The Bulk Import assistant. The four steps are always visible across the top so you know where you are.

At a glance — the four steps

StepNameWhat happens
1UploadDrop in a spreadsheet — CSV or Excel, up to 10 MB. Need a starting point? Download the template right from this step.
2Map columnsTell Nextal which column in your file matches which contact field. The assistant guesses for you on common names like “first name” or “email” — review and adjust.
3ConfigurePreview your data, choose whether to skip duplicates, optionally attach tags, and pick which clients these contacts should be linked to.
4ImportWatch the progress bar. When it’s done, you’re sent to the contacts list with your new entries.

Opening the assistant

  1. Go to your contacts list

    In the top menu, click Contacts.

  2. Click Bulk Import

    You’ll find the button on the list toolbar. The assistant opens on its own page.

Step 1 — Upload your spreadsheet

Drop your file in the middle, or click to browse. The template link sits below the drop zone.

What file types work:

  • CSV (.csv) — the simplest option, opens in any spreadsheet app
  • Excel (.xlsx or .xls)

Size limit: 10 MB. If your file is bigger, you’ll see “File is too large. Maximum size is 10MB.” Try splitting it into two imports.

Wrong file type: if you drop in a PDF or image by mistake, you’ll see “Invalid file type. Please upload CSV or Excel files only.”

Need a template? Click Download Sample Template near the drop zone. You get a CSV whose header holds the 34 columns the assistant recognises — in the order of the lists below — with two sample rows. The CRM module columns are always in it; without the module, they simply stay unmapped in step 2 and are ignored.

Step 2 — Tell Nextal what your columns mean

One row per column in your spreadsheet. Pick the matching contact field from the dropdown. Required fields are highlighted in red until mapped.

You’ll see one row per column in your file. For each one, pick which contact field it should fill. The assistant tries to guess for you — if your column is called “First Name” or “Email”, it’ll be pre-selected. Review each row and adjust if needed.

The three required fields

You can’t move on until these are mapped:

Until all three are mapped, the Next button stays disabled.

What else you can import

Field names are shown in English in the assistant’s dropdown. Every field below is really saved on the contact.

For every organisation (20 fields + Notes):

CategoryFields (as displayed)
RequiredFirst Name, Last Name, Email
Basic infoPhone, Position, Department, Role, Description
PreferencesPreferred Language (en, fr, es), Communication Channel (EMAIL, PHONE_CALL, PHONE_TEXT)
ManagementStatus (ACTIVE, INACTIVE, NO_LONGER_WITH_COMPANY), Contact Manager ID
ClientsCompany (client name), Client IDs (comma-separated)
ListsTags (comma-separated)
Social mediaLinkedIn, Facebook, Twitter, Google, Website
CommentNotes (added as a comment) — see below

With the CRM module (13 more fields) — available with the CRM module (contact Nextal to enable it); without it, these fields don’t appear in the list:

CategoryFields (as displayed)
Additional contact detailsMobile Phone, Fax, Alternate Email
AddressStreet Address, City, Province/State, Postal Code, Country, Latitude, Longitude
RelationshipPriority (LOW, MEDIUM, HIGH), Source, Referred By

These fields then show up in the header and the Profile tab of the contact profile.

The assistant pre-selects a field when your column has its name, and also recognises a few common synonyms: Title or Job title → Position, Work phone → Phone, Mobile or Cell → Mobile Phone, Client → Company, Zip → Postal Code, Province → Province/State.

Columns that don’t match anything can be left as “Don’t map” — Nextal will simply ignore them.

Company takes the exact name of one of your clients (capitals, accents and extra spaces don’t matter). The contact is attached to that client. A name that matches no client is ignored: the contact is created without that link. To attach clients by their identifier instead, use Client IDs.

The Notes column becomes a comment

Notes isn’t a profile field: its content is added as a comment (a note) on the contact right after it is created, and shows up in the Comments tab. Each line of the cell becomes a paragraph. You are the author.

Small clean-ups Nextal does for you

Before each contact is created, the assistant tidies the data:

  • Emails are converted to lowercase and trimmed — so “Mary.Smith@Acme.COM ” becomes “mary.smith@acme.com”. An alternate email identical to the main one is dropped.
  • Phone, mobile and fax numbers keep only digits, plus signs, dashes, parentheses and spaces — random characters from formatting are stripped out.
  • Status — Active, Inactive or No longer with the company, in English, French or Spanish (Actif, Ne fait plus partie de l’entreprise…), or the codes ACTIVE, INACTIVE, NO_LONGER_WITH_COMPANY. An empty or unrecognised value imports as Active.
  • Preferred Language — en, fr, es or the language’s name (French, français…). Communication Channel — EMAIL, PHONE_CALL, PHONE_TEXT or the usual words (email, phone, SMS…).
  • Social links — a bare LinkedIn, Facebook or Twitter username becomes the full profile URL (https://linkedin.com/in/…). If you forget https:// on the website, Nextal adds it.
  • Tags — split on commas, trimmed, without duplicates.
  • Client IDs from your spreadsheet are merged with the Company column and with the clients you pick in the next step (no duplicates).
  • Priority (CRM module) — LOW, MEDIUM or HIGH; Hot, Medium and Cold, and the French or Spanish words, also work. Any other value is ignored — the contact is created without a priority.
  • Latitude and Longitude (CRM module) — kept only when both are given.

Step 3 — Configure your import

Preview at the top, options below. Skip duplicates is on by default. The Client Assignment picker is unique to contacts.

Preview your data

The first ten rows of your file are shown with all your mapping rules applied. This is the last chance to catch a wrong mapping before you commit. If a column looks off, click Back and adjust step 2.

Skip duplicates checkbox

Two contacts in Nextal can’t share the same email address. The checkbox tells the assistant what to do when it finds a contact whose email already exists:

  • On (default) — duplicates are silently skipped and counted as success. This is what you want when re-running an import after a failure: the contacts already created are simply ignored.
  • Off — duplicates are reported as errors. Use this when you want a clean reconciliation report of exactly which contacts in your file were already in Nextal.

Contact Import Tips

A blue box sums up the rules to know:

  • Status: Active, Inactive or No longer with the company (the codes ACTIVE, INACTIVE and NO_LONGER_WITH_COMPANY also work); an empty or unrecognised value imports as Active
  • The Company column links the contact to the client with that exact name; a name that matches no client is ignored
  • The Notes column is added as a comment on the created contact
  • With the CRM module only: Priority is LOW, MEDIUM or HIGH (Hot, Medium and Cold, and the French or Spanish words, also work); other values are ignored. Latitude and longitude are kept only when both are given

Add tags to every imported contact

Pick or type tags in the multi-select. Every contact in this import will get those tags, in addition to anything from your spreadsheet’s Tags column. Handy for tagging a whole batch with something like “imported-2026-02” so you can find them later.

Attach the batch to one or more clients

Pick the clients these contacts work for. Every contact in this import will be linked to those clients, on top of any client IDs from your spreadsheet. Perfect when you’re importing 200 HR contacts from a single agency client export — set the client once here instead of repeating its ID in 200 rows.

Step 4 — Run the import

The progress bar fills as each contact is created. Errors appear in a list below the counters.

Click Start Import and watch the progress bar. For each row in your file:

  1. Nextal applies the column mapping
  2. Runs the small clean-ups above
  3. Validates the required fields, the email format, the alternate email format and the website address
  4. Creates the contact, linked to its clients — you are its contact manager, unless the row’s Contact Manager ID names someone else
  5. Saves the tags — yours (step 3) and the row’s
  6. Adds the Notes column as a comment
  7. Pauses briefly, then moves to the next row

You’ll see three counters update in real time: Processed, Successful, Failed. Errors are listed below the bar with the row number and a short explanation (typically a missing required field or a bad email format).

When the import finishes successfully

You’ll get a notification at the top right (“Successfully imported N contacts”), and after a couple of seconds you’re sent back to the contacts list — your new entries are right there waiting.

If every row failed

No notification, no redirect. You stay on the import step with the error list visible. Read the errors, fix your file, then start over from step 1.

How this compares to the candidate import

If you’ve used the bulk import for candidates before, here’s what’s the same and what’s different:

AspectCandidate importContact import
PathsTwo: spreadsheet or a folder of CVsOne: spreadsheet only
Fields you can import2121 (34 with the CRM module)
Required fieldsFirst name, last name, emailSame
Duplicate checkBy emailSame
Extra step optionAssign to a jobAttach to clients
After successStays on the page with retry optionsSends you back to the contacts list

Tips

  • Test with three or four rows first. Trim your file down, run the assistant end-to-end, and check the resulting contacts in the list. If the column mapping was wrong, fixing four contacts is fast.
  • Use Attach to clients for client-supplied lists. If a client sends you their HR contacts, set their client once in Step 3 rather than typing the client ID in every row.
  • Leave Skip duplicates on for re-runs. If an import fails halfway through, fix your file and run it again — the contacts already created will be silently skipped.
  • Import the status. A column with No longer with the company marks departures from day one, and your team is warned before emailing those contacts.
  • A Notes column for the history. Context your previous tool kept as free text lands in the Comments tab instead of being lost.
  • Watch out for email collisions. Two contacts can’t share an email. If you find someone has two work emails on file, pick one before importing.