When to use dynamic vs static
Use dynamic when:- Membership is rule-based (“paid users”, “tag = newsletter”).
- The list grows or shrinks naturally over time.
- You want a sequence to keep enrolling new matches.
- You imported a one-time list (event RSVPs, beta cohort).
- You need a frozen list for compliance or audit.
- You’re sending to a hand-picked group that doesn’t share a clean rule.
Examples
Three filters that cover most real use cases:- Engaged customers
- Fresh leads
- Active subscribers
“All customers who opened the last 3 emails”Use this for product updates and high-trust offers — you know they’re paying attention.
The flow
Open the audience editor
Go to
/dashboard/marketing/email/audiences and click New audience > Dynamic.Compose the filter
Each row is one predicate. Pick a field, an operator, and a value:
- Field —
lifecycle stage,tag,last opened at, custom property, etc. - Operator —
IS,IS NOT,CONTAINS,WITHIN,IS EMPTY. - Value — text, date, or boolean depending on the field.
Preview membership
Click Preview. You’ll see:
- Total matching — how many contacts hit the filter.
- Sendable — total minus suppressions, hard bounces, and missing addresses.
- A 25-row sample — verify the filter is doing what you think.
AI-assisted audience building
The Email Coach can write the filter from a sentence. From any email page sidebar, try:- Build an audience of paid users in California who opened the last newsletter.
- I need people who clicked any link in the last 30 days but haven’t bought yet.
- Audience of contacts tagged
webinar-attendeewho are still leads.
Re-evaluation timing
Dynamic audiences re-evaluate at three moments:- In the editor — when you click Preview or save.
- At schedule time — the picker shows the current count.
- At send time — the actual recipient list is materialized from the live filter.
Membership snapshots
Even on a dynamic audience, the actual contacts that received a campaign are recorded inmarketing_audience_membership. So:
- Reports stay accurate even if the filter shifts later.
- “Re-send to non-openers” works against the original list.
- Compliance audits can prove who was sent to.
Refining over time
A common pattern: your dynamic filter starts loose (“all customers”), then tightens as you learn (“all customers who opened in the last 60 days”). To refine without breaking history:- Duplicate the audience in the editor.
- Tighten the filter on the duplicate.
- Verify with a preview.
- Switch your sequences and campaign templates to reference the new audience.
- Archive the old one.
Troubleshooting
Preview shows zero matches
Preview shows zero matches
Most common cause: tag spelling. Tags are case-sensitive —
Newsletter and newsletter are different. Open a known-good contact, copy the tag value verbatim into your filter.Second most common: AND’d a Last opened at WITHIN 30 days filter on a brand-new list where nobody has opened anything yet.Audience is much bigger than expected
Audience is much bigger than expected
Three things to check:
- You OR’d two conditions instead of AND’ing them.
- The default unsubscribe exclusion is off.
- A
Tag CONTAINS newsletteris matching all variants of the tag (newsletter-monthly,newsletter-weekly). Use exact match (Tag IS).
Same contact appears in two audiences I expected to be exclusive
Same contact appears in two audiences I expected to be exclusive
Audiences aren’t mutually exclusive by default — overlapping filters can put the same contact in both. Either tighten one filter to explicitly exclude the other’s tag, or use the Subtract another audience option in the editor.
Membership keeps changing between preview and send
Membership keeps changing between preview and send
By design — that’s what “dynamic” means. If you need a stable list, convert to static before scheduling.
Related
Audiences reference
Full reference for static and dynamic audiences.
Send your first campaign
Use your new audience in a broadcast.