Skip to main content
Your project builds up contacts on its own as people message your bot. But if you already have a customer list — in a spreadsheet, in your CRM, in an old system — you can bring it straight in and broadcast to those people without waiting for them to message first. Go to Broadcasts → Contacts and click Import at the top of the list. If you have no contacts yet, the Import contacts button in the middle of the empty list opens the same wizard. Your new contacts appear in the list straight away, without reloading the page.
Anyone who can see the Broadcasts tab can import — you don’t have to be the project owner or an admin.Importing does need the Broadcasts tab to be switched on for the project. If you can’t see it, turn Broadcasts on from the card in Settings → Project.
Importing used to live on a Contacts card in Settings → Project. That card is gone — importing now sits next to the contact book it fills.

Two ways in

Upload CSV takes a file. Paste takes numbers typed or pasted in, one per line:
Either a bare number, or a name and number separated by a comma. Whichever you use, click Validate first. Nothing is imported until you’ve seen what Paige made of your list.

Matching your columns

Any spreadsheet works — you don’t have to rename your columns. After you choose a CSV, Paige shows you a short mapping step: for each of its own fields — Number, Name, Tags, Opted in — you pick which column of your file feeds it, with the first few rows shown underneath so you can check you’ve got the right ones. If your file already uses the names name, number, tags or opted_in, they’re filled in for you and you can go straight on. A few things this step handles that used to sink an import:
  • Names split across two columns. If your export has First Name and Last Name, map one to Name and click Second column to add the other. Paige joins them with a space.
  • Columns with no heading, or two columns with the same heading. They’re still listed separately — as Column 3 (unnamed) and Phone (column 5) — so you can tell them apart.
  • The wrong file. Choose another file takes you back without starting over.
Only Number is required, and Validate stays greyed out until you’ve picked it.

CSV format

You don’t need these exact names — the mapping step above handles whatever your file calls them. Use them and Paige matches your columns for you: A file with nothing but a column of numbers works too — no header needed.
If you’re putting several tags in one CSV cell, separate them with semicolons rather than commas — a comma inside an unquoted cell splits the column and your import comes out wrong.

Numbers without a country code

This is where imports usually go wrong. Paige needs to know which country a number belongs to. If your list has full international numbers (+27 82 123 4567), you’re fine. If it has local ones (082 123 4567), you must type your country’s two-letter code into Default country — ZA for South Africa, GB for the UK, US for the States.
Default country is empty by default. Import a list of local-format numbers without filling it in and every single row is rejected as invalid. Nothing is imported and it isn’t obvious why. If your validation summary says everything is invalid, this is almost always the reason.

What validation tells you

Three numbers:
  • ready — will be imported.
  • duplicate — already in your project. Skipped.
  • invalid — couldn’t be read as a phone number. Skipped. You’ll see the first few so you can spot the pattern.
Then Import does it, and tells you what happened: Imported 47 contacts, skipped 3 duplicates, 2 invalid.
Duplicates are skipped, never updated. Re-importing someone with a corrected name or new tags does nothing — they’re already there, so the row is ignored.To change the tags on people who are already in your list, don’t re-import — use Broadcasts → Contacts, where you can tag many at once, or tag one person from the Conversations tab. For anything else about an existing contact, edit them in the database.It also means an import never undoes an opt-out: someone who opted out comes back only by replying START themselves. See Opting out and back in.
You can import up to 50,000 rows at a time.

After importing

Imported contacts are immediately available to segments and broadcasts — segments resolve live, so counts update with no refresh. One thing to expect: Paige doesn’t yet know whether these numbers are on WhatsApp, because nobody has tried to message them. Your first broadcast is what finds out. Expect some Not on WhatsApp failures on that first send — it’s normal for an old list, and those numbers are excluded from every audience afterwards, so it only happens once.