Tracking Integrations (GTM dataLayer): Technical Reference
Tracking Integrations (GTM dataLayer): Technical Reference
Status: Live. Version 1 of the intake dataLayer contract. Events are pushed client-side from the intake app through a no-PHI dataLayer helper.
DataLayer
Karpa loads your GTM container on every intake page. Before the tags run, the page
exposes a standard window.dataLayer array. All events are pushed as:
window.dataLayer.push({ event: "<event-name>", ...params });The helper no-ops safely when GTM is not configured for the tenant, so a missing container never breaks the form.
Privacy constraint
Params carry only marketing-safe values: funnel step names, program/plan identifiers, and prices. They never include patient name, email, date of birth, address, phone, or medical answers. See CONTEXT.md “Tracking Integrations” for the full policy.
Event catalog
intake_form_started
Fires when the patient begins the intake form (step 1).
{ event: "intake_form_started", program: "<program-slug>", // string step: 1 // number}intake_step_view
Fires when the patient reaches a new step in the form.
{ event: "intake_step_view", program: "<program-slug>", // string step: <n> // number, 2..N}intake_checkout_view
Fires when the patient reaches the checkout step.
{ event: "intake_checkout_view", program: "<program-slug>", // string priceCents: <n> // number, price in USD cents}intake_purchase
Fires when the patient completes payment. Emitted for initial purchases and follow-up/renewal purchases.
{ event: "intake_purchase", program: "<program-slug>", // string priceCents: <n> // number, price in USD cents}intake_form_submitted
Fires when the patient reaches the confirmation page after submitting the form.
{ event: "intake_form_submitted", program: "<program-slug>" // string}Field reference
| Field | Type | Description |
|---|---|---|
program |
string | Program slug identifier (e.g. weight-loss) |
step |
number | 1-based intake form step index |
priceCents |
number | Checkout price in USD cents (integer) |
Notes
- Event names and fields are additive-only within version 1. New fields may be added in minor revisions; existing fields will not be removed or repurposed without a new version.
priceCentsis the amount presented to the patient at checkout. Discounts and promotional pricing are reflected in the value pushed at purchase time.