# Importing members from a spreadsheet

> Upload a CSV or Excel list of the people in your WhatsApp groups to see who has joined, pre-fill their profiles and, if they agreed, invite them.

Source: https://milvao.com/help/community/importing-members · Updated 2026-11-06

## Key takeaways

- Imported people are saved as people who haven't joined yet. They aren't members, get no requests and aren't in any directory.
- Nobody is messaged when you import. Invites are off until the owner turns them on and confirms these people agreed to hear from the community.
- When someone on the list sends JOIN, Milvao shows them the details you imported and saves them only if they tap Yes.
- The Who has joined view shows, per group, how many people from your lists have joined, for example 142 of 200.
- People who haven't joined are deleted after 90 days, and the uploaded file is deleted as soon as the import is done.

You can upload the member list you already keep for your WhatsApp groups. Milvao keeps each person as **someone who hasn't joined yet**: not a member, never offered a request, not listed anywhere. The list then does three things:

- shows how many people from each group have joined, for example **142 of 200 joined**;
- saves people typing: when someone on the list sends JOIN, Milvao shows them the details you imported and asks **Is this right?**;
- if they agreed to hear from your community on WhatsApp, lets you send each person one invitation with their join link.

Only the **owner** can import and send invites. Operators can see who has joined, copy join links and remove people from the list.

## Format your file

Your file needs a header row, then one row per person, and a column with each person's phone number. Everything else is optional. The quickest start is the sample: on **Import members**, under **File format**, click **Download sample CSV**. It has the columns below and four rows of made-up people. Replace them with your own and keep the header row.

| Field | Needed | Header names Milvao recognises | Example |
|---|---|---|---|
| **Phone number** | Required | Phone, Phone number, Mobile, Mobile no, WhatsApp, WhatsApp number, WA number, Cell, Telephone, Contact number | +91 98765 00001 |
| **Name** | Optional | Name, Full name, Member name, Your name, Display name, First name | Asha Example |
| **City** | Optional | City, Town, Location, Based in | Mumbai |
| **Skills** | Optional | Skills, Services, Expertise, Helps with, Speciality, Profession, Occupation, Category, Industry | Accounting, Tax filing |
| **Group** | Optional | Group, Chapter, Batch, Cohort, Circle | Main group |
| **Profile questions** | Optional | The question's label or key | Depends on the question |

Your column names don't have to match this list. Milvao uses the names to guess which column is which, ignoring capital letters and punctuation, and after you upload you choose the column for each field yourself. When a file has both a **WhatsApp number** and a **Phone** column, the WhatsApp one is suggested. Columns such as email or address are ignored unless you match them to a profile question.

The **File format** section also lists the exact names of your groups, cities, skills and profile questions, so you can copy them into your file.

### Phone numbers

- A number that starts with **+** or **00** is read with its own country code, for example +44 7700 900004.
- A number without + or 00 gets the **Default country code** you choose when you match the columns (India unless you change it). With India, 98765 00001, 098765 00001 and 91 98765 00001 all become +91 98765 00001.
- Spaces, dashes, dots, brackets and slashes are fine.
- A number with letters in it, such as "98765 00001 ext 2", isn't valid. Neither is one that's too short or too long for its country. Indian mobile numbers have 10 digits and start with 6, 7, 8 or 9.
- One number per cell. If a number appears on two rows, only the first row is used.

To import people from several countries in one file, write their numbers with + and the country code.

### Names, cities, skills and groups

- **Name**: the person's full name in one column, 2 to 60 characters. If your file has first and last names in separate columns, join them into one column first. A name that is only digits is left out. The person sees the name when they join and confirms it.
- **City** and **Skills** are matched to your community's lists by name, ignoring capital letters, spaces and punctuation, so "tax filing" matches "Tax Filing". Values that aren't in your lists show up when you check the file, and you can add them there.
- **Skills**: put several in one cell, separated by commas, semicolons, a vertical bar (`|`) or line breaks. Up to 10 per person are used.
- **Group**: the group's name as it appears in **Groups and links**. Rows with an empty group cell, or a group Milvao can't find, use the **Default group** you choose.
- **Profile questions**: one column per question. For a choice question, write the option's label, for example "Yes" or "Retail", not its number. For a question with several choices, separate them with commas. An answer that doesn't fit the question, such as text in a number question, is left out and the rest of the row is still imported.

