First-party analytics, sessions and attribution
What published pages measure and never collect, how visitors and sessions are counted, and how conversions and ad spend are attributed.
Updated October 14, 2026
On this page
What published pages collect
Measurement is built into every published page, with no tags to add. Events carry stable IDs and are collected only within the consent each visitor gave.
Visits: page views, sessions, traffic source and ad click IDs.
Attention: sections seen, engaged time while the page is visible, and scroll depth in buckets.
Interactions: CTA views and clicks, widgets shown or dismissed, quiz steps without sensitive answers, rage clicks and dead clicks.
Forms: views, starts, steps, field errors as error codes, submit attempts and leads created.
Outcomes: booking requests and confirmations, checkouts, orders placed, confirmed payments and refunds.
Page quality: Core Web Vitals (LCP, CLS, INP), JavaScript errors and failed submissions.
Experiments: which variant a visitor got and whether it rendered.
What is never collected
What visitors type into fields. A field error records the field and the error, never the text. A submitted form becomes a record in your inbox, which is the form doing its job, not analytics.
Passwords and payment card details.
URL fragments (the part after
#) and tokens in URLs.Unmasked personal data in session replays.
Lead details are not sent to AI models by default either. The CRO agent works from aggregated, redacted facts.
Visitors and sessions
Visitor and session IDs are pseudonymous: random identifiers scoped to the visitor’s consent. When consent doesn’t allow a lasting identifier, none is stored, and that visit can’t be linked to others.
A session ends after 30 minutes of inactivity by default, and the cutoff is configurable. Visits on different devices or browsers are not merged: someone who clicks an ad on their phone and buys on a laptop counts as two visitors.
Traffic sources and click IDs
When a session starts, the page records its source, the entry page and the consent context at that moment:
utm_*, such asutm_sourceorutm_campaign- Source
Tracking parameters on your ad URLs
gclid,gbraid,wbraid- Source
Google Ads auto-tagging
fbclid- Source
Clicks from Meta apps such as Facebook and Instagram
ttclid- Source
Clicks from TikTok
Referrer
- Source
The page that linked to yours, when the browser shares it
| Parameter | Source |
|---|---|
| Tracking parameters on your ad URLs |
| Google Ads auto-tagging |
| Clicks from Meta apps such as Facebook and Instagram |
| Clicks from TikTok |
Referrer | The page that linked to yours, when the browser shares it |
Click IDs are stored only where consent permits. Keep UTM values consistent so campaigns group cleanly in reports.
Attribution models
Attribution decides which source gets credit for a conversion. Every number that depends on it is labeled with its model:
First touch
- Gives credit to
The source of the visitor’s first recorded visit.
Last non-direct touch
- Gives credit to
The latest visit from an identifiable source, so a later direct visit, such as a bookmark, doesn’t erase the ad.
Session touch
- Gives credit to
The source of the session in which the conversion happened.
| Model | Gives credit to |
|---|---|
First touch | The source of the visitor’s first recorded visit. |
Last non-direct touch | The latest visit from an identifiable source, so a later direct visit, such as a bookmark, doesn’t erase the ad. |
Session touch | The source of the session in which the conversion happened. |
The model changes who gets credit, not how many conversions there are. Each lead, booking or order is counted once, at its source record, even if Meta, Google and TikTok each claim it.
Ad spend and cost metrics
Cost metrics need your ad spend, added in one of three ways:
CSV import with a template per platform. You preview the matched campaigns before saving, and importing a file twice doesn’t double count.
Manual entry, labeled as manual wherever it appears.
API sync, only where the platform has approved access for your account. Until then it shows as awaiting provider access.
Spend is never inferred from an installed pixel. Without spend, CPL, CPA and ROAS show insufficient data, never zero. Other currencies are converted at a dated exchange rate.
CPL
- Formula
Attributed ad spend ÷ valid leads
CPQL
- Formula
Attributed ad spend ÷ qualified leads
CPA (CAC)
- Formula
Attributed ad spend ÷ unique customers acquired
ROAS
- Formula
Attributed net paid revenue ÷ attributed ad spend
| Metric | Formula |
|---|---|
CPL | Attributed ad spend ÷ valid leads |
CPQL | Attributed ad spend ÷ qualified leads |
CPA (CAC) | Attributed ad spend ÷ unique customers acquired |
ROAS | Attributed net paid revenue ÷ attributed ad spend |
Net paid revenue is paid revenue minus refunds, so ROAS is revenue over spend, not profit. A zero denominator shows N/A, never infinity or 0%.
Funnels and cohorts
Every funnel stage is counted from the same cohort of sessions, so a step never shows more people than the one before, and one week’s leads are never set against all-time revenue. Because qualified leads and paid orders often arrive days later, reports offer two views:
Session cohort: sessions in the selected dates, with every outcome they led to, even later ones.
Conversion date: outcomes in the selected dates, whenever the visit took place.
Exits are inferred from inactivity or a hidden page, which can be wrong: the visitor may have switched tabs and returned. Why someone left is never measured directly, so the CRO agent labels any explanation a hypothesis.
Session replay and heatmaps
Session replay is off until you enable it, and then records only visitors who consent. Inputs, payment fields, chat widgets, media and elements marked private are masked. Sampling and retention depend on your plan, only members with replay access can watch, and recordings can be deleted.
Heatmaps are built per published page version and viewport size, so desktop clicks are never painted onto a mobile layout or an older design. Small samples are flagged.
Where each number comes from
Every metric is labeled with its source:
First-party
- Meaning
Collected by CVRLanding on your published pages and in your inbox.
Imported
- Meaning
From a file you uploaded, such as an ad spend CSV.
Manual entry
- Meaning
Typed in by someone in your workspace.
Platform-reported
- Meaning
Reported by an ad platform under its own attribution rules, often with a delay.
Estimated
- Meaning
Calculated while a confirmed figure isn’t available, and labeled until it is.
Sample data
- Meaning
Demo numbers in the demo workspace, never mixed with yours.
| Label | Meaning |
|---|---|
First-party | Collected by CVRLanding on your published pages and in your inbox. |
Imported | From a file you uploaded, such as an ad spend CSV. |
Manual entry | Typed in by someone in your workspace. |
Platform-reported | Reported by an ad platform under its own attribution rules, often with a delay. |
Estimated | Calculated while a confirmed figure isn’t available, and labeled until it is. |
Sample data | Demo numbers in the demo workspace, never mixed with yours. |
Platform-reported numbers are shown beside first-party numbers, never added to them.