Audiences
Segment users from their events and traits.
#What an audience is
An audience (also called a segment) is a named, reusable filter that selects a subset of your users based on their events and attributes. You build the filter in the audience builder using clauses, save it with a name, and then reference it from a flow’s entry trigger or a branch condition.
Audiences are evaluated dynamically — membership is re-computed each time the engine needs to know whether a user qualifies. They are not a static snapshot.
#Property subjects
Each clause targets a property subject. Two kinds are available:
| Kind | What it represents | Example |
|---|---|---|
user_attribute | A trait stored on the user profile, set via identify calls or Update nodes in a flow. | plan, country, lifetime_value |
event_property | A property attached to a specific event type, sent alongside the event. | trial_started.plan_name, purchase.amount |
The audience builder’s property picker shows events and their owned properties grouped together. Selecting an event property automatically scopes the clause to that event type.
#Property types and operators
Operators are derived from the property’s declared type in the event catalogue. The declared type always wins — Pushlane never infers a type from the incoming value at evaluation time.
| Type | Available operators |
|---|---|
| boolean | is true · is false |
| number | equals · does not equal · greater than · at least · less than · at most · between · is set · is not set |
| string | is · is not · contains · does not contain · starts with · ends with · is any of · is none of · is set · is not set |
| datetime | before · after · between · in the last · not in the last · is set · is not set |
| array | contains · does not contain · contains any of · contains all of · is empty · is not empty |
#Event predicates
In addition to property clauses, you can add an event predicate to your audience: a clause that checks whether the user has (or has not) performed a specific event.
| Predicate | Meaning |
|---|---|
| performed | The user has triggered this event at least once (optionally: within a recent window). |
| did not perform | The user has never triggered this event (optionally: not within a recent window). |
Both predicates support an optional time window — for example, "performed purchase in the last 30 days". The window is stored as a relative value with a unit (second, minute, hour, day, or week).
{
"subject": {
"kind": "event_property",
"name": "purchase",
"eventName": "purchase"
},
"operator": "performed",
"value": { "kind": "relative", "amount": 30, "unit": "day" }
}#Match mode
The match toggle at the top of the audience builder controls how multiple clauses are combined:
| Match | Logic |
|---|---|
| all | Every clause must be true (AND). The user must satisfy all conditions. |
| any | At least one clause must be true (OR). The user satisfies any one condition. |
#Live count
As you build an audience the builder shows a live user count. The count is debounced and computed by the count endpoint against your ClickHouse events database. It reflects users who currently satisfy all clauses.
The count response includes an exact flag. When exact: false one or more clauses could not yet be evaluated (for example, the property is not yet in your catalogue) and the count is a lower bound.
#Saving and renaming audiences
Click Save audience to persist the current clause set with a name. Saved audiences appear in the audience library and in the flow builder’s entry trigger picker.
To rename or update a saved audience, open it from the library and make your changes. Saving again calls the update endpoint (PATCH /api/audience/segments/[id]) which persists the new name and/or clause set. Flows that reference the audience by ID pick up the update automatically at the next evaluation.
#AI audience generation
The audience builder has an AI prompt. Describe the audience in plain English and the model generates a set of clauses for your review. The draft is loaded into the builder where you can edit any clause before saving.
The AI also creates audiences on your behalf when you use the flow AI builder and your description implies a specific user segment. In that case a confirmation banner appears in the flow review panel with the generated audience name.
#Using an audience in a flow
A saved audience can be used in two places in a flow:
| Location | How to use it |
|---|---|
| Entry trigger (Audience mode) | Set the entry trigger kind to Audience and pick the segment. The flow enters a user the moment they transition into membership (false → true). Add an optional cron schedule to also re-enter current members on a recurring basis. |
| Branch node condition | Pick the audience from the condition picker inside a Branch node. The yes port fires if the user is currently a member of the audience at evaluation time. |
Next: Building flows — wire your audiences into a full push journey.