Two Ways to Create an Audience
1
Define the audience
- Create with AI
- Build by hand
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
Callcreate_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:
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
countis cached.GET /v1/audiences/{audienceId}?include=count(orlist_audienceswithinclude: ["count"]) computes it fresh. Either way it counts every member, unsubscribed ones included. - Counts and breakdowns.
search_contactsorPOST /v1/contacts/searchwithcount: truereturns how many contacts match. AddgroupBy(up to two fields, oremailDomain) orbucket(day,week, ormonth) for a breakdown. - Copy.
create_audiencewithsourceAudienceId, orPOST /v1/audiences/{audienceId}/duplicate, copies the filters. Contacts aren’t copied; both audiences match the same contacts. - Add or remove specific people.
update_audiencetakesaddEmailsandremoveEmails.
Using Saved Audiences
Saved audiences appear in two places:- The Audience page. Click the chip showing the selected audience to switch between saved ones
- The send dialog. When sending an email or starting an automation, pick a saved audience as the recipients
- 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)
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
openedorclicked. - Window. A fixed date range of up to 90 days, or the window of one send.
- The opposite cohort.
cohort.excludekeeps 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_audiencesandinclude: ["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.excludecopies 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.
Common Audience Patterns
Engagement-based
Engagement-based
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
Behavioral
Behavioral
- 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
Demographic
Demographic
- 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
Lifecycle
Lifecycle
- New subscribers. Joined in the last 7 days
- Trial users. Currently in trial
- Recent converters. New paying customers
- Long-term customers. Subscribed 6+ months
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:- Self-Service Tools
- Talk to Our Team
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.