Your customer list is rarely in your phone. It is in a spreadsheet, a booking system, a CRM, or an export from whatever software runs your business. Getting it into a form you can text is a five-minute job that goes wrong in about four predictable ways.
The file you want
A CSV — comma-separated values — is a plain text file where each line is a contact and each field is separated by a comma. Every spreadsheet and nearly every business system can export one: in Excel or Numbers, File ▸ Export ▸ CSV; in Google Sheets, File ▸ Download ▸ Comma-separated values.
A workable file looks like this:
name,surname,phone
Marco,Rossi,+393401234567
Giulia,Bianchi,+393391234568
Anna,Verdi,+393281234569
The first row names the columns so the import knows which is which. Keep the names simple — name, surname, phone — and put one contact per row.
Phone numbers: the part that actually breaks
Four traps, in the order you will hit them.
Excel eats the leading zero. A number stored as 0340 1234567 is interpreted as a number, and the leading zero disappears — leaving 3401234567, which may or may not still work depending on the country. Format the phone column as Text before pasting numbers in, or prefix each value with an apostrophe ('0340...).
Scientific notation. A long number in a numeric cell can become 3.40123E+11. The original digits are gone. Same fix: format as Text first.
Missing country codes. Numbers stored as local (340 1234567) work only while you send inside that country. The international format — +39 340 1234567 — always works and removes the ambiguity. If your list is entirely domestic you can get away without it, but adding it costs nothing.
Spaces, dashes and brackets. +39 (340) 123-4567 is readable to humans and messy to parse. Most importers cope, but stripping formatting down to +393401234567 removes any doubt.
Encoding: the reason your names have question marks
If your list contains accented characters — Nicolò, Müller, Hernández — export the file as UTF-8. Anything else and those characters arrive as ? or ò, which then goes out in a personalised message with the recipient’s own name mangled.
Excel on Windows is the usual culprit: its default CSV export uses a regional encoding. Look for “CSV UTF-8” in the export dialog, or export from Google Sheets, which is UTF-8 by default.
Importing and what happens next
Both our apps import CSV into a distribution list. Once the contacts are in:
- The list is stored in the app, separately from your phone’s address book, so importing 400 customers does not flood your Contacts.
- The name fields feed the
{name}and{surname}placeholders for personalised messages. - On Android, the Smart Cleaner will flag duplicates and numbers that cannot possibly be valid — worth running immediately after any import.
Nothing is uploaded. The file is read on your phone and stays there, which is the direct consequence of sending through your own device rather than a gateway.
Before you text an imported list
An imported list deserves one extra question that a list built from your own contacts does not: where did these numbers come from, and did these people agree to be texted?
A CSV from a booking system where people gave a number to receive appointment reminders is one thing. A list bought from someone, or scraped, or exported from a system where the numbers were collected for a different purpose, is another — and texting it is both illegal in most jurisdictions and a fast route to being blocked by carriers. Consent and opt-out covers what is actually required.
Step by step
- Export from your source system as CSV, choosing UTF-8 if you are offered the choice.
- Format the phone column as Text before touching it in a spreadsheet, so leading zeros and long numbers survive.
- Normalise the numbers to international format (
+39...), stripping spaces and brackets. - Add a header row naming the columns —
name,surname,phone. - Import into the app as a distribution list.
- Run a duplicate and validity check, then send a test to yourself before the real send.
Questions people ask
What CSV format do I need?
One contact per row, a header row naming the columns, and UTF-8 encoding. Name, surname and phone are the fields that matter.
Why did my phone numbers lose their leading zero?
Because the spreadsheet treated them as numbers. Format the column as Text before entering or pasting the values, and re-export.
Do imported contacts get added to my phone’s address book?
No. They live in the app as a distribution list, which keeps a 400-customer import out of your personal contacts.
Do I need the country code?
Not for a purely domestic list, but international format removes all ambiguity and costs nothing to add.
Are my contacts uploaded anywhere when I import?
No. The file is read on the device and the list stays on the device. Nothing is sent to a server.
Can I import from Excel directly?
Export the sheet to CSV first. The .xlsx format is a compressed archive rather than a text file, so it is not read directly.