What this lets you do
Build against the exact payload of every event type Traceten delivers. All examples on this page are complete, valid deliveries underapi_version: "2026-07-01".
Every delivery shares the same envelope: id, type, api_version, created, and a type-specific data object. This page documents each type and its data. All wire fields are snake_case.
The taxonomy is additive-only. New types may be added; existing types and fields are never removed or renamed. Route on type and ignore values you do not recognize.
ai_session.classified
Fires when a session on your site is classified as AI-referred. Exactly one delivery per AI session, deduplicated per session, sent the moment classification completes. This is the default subscription for new endpoints.
data fields
conversion.attributed
Fires when a conversion (a purchase or any custom goal) is attributed to an AI source, immediately after Traceten records the attribution. A conversion with no AI-referred session in its journey never fires this event.
Exactly one event per conversion, not one per attribution model: the top-level fields carry the canonical model (last-touch in v1), and models[] carries the full four-model breakdown for the same AI source. Because the breakdown is scoped to the canonical (last-touch) source, a model that credits a different source shows credit_fraction: 0 for it.
A money-carrying conversion (Stripe or Shopify purchase). This journey had two AI touches, ChatGPT first and Perplexity last, so first-touch assigns Perplexity nothing:
revenue_cents_attributed and currency are absent at the top level and every models[].revenue_cents_attributed is null. There is no money to split, and Traceten never fabricates a $0. A signup attributed to a single AI touch:
0 means “this model assigned no credit to a real-money conversion”; null means “this conversion carries no money at all”.
data fields
webhook.ping
The test and verification event. Sent in exactly two situations: once automatically when you register an endpoint (to verify it), and whenever you click Send test event on the endpoint detail page. It never fires as part of your site’s traffic. It travels the exact same signing and delivery path as real events, so a successful ping proves the real path works, and its outcome drives the endpoint’s verification status.
Unlike real events, a ping gets exactly one attempt. It never enters the retry schedule; if it fails, click Send test event again.
data fields
What webhooks never carry
Payloads are stable projections of Traceten’s internal records, not the records themselves. The following fields exist internally but are deliberately excluded from every event, permanently:
Additionally, the
url field in ai_session.classified is reduced to origin + path before delivery. Query strings and fragments routinely carry emails, tokens, and session state, so they are stripped and structurally cannot ride along.
conversion.attributed carries no visitor_id. That is not a privacy exclusion (visitor_id is pseudonymous and is included in ai_session.classified); the credited session_id is simply sufficient to attribute a conversion. Join the two event types on session_id if you need visitor-level analysis.
See what data we collect for the full picture of what Traceten does and does not store.

