Audiences
Not a frozen cohort: a member list you actively sync and push to destinations. Hourly sync, CSV export, quota included.
Workflow
Cohort → audience flow
Define a cohort first, then promote it to an audience. source_cohort_id keeps the link; hourly tick kicks in.
1. Create a cohort
Under /app/cohorts define a cohort with event + property conditions. A cohort is a static count; the audience is the live, synced version.
/app/cohorts2. Promote to audience
On /app/audiences pick 'New audience' → choose source cohort. source_cohort_id is linked, hourly refresh turns on automatically.
/app/audiences# 1. Önce bir cohort oluştur
gurulu cohort create high-intent \
--rule 'event:add_to_cart in last 7d' \
--rule 'event:checkout_started in last 7d'
# 2. Cohort → audience promote
gurulu audience create \
--name "Yüksek niyetli ziyaretçiler" \
--source-cohort high-intent \
--sync hourly
# 3. Aktif audience oluşur — destination'lara bağlanmaya hazır
gurulu audience list --status activeActive sync
Hourly refresh — triggered every hour
Worker tick + Redis pub/sub + delta diff + daily snapshot — audience members stay live.
How it works
Worker fires hourly, the audience definition is re-evaluated in CH, joined/left deltas are computed, and the audience_changes_daily snapshot is recorded.
- Worker hourly tick → publish on Redis channel per audience
- Diff against previous member list → joined + left split out
- audience_changes_daily — daily member count + net change
// Worker hourly tick — Redis pub/sub trigger
PUBLISH gurulu:audience:refresh:{audience_id} '{"reason":"hourly_tick"}'
// Sonuç: audience_changes_daily snapshot
// { audience_id, snapshot_date, member_count, joined_count, left_count, net_change }CSV export
Download the active member list
GET /v1/audiences/:id/export.csv — active audience members as a simple 3-column CSV.
curl -X GET https://api.gurulu.io/v1/audiences/aud_01H8XYZ/export.csv \
-H "Authorization: Bearer $GURULU_SECRET_KEY" \
-o audience-members.csv
# CSV kolonlar:
# audience_id, person_id, joined_atColumns
audience_id, person_id, joined_at. Hashed PII (email_sha256 etc.) is reserved for destination pushes — not in CSV export.
Quota
Free 3 / Custom unlimited
Active audience count is tracked by the M28 W3 quota dimension 'audiences'.
audiencesaudiencesWhen the limit is hit, new audience creation is rejected; existing audiences keep running.
Use cases
Where audiences earn their keep
Four starter recipes — inspiration to define your own.
RFM high-value
3+ purchases in last 30 days + last purchase <14 days → premium remarketing pool.
Churn-risk
Active sub + no login in last 14 days → save-the-customer email + Meta CAPI suppression.
B2B account
Filter by company_domain → roll up every user from a target account into one audience.
Behavioral
Visitors who add_to_cart but never purchase → cart-abandonment campaign.
Related docs
Read next
Wire audiences to destinations, watch them move in the AI summary, discover patterns in the playground.