Skip to main content
Audiences are saved segments of your contacts. Use them to target specific groups when sending emails or starting automations.

Two Ways to Create an Audience

1

Define the audience

On the Audience page, describe what you want in the Ask Brew to filter for box. Brew generates the filters and a descriptive name automatically.Examples:
Customers who signed up in the last 30 days but haven’t opened any emails yet.
Contacts who clicked our product launch email and visited our pricing page.
Enterprise customers who have been subscribers for more than 6 months.
Review the generated filters and name, and adjust anything before saving.
2

Review who matches

Brew shows the filters that define your audience plus a preview of matching contacts and the total count. The count includes unsubscribed members; a send skips them.
3

Name and save

Click Create new audience in the bar at the bottom of the page and name it. The audience is now available when sending emails or starting automations.To change a saved audience, open it and edit its filters. The bar then also shows Save, which updates the audience in place.

Create with an Agent or API

Call create_audience over MCP, brew.audiences.create in the TypeScript SDK, brew-cli audiences create --input in the CLI, or POST /v1/audiences with a name and filter definition. These paths save the same audiences as the app. Saved audiences resolve omitted filter types from the brand’s field registry before counting and saving. If tier is registered as a number, this filter excludes tier 10:
Explicit types remain supported. Unknown fields use string comparisons; supply their type when you need a typed comparison. For date ranges, pass type: "date" so request validation can parse the operands.

Size and Edit an Audience from an Agent or Code

  • Current size. An audience’s stored count is cached. GET /v1/audiences/{audienceId}?include=count (or list_audiences with include: ["count"]) computes it fresh. Either way it counts every member, unsubscribed ones included.
  • Counts and breakdowns. search_contacts or POST /v1/contacts/search with count: true returns how many contacts match. Add groupBy (up to two fields, or emailDomain) or bucket (day, week, or month) for a breakdown.
  • Copy. create_audience with sourceAudienceId, or POST /v1/audiences/{audienceId}/duplicate, copies the filters. Contacts aren’t copied; both audiences match the same contacts.
  • Add or remove specific people. update_audience takes addEmails and removeEmails.

Using Saved Audiences

Saved audiences appear in two places:
  1. The Audience page. Click the chip showing the selected audience to switch between saved ones
  2. The send dialog. When sending an email or starting an automation, pick a saved audience as the recipients
For any selected audience, you can:
  • Download as CSV. Export the matching contacts
  • Validate contacts. Run a deliverability check on every contact in the audience (2 credits per address)
  • Delete audience. Remove the audience definition (your contacts stay; just the saved filter is removed)
Deleting an audience is permanent. The filter and configuration are gone. Your contacts aren’t affected.
Audiences are dynamic. Brew stores the filter criteria, not a frozen list of contacts. As contacts are added, updated, or change engagement, they automatically enter or leave audiences based on the filters.One exception: an audience built from more than 100 email addresses saves a snapshot of the contacts that existed then. A contact added later isn’t backfilled, so build a new audience to include it.

Engagement Snapshots

A saved audience filters on what a contact is: their properties, their status, whether they have ever opened or clicked. It cannot filter on when that happened. Engagement lives in your event history, not on the contact record. For a cohort like “everyone who opened in the last 30 days”, build it from events instead. Over MCP, create_audience_from_events freezes the matching contacts into an audience. From code, POST /v1/audiences/from-events takes the same fields:
  • Events. One to 10 event types, such as opened or clicked.
  • Window. A fixed date range of up to 90 days, or the window of one send.
  • The opposite cohort. cohort.exclude keeps everyone in a base audience who did not match. That’s how you build “no opens in the last 60 days”.
  • Wait for it. The audience can’t be sent to until its build is ready. Check with list_audiences and include: ["build"].
  • What it saves. Each build adds a date field that stamps every member with their latest matching event. Don’t delete that field while a build is queued, or the build fails. A failed build needs a new snapshot.
  • The base is copied. cohort.exclude copies the base audience’s filters when the build starts. Editing or deleting the base later doesn’t change the snapshot. A base whose filters use OR is refused.
The tradeoff is in the name. A snapshot is frozen at the moment you create it, so it doesn’t re-evaluate the way a saved filter does. Rebuild it when you need it fresh.

Common Audience Patterns

A time window on opens or clicks needs an engagement snapshot, because a saved filter can’t tell when engagement happened. Rebuild the snapshot to refresh it.
  • Highly engaged. Opened or clicked in the last 30 days
  • Moderately engaged. Opened or clicked in the last 90 days
  • At risk. No opens in the last 60 days but previously active
  • Inactive. No engagement in 90+ days
  • Power users. Used a specific feature more than X times
  • Recent buyers. Last purchase date after a fixed date, such as 30 days ago
  • Cart abandoners. Started checkout but didn’t complete
  • High-value. Total spend above a threshold
  • By role. Group by job title or department
  • By industry. Target specific verticals
  • By company size. Small business vs enterprise
  • By geography. Region or country
  • New subscribers. Joined in the last 7 days
  • Trial users. Currently in trial
  • Recent converters. New paying customers
  • Long-term customers. Subscribed 6+ months
To send one email in a version for each segment, follow Send a Segmented Newsletter.

Best Practices

Start with engagement tiers

Build basic engagement segments (highly engaged, moderately engaged, dormant) before getting fancy.

Use descriptive names

Name audiences so your team understands their purpose. Active Enterprise Trials Q2 beats Audience 7.

Smaller is better

Targeted audiences usually outperform broad sends.

Test before scaling

Validate messaging with a small audience before sending to a large one.

Need Help?

Our team is ready to support you at every step of your journey with Brew. Choose the option that works best for you:

Search Documentation

Type in the “Ask any question” search bar at the top left to instantly find relevant documentation pages.

Ask ChatGPT or Claude

Click here to open the Copy page menu at the top of this page, then send the page to ChatGPT, Claude, or your editor.