This page documents
@whop/elements@1.0.0-beta.0 and @whop/elements-react@1.0.0-beta.0.Tracking. accountId and accessToken come from there. Pass props and callbacks through the create options or React props.
Example data. Open the Playground.
Props
string
Narrow to people acquired by a traffic source, as a source path —
whop:adcamp_…:* for one of the account’s campaigns, ext:* for ads run elsewhere, referrer:*, direct. The same value the ads table’s click counts link with, so a page can hydrate this straight from its own URL. Defaults to "".string
Narrow to people who performed an event, by its name —
payment.completed, pixel.lead, pixel.page. Defaults to "".string
Narrow to people who performed a custom pixel event, by its custom name. Pairs with an empty
eventName. Defaults to "".string
Narrow by the
utm_source their traffic carried. Comma-separate to match any of several. Defaults to "".string
Narrow by ISO 3166-1 alpha-2 country code, such as
US or GB. Defaults to "".string
Narrow by device class —
desktop, mobile, tablet, bot. Defaults to "".string
Narrow by browser name. Defaults to
"".string
Narrow by operating system name. Defaults to
"".string
true for customers only, false for people who never bought, empty for everyone. Defaults to "".string
What the search box is filtered to — a name, an email, or an identifier. Defaults to
"".string
Narrow to a saved audience (
adaud_…) built from people filters. The audience filter menu moves this. Defaults to "".string
Pin the event window for
source/eventName filters to an exact ISO 8601 instant instead of the handle’s period. Set both eventFrom and eventTo or neither. Defaults to "".string
The pinned event window’s end, as an ISO 8601 instant. Defaults to
"".string
The sorted column:
name, email, ltv, purchase_count, event_count, first_seen_at, last_seen_at. Defaults to "last_seen_at"."asc" | "desc"
The sort direction. Defaults to
"desc".Events
Pass callbacks in the create options or React props.onPeriodChanged
The viewer moved the window from the period selector. Every surface under the same handle has already followed it; persist it and pass it back as period/customRange on the handle, or the window resets on the next mount.
Signature: ((payload: { period: "today" | "yesterday" | "last_7_days" | "last_14_days" | "last_30_days" | "last_90_days" | "all_time" | "custom"; customRange: { from: string; to: string; } | null; }) => void)
onAttributionModelChanged
The viewer changed which touch gets the credit, from the filter row’s Attribution menu. Every surface under the same handle has already re-credited; persist it and pass it back as attributionModel on the handle, or it reverts on the next mount.
Signature: ((payload: { attributionModel: "last_touch" | "first_touch"; }) => void)
onFiltersChanged
The viewer moved a filter, the search box, or the audience picker. Carries the entire filter state whichever moved — mirror it into your own URL and pass it back as props to make the view reproducible.
Signature: ((payload: PeopleFilterBag) => void)
onSortChanged
The viewer sorted a column. Persist and pass back as sort/dir, or sorting resets on the next mount.
Signature: ((payload: { sort: string; dir: "asc" | "desc"; }) => void)
onPersonOpened
The viewer clicked a person row and the handle has no links.person to follow — open your own person view with it (personId is the stable per-person key; identifier is the most human-meaningful one the surface has), or pass links.person on the handle to turn rows into real anchors instead.
Signature: ((payload: { identifier: string; personId: string; }) => void)
onLoaderStart
Runs after the loading skeleton first paints and before onReady.
Signature: (() => void)
onReady
Runs after the element’s first complete paint.
Signature: (() => void)
onError
Runs when the element fails to load or crashes. The fallback remains visible. Use code for programmatic handling. sourceKey identifies a failed host-state source.
Signature: ((e: { message: string; code?: string | undefined; sourceKey?: string | undefined; }) => void)
Methods
Call these on the handle returned bycreate, or through a React ref.
mount
Mounts the element in target and starts loading. React components mount themselves.
Signature: (target: string | HTMLElement) => void
destroy
Removes the element and releases its frame and subscriptions. You can call it more than once. React removes the element automatically.
Signature: () => void
update
Merges new props into the mounted element. In React, change the component props instead.
Signature: (options: Partial<PeopleElementProps>) => void
Styling
This element doesn’t expose class names for styling. Useappearance (theme, accent color, variables) to restyle it.
