Apps · Marketing

Audiences

The segmentation layer every marketing app shares. An audience is a saved question — "email addresses of leads in Georgia whose status is Hot" — asked against your own records, answered fresh every time a campaign sends.

User guideApps › Audiences


The BackOffice Audiences screen listing reusable audiences with channel and source count
Audiences. Each one records the channel it resolves for and how many sources feed it.

An audience is not a list of contacts and not an entity of its own. Nothing is copied, imported or materialised. An audience stores three things:

  • a channel — Email, WhatsApp or SMS;
  • one or more sources, each pointing at an entity you already have (Leads, Customers, Contacts…);
  • a set of filters per source.

When a campaign fires, the audience is resolved: every source's records are read live, filtered, and the channel's identifier — the email address or the phone number — is pulled off each matching record. Those identifiers are deduped across sources and that is the send list.

Live means live

Because resolution happens at send time, a contact who started matching your filter yesterday is included today without you touching the audience. Edit the filter once and every campaign that targets it stays current.

The channel decides the identifier

The channel you pick at the top of the builder is not cosmetic — it decides what is extracted from each record and how it's validated.

ChannelIdentifier pulledAccepted if
EmailAn email field on the recordIt looks like an address (something@something.tld). It is lower-cased before deduping.
WhatsAppA phone field on the recordIt contains at least 6 digits. Everything that isn't a digit is stripped.
SMSA phone field on the recordSame rule as WhatsApp.

A record whose identifier is blank or fails that check is simply not in the audience. It isn't an error and nothing warns you — it just doesn't appear in the count. That's the single most common reason a count is lower than the number of records you expected.

An audience is single-channel

An email audience can only be targeted by email campaigns; a WhatsApp audience only by WhatsApp. If you want to reach the same people on two channels, build the audience twice — same entities, same filters, different channel — and each one resolves its own identifier.

Building one

Marketing → Audiences, or /audiences. The list shows Name, Channel and Sources for each saved audience; New audience opens the builder.

  1. Name it and pick the channel Name is required. Channel is Email, WhatsApp or SMS. Description is free text for your own benefit. Change the channel later and any source that hasn't had its identifier field set manually gets re-suggested for the new channel.
  2. Add an entity as a source Add entity. Until you do, the panel reads Add one or more entities (Leads, Customers…) to pull contacts from, then filter. Pick the entity from the Entity dropdown.
  3. Check the field mapping Picking an entity pre-fills two dropdowns by guessing from your field names and types. The Email field / Phone field is the one that gets extracted — the label changes with the channel. Name field is optional and only used for personalisation and for showing a human name next to the address. The pickers mark a field of the right type with ✉ or ☎ and show every other field's type after a dot, so you can see at a glance whether the guess is right.
  4. Filter the source Add filter gives you a row: field, operator, value. Add as many as you need — they are joined with AND, as the builder says: records matching ALL of these.
  5. Repeat for other entities Add a second source for a different entity with its own mapping and its own filters. The audience is the union of all of them, deduped.
  6. Watch the preview, then save The Live preview panel on the right updates about half a second after you stop typing: a big number of deliverable emails (or phones) and a sample of the actual identifiers. Create audience — or Save on an existing one.
The preview is the real thing

The preview runs exactly the same resolution a campaign runs — same filters, same validation, same dedupe. If the preview says 412, a campaign launched right now targets those 412. It is not an estimate.

Filter operators

One row per condition. Two of them — is empty and is not empty — take no value, and the value box disappears when you pick them.

OperatorMatches when the field…
is / is notExactly equals, or doesn't equal, the value. Compared as text.
contains / doesn't containContains the value anywhere. Case-insensitive.
>   ≥   <   ≤Compares numerically. Use these on numbers, not on text.
is any of / is none ofThe value is a comma-separated list; the field must be one of them (or none of them). The box hints Comma-separated.
is empty / is not emptyBlank, whitespace-only, missing, or an empty list counts as empty.
"is" is an exact text match

is compares the stored value as text, character for character. Hot does not match hot and does not match Hot lead. When you're not certain how a value is stored, use contains first, look at the preview, then tighten it.

Multiple sources and dedupe

Sources are unioned in order, and each identifier is only ever included once. If sarah@acme.example exists on both a Leads record and a Customers record, she is one recipient — and the name and source record attached to her are the ones from whichever source is listed first. Ordering your sources therefore decides which record's data personalises her message.

The same dedupe is what makes "everyone in Leads plus everyone in Customers" safe to build without worrying about overlap.

Where audiences get used

Audiences are shared. Nothing about an audience is specific to the app that sends to it.

AppHow it uses the audience
Email marketing A campaign target of kind Audience, alongside its own lists and segments. Audience recipients are sent to without becoming subscribers.
WhatsApp & SMS The campaign's audience picker lists audiences on that channel. The resolved recipients are then filtered against the channel's own opt-out list.
Omni marketing A journey enrols an audience — one enrollment per resolved recipient — and a campaign-flow step launches a channel campaign against one.

Omni requires Audiences: installing Omni installs Audiences too, because a journey with nobody to enrol does nothing.

Opt-outs are not part of the audience

This distinction matters when you're reconciling numbers. An audience resolves purely from your records. Each channel then applies its own suppression list to the result before sending:

  • SMS — a contact who replies STOP, STOPALL, UNSUBSCRIBE, CANCEL, END or QUIT is suppressed; START, YES or UNSTOP re-opts them in.
  • WhatsApp — a tenant-wide suppression list of phone numbers.
  • Email — an unsubscribe from an audience-sourced send suppresses that email address.

So an audience of 500 can legitimately send to 480. The audience count is the number of deliverable identifiers in your data; the campaign's own report is the number actually sent.

Who can do what

Opening /audiences needs access to the Audiences app. Creating or editing one needs the Manage audiences capability on top, granted per role under Settings → Module Access. Admins pass everything.

PermissionUnlocks
App accessViewing the list, opening an audience, and running the live preview.
Manage audiencesSaving. Without it the save button is disabled with the tooltip You don't have the 'Manage audiences' permission (Settings → Module Access), and the server refuses the write as well.
Admin

The builder lists every entity in the workspace and its fields, so that anyone able to build an audience can also see the shape of your data and, through the preview, a sample of real addresses. Grant the Audiences app deliberately. Background on the two permission systems is in Permissions & access.

When the number looks wrong

What you seeWhat it means
Preview shows 0 with sources added Either no record survives the filters, or the identifier field is wrong or empty. Delete the filters one at a time and watch the number come back — that isolates which one is doing it.
Count is lower than the record count Expected. Records with a blank or malformed address or phone are dropped, and duplicates across sources collapse to one.
A specific person is missing Check their record in order: does it match every filter (AND, exact text)? Is the identifier field the one you mapped? Does the value pass validation — a real @ address, or six or more digits?
The preview stays on It's still resolving. Resolution reads the source entities' records, so a very large entity takes a moment.
A source contributes nothing after an entity was deleted Sources reference entities loosely. If the entity is gone, that source silently contributes zero rather than breaking the audience. Remove the dead source.
Numeric filters behave oddly The comparison operators convert both sides to numbers. On a text field that isn't numeric the comparison is meaningless — filter that field with is or contains instead.

Where to go next