Audiences
Audiences turns first-party signals into an outbound reach list. You describe the people you want — either by pointing at a person ClickStream already knows, or by typing a description — authorize the displayed maximum, and ClickStream builds the audience and delivers a plain CSV after capturing only the exact final amount. You are billed on the exact number of deliverable consumers, never on the number you asked for.
What this is, and is not. An audience is a one-time consumer CSV you purchase and download. It is not a subscription, not a synced list, and not tied to any one site. ClickStream sources the underlying consumer records from a third-party data provider; the raw provider field names and vendor identity never appear in your file — every delivered column is remapped to a neutral whitelist.
Availability
Audiences is a Scale, Network, and Enterprise feature (AUDIENCE_TIERS, apps/dashboard/src/lib/audiences/pricing.ts:28). Growth and Hobby do not see the builder. Each tier also caps the requested size (AUDIENCE_MAX_QUANTITY, pricing.ts:31):
| Plan | Max requested audience size |
|---|---|
| Scale | 50,000 |
| Network | 250,000 |
| Enterprise (custom) | 1,000,000 |
The requested size is only a target — the price and the delivered file are always driven by the real post-suppression count, which can be smaller.
The two build modes
Lookalike from a seed person
Pick a person ClickStream has already enriched and build an audience of consumers who look like them. The lookalike is defined purely by that person's interest categories — the rendered behavior/interest taxonomy — not by demographics or geography (apps/dashboard/src/lib/audiences/lookalike-mapper.ts:1). ClickStream ranks the seed's categories by how distinctively they define that person (active purchase-intent and deep, niche categories rank highest; broad buckets rank lowest), takes the most distinctive few, and unions them into the audience pool.
Describe in natural language
Type a plain-English description ("homeowners in Texas shopping for a new truck") and ClickStream translates it into a structured audience definition (apps/dashboard/src/lib/audiences/nl-translator.ts:1). The description is turned into topic keywords plus categorical filters; the keywords are resolved against the live topic catalog so a made-up topic is impossible, and any filter whose field or value the provider would reject is dropped before anything is sent. A description that matches no real targeting signal returns an error rather than an empty build.
Authorize, preview, then pay the exact amount
Before any provider build or full export begins, Checkout places a manual card authorization for the displayed maximum based on the requested size. This is a hold, not a captured charge. After authorization, the build can stage a small masked sample (apps/dashboard/src/lib/audiences/preview.ts:1). The sample proves data quality — real city, state, country, and column fill rates — while every personally identifying value is irreversibly masked on the server (J•••, j•••@•••.com, (•••) •••-••••, ZIP shown only as its first three digits). There is no un-blurred version the client can request; the raw sample is discarded after masking.
Pricing is $10 per 1,000 delivered consumers, billed exactly per record — one cent per deliverable consumer, with no 1,000-block rounding (apps/dashboard/src/lib/audiences/pricing.ts:16). A 456-record audience costs $4.56; 1,001 records costs $10.01. The charge is computed only from the count ClickStream observes after export and suppression — never from a client-supplied number. ClickStream captures that lower exact amount from the existing authorization and releases the unused remainder. If fewer than 50 deliverable consumers survive, the job fails with no charge and releases the hold (MIN_DELIVERABLE, pricing.ts:25) rather than billing you for a near-empty file.
Before a provider build begins, ClickStream atomically reserves the account's
monthly audience/export resource budget. Scale allows 30 build attempts per
calendar month and Network 100; no account can hold more than three unpaid or
in-flight builds. Every build request requires an Idempotency-Key; a repeated
key reuses the same reservation and never starts a second provider build. These are spend-safety controls only:
customer pricing remains based exclusively on delivered rows.
The lifecycle is a cron-driven state machine: reserve → authorize maximum → build → calculate the exact post-suppression count → capture the exact amount → deliver → ready (apps/dashboard/src/lib/audiences/build-engine.ts:1). No provider build or full saved-query export starts without a verified authorization. The deliverable CSV is written only after payment is captured; any pre-capture working data is private and never downloadable.
What the delivered CSV contains
The provider's raw field names are dropped and every delivered column is remapped to this neutral whitelist (NEUTRAL_CSV_COLUMNS, apps/dashboard/src/lib/audiences/types.ts:120):
first_name, last_name, email, business_email, phone, address, address2, city, state, zip, zip4, country, linkedin_url
Only columns actually present in the source are emitted, in this canonical order — no vendor identifier ever lands in your file.
Per-purchaser suppression
You never receive the same consumer twice. Suppression keys on the purchaser (apps/dashboard/src/lib/audiences/suppression.ts:1): a consumer already delivered to you on any of your past audiences — across every one of your sites — is dropped from every future build. ClickStream over-fetches from the provider to absorb expected suppression, then re-suppresses again at delivery time against the current ledger so a same-buyer race can't double-deliver. Suppression matches on the record's email (the stable dedupe key).
GDPR exclusions
A consumer who has been erased (a GDPR/DSAR tombstone) is blocked from every future build for any buyer (audience_erased_contacts, apps/dashboard/src/lib/db/audiences.ts:544). These globally-erased records are suppressed in the same pass as your own delivered-ledger, so an erasure request propagates to all subsequent audiences immediately.
See also
- Privacy & compliance — consent model, GDPR / CCPA erasure
- Optional enrichment — how visitor detail is attached to a ClickStream ID
- Pricing — plan tiers and add-ons