Audience | Marketers, Platform admins |
Prerequisites |
|
Same-session audiences allow Hightouch to evaluate audience membership continuously based on real-time events—like product views, purchases, or session activity. When users enter or exit the audience, Hightouch can sync them to your marketing tools in seconds. This supports fast-changing campaigns like same-session personalization, behavioral triggers, and immediate suppression.
Learning objectives
After reading this article, you’ll know how to:
-
Connect and evaluate audiences based on real-time events
-
Enable and configure real-time syncs
-
Understand the evaluation and sync model used
-
Decide when same-session audiences are the right approach
Overview
Same-session audiences use an in-memory evaluation engine to determine audience membership as events arrive. Instead of querying the warehouse on a schedule, Hightouch caches your audience filters and evaluates incoming data—like checkout_started
, page_view
, or order_completed
—in real time.
This is different from batch audiences, which re-run on a fixed interval and rely entirely on warehouse data.
Same-session audiences still use traits and models from your schema setup but do not run fresh SQL queries each time.
When to use same-session audiences
Use real-time evaluation when your campaign logic depends on session activity or very recent user behavior.
Use case | Method |
---|---|
Scheduled campaign refresh | Batch sync |
Triggered messages within minutes | Event streaming |
Experience changes within the same session | ✅ Same-session audience |
Examples:
-
Suppress a user from a campaign as soon as they make a purchase
-
Show a product recommendation if someone browsed a category but didn’t convert
-
Send a push notification if a user abandons checkout within the last 2 minutes
Use batch or streaming syncs for campaigns that don’t require immediate updates. Use same-session audiences when speed matters.
How it works
Same-session audiences rely on a hybrid model:
-
Audience filter logic is cached in memory
-
Events are evaluated as they arrive
-
Traits (like
LTV
,loyalty_tier
, orchannel
) are joined from the warehouse -
When a user qualifies or exits, Hightouch triggers a real-time sync
This approach enables fast updates while still using important warehouse traits.
Supported destinations
You can sync same-session audiences to destinations that support real-time delivery:
- Facebook Custom Audiences
- Google Ads Customer Match
- Braze
- Iterable
- Segment
- Amplitude
- Webhooks
See the destination catalog for updates.
Set up a same-session audiences
Step 1: Connect an event stream
Before you can evaluate same-session audiences, Hightouch must receive event data.
Step 2: Create a real-time event model
To evaluate real-time events in an audience, you first need to add a related real-time event to your parent model in the schema.
-
Go to Customer Studio > Schema
-
Locate or create a new parent model (usually Users)
-
Click the plus (+) icon next to the parent model
-
Select Create a related realtime event
-
In the Select event source screen:
- Choose the event source from the dropdown (e.g. Snowplow, Rudderstack, or Hightouch Events)
- Enter an event type (e.g.
track
,page
,order_completed
) - Define event properties by adding columns and optional aliases
- Set the timestamp column (used to filter by recency)
-
Click Continue
-
In the Configuration step:
- Give your model a name (e.g.
Checkout started events
) - Optionally, add a description
- Confirm the timestamp column
- Map the relationship back to the parent model by selecting a foreign key (e.g. user_id)
- Give your model a name (e.g.
-
Click Create realtime event to save the model
This model now appears as an event filter option in the audience builder. Once used in an audience, it will trigger real-time evaluation.
Step 3: Create or update a saved audience
-
Go to Customer Studio > Audiences
-
Create or open an audience
-
Make sure to choose the parent model connected to the real-time event model
You can convert any saved audience into a same-session audience by adding a real-time event filter.
Step 4: Add a real-time event condition
-
In the audience builder, click Add filter
-
Choose Event and select your real-time event model
- Add event conditions (e.g. "performed within last 5 minutes")
-
Click Continue
-
Finalize audience settings and click Finish
Step 5: Choose your integration method
Once your same-session audience is set up, you can deliver audience updates using one of two methods:
Method | Best for | Description |
---|---|---|
Event-driven sync | Campaign tools, CRMs, ad platforms | Pushes audience entry/exit events to supported destinations in real time |
Real-time API | Websites, apps, personalization engines | Lets you query audience membership on-demand for immediate decisioning |
Option 1: Event-driven sync
Receive real-time entry/exit events through a destination integration.
-
In your audience, go to the Syncs tab
-
Click Add Sync
-
Select a Destination
-
Under Sync frequency, select Real-time
-
Select the identifier (e.g.,
user_id
,email
) -
Choose removal behavior:
- Remove from audience
- Do nothing *Archive (if supported)
-
Click Create sync
Option 2: Real-time API pull
Use the Hightouch Personalization API to query audience membership in real time. This is ideal for same-session personalization, where your website, app, or backend needs to instantly decide which experience to show a user.
How it works:
- Your app makes a high-speed API call at the moment of interaction
- Hightouch returns whether the user is in a specific audience
- You decide how to personalize based on audience membership (e.g. promo eligibility, suppression, banner targeting)
Example use cases:
- Suppress a discount banner if the user already purchased
- Recommend products to users in a "High intent + Viewed product" audience
- Show different landing pages based on lifecycle stage
Example request:
GET /api/v1/audiences/{audience_id}/memberships/{user_id}
Authorization: Bearer <API_KEY>
Response:
{
"isMember": true
}
Step 6: Publish and monitor
-
Click Publish
-
Hightouch will begin evaluating users and delivering updates in real time
-
Monitor performance via Sync logs or your API response logic
Example: Suppression use case
Goal: Hide a promo banner if a user just made a purchase
Audience filters:
_ Event: order_completed
in the last 5 minutes
_ Trait: LTV > 300
* Property: channel = web
Sync:
_ Real-time webhook to your personalization platform
_ Uses user_id
to remove the user from the audience instantly
Result:
The user sees the banner, completes a purchase, and is removed from the campaign audience in real time—before they reload the page. This prevents the promo from showing again during the same session.
This pattern is commonly used for real-time suppression, cart abandonment, and loyalty-based personalization.
Best practices
- Use for session-based, event-triggered, or real-time decisioning campaigns
- Keep event filters narrow and recent (e.g. last few minutes) for fast evaluation
- Use traits like
LTV
,loyalty_tier
, orlast_seen
to enrich logic—without overcomplicating - Monitor delivery with sync logs or API responses, and set up alerts for failures