Skip to main content

How to create an audience from a spreadsheet

This guide walks through the full process: what the spreadsheet needs to include, how to read the diagnosis of contacts with errors, and what changes afterward. A spreadsheet audience behaves differently from a rule-based audience.

P
Written by Produto Omnichat

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:

  1. Setup: audience name and description, spreadsheet upload and contact diagnosis, all on the same screen

  2. 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

  1. In the side menu, go to Marketing > Audience Management > Audiences

  2. Click New audience

  3. In the modal, choose Imported file

  4. 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: +5511999999999

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.

  1. Review the suggested mappings. When the platform recognizes a column by its name, the destination is already filled in, with a green mark

  2. 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

  3. 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

  1. 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

  2. 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

  1. Go to Marketing > Campaigns and start a new campaign

  2. 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! :)

Did this answer your question?