### CSV and Excel tips

- **Keep phone numbers as text in Excel.** Select the phone column, choose **Format Cells → Text**, then type or paste the numbers. Otherwise Excel drops the leading + and can show long numbers as something like 9.19877E+11. A file saved that way has lost digits, and those numbers come out wrong or not valid.
- Excel files: only the **first sheet** is read, and formulas aren't recalculated (the saved value is used). Old **.xls** files: open them and save as .xlsx or .csv first.
- CSV files can use commas, semicolons or tabs between columns. Save as **CSV UTF-8** if names have accents or non-English letters.
- Empty rows are skipped. Row numbers in the report match the row numbers in your spreadsheet.

### Limits

| Limit | Value |
|---|---|
| File types | .csv, .tsv, .txt or .xlsx |
| File size | 5 MB |
| Rows | 5,000 people per file. Split bigger lists into several files |
| Columns | 50. In a .csv, columns after the 50th are ignored. An Excel file with anything past column 50 (AX) or row 5,050, in any sheet, is refused: delete the extra rows, columns or sheets, or save the list as .csv |
| Cell length | 500 characters. City and skill values are cut at 60 characters |

### Rows with problems

Nothing is saved until you confirm, so a file with mistakes is safe to upload. When you click **Check the file**, Milvao lists the rows it will skip and why: no phone number, a number that isn't valid, a repeated number, someone who is already a member or already imported, or someone who asked not to be messaged. Rows with an unknown city, skill or group, or an answer that doesn't fit, are still imported without that value. The table in step 5 below explains each line of the report, and **Download report** gives the row numbers so you can fix your file and upload it again.

## Import a list

1. Open **Members** and click **Import**.
2. Under **Upload a list**, click **Choose a file** or drop the file on the box.
3. **Match the columns.** Milvao guesses from your header names. For each field, choose the column it comes from, or **Not in the file**. Choose the **Default country code** and a **Default group** for rows without a group.
4. Click **Check the file**. Nothing is saved yet.
5. Read the report. It shows how many rows can be imported, and the row numbers of any that can't:

| In the report | What it means |
|---|---|
| **Rows without a phone number**, **numbers that aren't valid** | These rows are skipped. Fix them in your file and import again |
| **Repeated numbers in the file** | Only the first row for a number is used |
| **Already members** | They have joined already, so they are skipped |
| **Already imported earlier** | They are on an earlier import, so they are skipped |
| **Asked not to be messaged** | They replied STOP or NO to an earlier invite, so they are never imported again |
| **Answers that don't fit** | The row is imported without that answer, for example text in a number question |
| **Cities**, **Skills** not in your lists | The row is imported, but the value isn't suggested to the person. Tick values and click **Add to your lists** to add them, then the file is checked again |
| **Groups** not found | Those rows use the default group |

   **Download report** gives the same list as a spreadsheet: row numbers and problems only, never names or numbers.
6. Click **Import [number] people** and confirm.

The people are saved, a join link is created for each group they belong to, and the uploaded file is deleted. Nobody is messaged. To stop instead, click **Cancel import**: the file is deleted and nothing is saved. A file you upload but don't import is deleted after 24 hours.

## When someone on the list joins

When a person on the list sends JOIN from the same number:

- they become a member of the group in the join link they used, and of the group from your list too, if it's a different one;
- the first message after the welcome shows the details you imported and asks **Is this right?** with **Yes, that's right** and **Change**;
- **Yes, that's right** saves the details to their profile, filling only fields that are still empty, then the usual questions continue;
- **Change** deletes the imported details and the usual questions start.

