TraceKitTraceKit Docs
Analytics

Analytics reference

Understand TraceKit analytics attribution, formulas, privacy, limits, and diagnostics.

Attribution

Attribution needs valid tracekit_visitor_id and tracekit_session_id metadata. TraceKit selects the earliest retained event with the exact pair. The event must belong to the same organization and project. No payment-time cutoff applies to the selected event. TraceKit copies source, referrer, campaign, page, and related first-touch fields. Trace and user metadata do not determine attribution.

Unmatched payments use these reason groups:

  • Missing visitor or session ID.
  • Invalid visitor or session ID.
  • Visitor or session not found.
  • Visitor and session mismatch.
  • Session outside retention.

Metrics and time boundaries

KPIDefinition
VisitorsDistinct non-empty visitor IDs across accepted analytics events.
GoalsAccepted event count excluding the reserved $pageview event.
RevenueSum of attributed revenue in configured-currency minor units.
Conversion rateDistinct attributed paying visitors divided by Visitors, multiplied by 100.
Revenue per visitorAttributed revenue minor units divided by Visitors, rounded to the nearest minor unit.

Conversion rate and revenue per visitor are unavailable when Visitors is zero. Revenue uses int64 minor units. TraceKit performs no foreign-exchange conversion. The dashboard supports 24-hour, 7-day, 30-day, and 90-day ranges. UTC is the only reporting timezone.

Revenue states

StateMeaning
DisabledStripe is not connected. Traffic and goals continue to work.
SyncingStripe sync is running. Prior settled revenue can remain visible.
ErrorThe latest sync failed. Prior settled revenue can remain visible.
EmptyStripe is connected, but the selected view has no eligible imported payments.
PopulatedThe selected view has one or more eligible imported payments, including unmatched payments.

Privacy and retention

Do not send personal data

Do not send credentials, emails, payment data, or personal data. This prohibition applies to properties, identifiers, URLs, and UTM values.

Sensitive property values become [REDACTED]. The scrubbing applies only to the properties object. Scrubbing does not protect identifiers, URLs, referrers, or UTM values. Use opaque internal user IDs.

Analytics retention defaults to 30 days. Analytics retention and usage metering are separate from trace retention and metering. Expired analytics events are removed. Imported Stripe payments do not age-delete with normal analytics retention. Project deletion removes associated analytics data and stored Stripe credentials.

Limits and delivery behavior

AreaLimit or behavior
Browser queue100 events. The transport drops the newest event when 100 events already wait. track() still returns its ID.
Browser batch20 events per request with a 100ms batching delay.
Browser body65,536 bytes maximum.
Browser attemptsFour total attempts for network errors, 408, 425, 429, and 5xx.
Browser delayStarts at 250ms and caps at 2,000ms. Retry-After also caps at 2,000ms.
Stripe schedulePoll every five minutes and reconcile the prior 24 hours.
Stripe pageRead 25 Checkout Sessions per page.
Stripe attemptsFour total attempts with 250ms, 500ms, and 1,000ms base delays.
Stripe retry cap2,000ms, including Retry-After.

Browser transport flushes on pagehide and hidden-page transitions. Analytics transport does not block page work. Private-beta performance measurements are not customer limits.

RecordActionCondition
Event traceView traceA tenant-scoped trace exists.
Event spanView spanThe trace and span exist.
Event replayView replayThe replay exists.
Event errorsView errorsThe trace has errors.
Event releaseView releaseThe release exists.
Payment traceView checkout traceStripe trace metadata resolves to a trace.
Payment replayView session replayThe visitor and session resolve to a replay.

The dashboard shows at most five matching events and five matching payments. A missing target hides its action only. A missing target never hides the analytics record.

Continue

On this page