Sometimes the audience isn’t on the platform. It’s in a spreadsheet: an event’s guest list, the overdue accounts finance sent over, a physical store’s customers who haven’t been in touch on WhatsApp yet.
In these cases, the audience isn’t built with rules. You upload the spreadsheet, say what each column means, and the platform builds the audience from what’s in it.
⏱️ Reading time: 9 min · 🟡 Level: intermediate
Before you start: the three differences that matter
What to know | Why it matters to you |
The audience is fixed | A spreadsheet audience keeps the contacts that were in the file. It doesn’t grow on its own, doesn’t recalculate and doesn’t track your base. To include more people, import another spreadsheet |
Contacts join your base | The import doesn’t create an isolated list: the spreadsheet’s contacts are added to your contact base, and the columns you map become contact information. Existing contacts are updated, not duplicated |
You declare the legal basis | Whoever uploads the spreadsheet is responsible for the data and for the consent of the people in it. Before creating the audience, you check a confirmation about this |
⚠️ Consent isn’t a detail. Importing a list of people who haven’t agreed to receive messages from your brand on WhatsApp lowers your number’s quality rating with Meta and is an LGPD (Brazil’s data protection law) issue. The spreadsheet must contain contacts with a legal basis and channel opt-in.
Prerequisites
✅ Access to Marketing > Audience Management > Audiences
✅ A CSV spreadsheet with a phone column
✅ A file of up to 6 MB, with at most 100 columns
✅ A clear understanding of the legal basis for the data you’re importing
The full process, in two steps
The screen has two steps, shown in the left menu:
Setup: audience name and description, spreadsheet upload and contact diagnosis, all on the same screen
Map columns: tell the platform what each spreadsheet column means, then create the audience
The Cancel link in the footer and the arrow next to the title take you back to the list at any time.
Setup: name, description and spreadsheet
In the side menu, go to Marketing > Audience Management > Audiences
Click New audience
In the modal, choose Imported file
Under Set up audience, fill in:
Field | What to enter |
Name | Identifies the audience in the list. Up to 24 characters. A name made only of spaces isn’t accepted: the screen shows Name is required. |
Description (optional) | Up to 100 characters. Useful for recording where the list came from, for example March event list, sent by sales |
💡 Including the date in the name helps here. Unlike a rule-based audience, this one is a fixed snapshot of a moment. March 2026 event says exactly what the audience is.
Upload the spreadsheet
Right below, the Import CSV file block asks for a spreadsheet with a phone column.
The template, if you’re just starting. Use Download in the Download the spreadsheet template block to get the file modelo-audiencia.csv, which already has the columns in the expected format. It’s the fastest way to get the structure right.
How to build the spreadsheet
Rule | Detail |
Format | CSV only. Excel or Google spreadsheets must be saved or exported as CSV |
Phone | A column with the number, including country code and area code. This is what identifies the person. Use exactly this format: |
Columns | Up to 100. Every uploaded column needs a destination in the next step, so remove anything you don’t want to import from the spreadsheet |
Size | Up to 6 MB |
Drag the file to the indicated area or click Select file. The screen shows Validating the contacts in your file… while the platform reads the spreadsheet. If the file doesn’t pass the initial check, the screen tells you why before any processing:
Message | How to fix it |
Unsupported format. Upload a .csv file | Save the file as .csv |
File too large. The limit is 6 MB | Split the spreadsheet into parts of up to 6 MB |
The file has no contacts. Check the content and try again | The spreadsheet is empty or only has the header |
No phone column found. The file must contain a column with contact numbers | Add the column with the numbers |
File has too many columns. Maximum allowed: 100 | Reduce to 100 columns or fewer |
Unable to read the file. Check that it’s a valid CSV | The CSV is corrupted or nonstandard. Export it again |
The diagnosis
Once the file is uploaded, the platform validates the contacts and shows three numbers in the same block:
Contacts identified: total rows read
Valid contacts: those that will be added to the audience
Contacts with errors: those that won’t be added
When there are errors, you’ll see the message N contacts won’t be included in the audience and the Download spreadsheet with errors button. It generates a file named after the original with the suffix erros, containing the problem rows. The recommended approach is to fix those rows in the original file and import again, instead of leaving contacts out without knowing who they are.
Replacing or removing the file restarts validation and clears anything already mapped in the next step.
💡 Most errors are phone-related: numbers without a country code, missing digits, spreadsheet formatting or duplicates within the file.
Go to the next step
The Continue button is enabled once the name is filled in and the spreadsheet has been validated.
If there are still contacts with errors, the screen asks Continue without the contacts with errors? and tells you how many will be left out. Continue proceeds with only the valid ones. Go back and review keeps you on this step so you can fix the file.
Map columns
This is the step that gives the spreadsheet meaning. The screen shows each spreadsheet column side by side with the platform field that will receive its content.
Review the suggested mappings. When the platform recognizes a column by its name, the destination is already filled in, with a green mark
For the rest, marked in red, open the selector and choose a destination from the Platform fields group (Name, Phone, Email or City) or, in the Custom fields group, information that already exists in your account
If the information doesn’t exist on the platform yet, choose Create new field in the Customize group and set:
What to set | Detail |
Type | Text, Number, Yes or no, Date or List. The type determines how you’ll be able to filter by this field later. When the platform recognizes the column’s content, the type is already suggested |
Name | Up to 64 characters. It can’t repeat the name of another field created in the same import |
⚠️ Every column needs a destination. There’s no option to skip a column: while any column is unmapped, its row shows Select an option to map this column. and the create button stays disabled. If you don’t want to import a column, remove it from the spreadsheet before uploading.
💡 A field created here becomes part of the contact, not just this audience: it’s available for segmentation in rule-based audiences and as a variable in message templates. See how to make the most of this in Use imported contacts in a rule-based audience, below.
To go back to the previous step, click Setup in the left menu. There’s no back button in the footer.
Create the audience
Below the table, check the confirmation The base being imported complies with OmniChat’s Terms of Use and has agreed to receive messages via the WhatsApp channel. The Terms of Use link opens the document. Without this check, the create button stays disabled
Click Create audience. If the button is disabled, hover over it: the tooltip tells you what’s missing, whether mapping a column or checking the confirmation
The screen confirms with Audience created. You can now create targeted campaigns with this audience. and returns to the Audiences list.
⚠️ The import finishes in the background. In the list, the new audience shows a Processing tag next to its name. The edit, delete and view details buttons are visible but disabled, with the tooltip Available when the import finishes. Large spreadsheets take a few minutes. When it’s done, the tag disappears and the buttons start working.
If the import fails after being accepted, the row stays in the list with an Error tag and an Import again action. It opens the spreadsheet screen with the name and description already filled in, so you can upload the file again.
If something fails during creation, the screen shows Unable to create the audience.
Try again in a few moments. and you stay on the step with everything filled in. The same happens when every contact in the spreadsheet had an error: with no valid contacts, there’s nothing to import.
After creating
The audience appears in the Audiences list with the source Imported file, and it’s used in campaigns like any other. What changes is what you can do with it.
Action | How it works for a spreadsheet audience |
View details | Shows name, description, source, size and where the audience is in use. There are no rules to display, because there are none |
Edit | Lets you fix the name and description, via the pencil next to the title, and work on the contact list. The name must be unique here: if another audience already uses it, the screen warns you |
Remove contact | Removes the person from that audience and keeps them in your contact base. The confirmation states this explicitly |
Search contact | The edit screen has a search by contact name, useful for large lists |
Add more contacts | Not possible within the audience. Import a new spreadsheet |
Delete | Removes the audience from the list, reversibly, without deleting any contacts |
For everything else (search, filters, details, deletion and restoring), see How to manage your audiences.
Use imported contacts in a rule-based audience
The spreadsheet audience is fixed, but its contacts aren’t tied to it. Since the import adds people to your contact base, you can combine them with any other platform data in a Platform contacts audience: people from the event list who live in São Paulo, people from a specific store’s list who haven’t bought in the last 30 days, people who are on two lists at once.
The Imported via spreadsheet category
In the rule builder, the Imported via spreadsheet category finds people who joined the base through an import within a period. It’s an event, so it starts with the time window, like Orders: imported in the last 7 days. Combine it with another rule to refine.
Rule 01
Imported via spreadsheet, in the last 7 days
AND
Rule 02
Contacts
City is equal to São Paulo
💡 Combine with data that already exists. People who came from the spreadsheet and later bought, replied to a campaign or were tagged in Conversations have those events in the base like any other contact. The rule-based audience sees all of it.
Use in a campaign
Go to Marketing > Campaigns and start a new campaign
In the audience field, search by name and choose the imported audience
Since the audience is fixed, the copy sent to the campaign is the imported list itself, with no recalculation.
Behaviors that often surprise people
What happens | Why |
The audience’s contact total is lower than the number of rows in the spreadsheet | Contacts with errors weren’t added, and duplicate phone numbers count only once |
The audience didn’t grow after the base grew | A spreadsheet audience is a fixed snapshot. It only changes with a new import |
A spreadsheet column doesn’t show up as a filter later | It may have been mapped to a different field than you expected. Check the mapping on the next import |
You can’t replace the spreadsheet of an audience that’s already been created | The source is set at creation. Create another audience with the new file |
A contact removed from the audience is still in the base | This is the expected behavior: removal applies to the audience, never to your contact base |
The audience appeared in the list with a Processing tag and disabled buttons | The import is still running. When it finishes, the tag disappears and the buttons are enabled |
Every contact in the spreadsheet had an error and the audience wasn’t created | With no valid contacts, there’s nothing to import, and the screen says the audience couldn’t be created. Fix the file and import again |
FAQ
Can I upload an Excel spreadsheet? Not directly. Save it as CSV before uploading.
What’s the contact limit per spreadsheet? The practical limit is the file size, 6 MB, and the 100 columns.
Does the import delete contacts that already exist in my base? No. Existing contacts are updated with the spreadsheet information; new ones are created.
Do I need to map every column? Yes. There’s no option to skip a column. Remove from the spreadsheet anything that shouldn’t be imported.
I created a new field by mistake. How do I fix it? The field becomes part of the contact record, so the fix isn’t in the audience. In this case, contact Support through the platform.
How do I add more people to an audience that’s already been created? By importing a new spreadsheet. The existing audience doesn’t receive new contacts.
Can I delete contacts in bulk on the edit screen? No. Removal is done one contact at a time. For a very different list, it’s better to import another spreadsheet.
Does the spreadsheet audience appear alongside the others in the list? Yes, with the source Imported file, and the source filter separates them.
Can I use the spreadsheet contacts in a rule-based audience? Yes. Through the Imported via spreadsheet category, which filters by import period, like a column that identifies the list.
Was this article helpful? Leave your feedback! :)