Nothing you imported reaches their profile until they tap **Yes, that's right**. Values that aren't in your lists, and answers that don't fit a question, are left out of the message.

## Who has joined

The **Import members** page shows **Who has joined** for all your imports, and **By group**: imported, invited, joined, not joined and removed. Open an import from **Imports** to see the same for that file, and the list of people who haven't joined yet, with their name and a masked number.

For each person who hasn't joined:

- **Copy join link** copies their group's join link, to send from your own WhatsApp;
- **Copy message** copies a short personal note with the link;
- the bin button removes them from the list and deletes their details.

## Invites

Invites are **off** until the owner turns them on. WhatsApp allows messages only to people who agreed to hear from you, and messages to people who didn't can get your number limited or blocked.

### Turn invites on

1. On **Import members**, switch on **Send WhatsApp invites to imported people**.
2. Read the confirmation, tick it, and click **Turn on invites**. Your name and the time are recorded.

You can switch it off at any time. Invites not sent yet are cancelled.

### Send invites for an import

1. Open the import from **Imports**.
2. Under **Invites**, click **Send invites**.
3. Tick the confirmation again (it's recorded on this import) and choose whether to **Send one reminder after 7 days** to people who haven't joined.
4. Click **Send invites**.

Each person gets one WhatsApp message from your number: "Hello from [community]. We now use Milvao for private introductions between members: ask for a service, and members who can help get a private request. Numbers are shared only when both people agree. To join, tap this link and send the message it opens: [link]. Not interested? Reply STOP and we won't message you again."

How Milvao protects your number:

| Rule | Detail |
|---|---|
| A few at a time | At most 20 a minute and 500 a day for your community, invites and reminders together |
| Quality check | Invites pause on their own when your number's quality rating isn't green, and continue when it is |
| One invite each | Never a second invite, and at most one reminder |
| STOP and NO | Anyone who replies STOP or NO is never messaged again, and is skipped in later imports |
| People who joined | Get no invite or reminder |

Invites also wait until your number is connected and the **Member invite** message template is approved by Meta. The page tells you when invites are waiting and why. To stop invites for one import, click **Stop invites** on it.

## Privacy

- Your community decides who is on the list and is responsible for having their details. Import only people from your own groups.
- Numbers are stored encrypted. Screens show only the last 4 digits.
- The uploaded file is deleted when you import or cancel, or after 24 hours.
- People who haven't joined after **90 days** are deleted automatically. The counts stay.
- The imported details of someone who joins are deleted once they tap **Yes, that's right** or **Change**.
- Removing a person, or deleting a member's data, deletes their imported details too.
- For people who replied STOP or NO, Milvao keeps only a scrambled key of their number, so they are never invited again.
- Every import, invite switch and removal is recorded in the audit log, with counts only, never names or numbers.

## Frequently asked questions

### Does importing add people to my community?
No. They stay people who haven't joined yet until they send JOIN themselves. They get no requests and appear in no directory or member list.

### Are imported people messaged?
Only if the owner turns invites on, confirms they agreed, and presses **Send invites** on an import. Otherwise nobody is messaged.

### Someone is on two of my lists. What happens?
The second import reports them as already imported and skips them. A person is on one import at a time.

### Can I import the same file again?
Yes. People already imported or already members are skipped, so only new rows are added.

### Why was a number marked not valid?
It has letters, is too short or too long, or doesn't look like a mobile number for its country. Indian mobile numbers have 10 digits and start with 6, 7, 8 or 9. Numbers from another country need + and their country code, unless you choose that country as the default. If the file came from Excel, check that the phone column was formatted as text, so no digits were lost.

### Do my column names have to match exactly?
No. Milvao suggests a column for each field from the header names, and you confirm or change each one before anything is checked. Only the phone number column is required.

### Is there a template I can fill in?
Yes. On **Import members**, under **File format**, click **Download sample CSV**. It opens in Excel or Google Sheets. Replace the made-up rows with your own.
