Skip to content

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.
  • priceCents is the amount presented to the patient at checkout. Discounts and promotional pricing are reflected in the value pushed at purchase time.