MEASURE · ANALYTICS · HOW WE COUNT

How we count.

The rules behind every number in Praxis Analytics, as the product holds them in October 2026. One query engine applies them to the Overview, Reports, the copilot's answers, the CSV downloads and every alert, and funnels run on an engine built to the same rules, so the same question gets the same number wherever you ask it.

On this pageWhere each rule applies
  1. Where each rule applies
  2. How it works
  3. People and visits
  4. Where the data lives
  5. No sampling
  6. Attribution
  7. Channel groups
  8. Revenue
  9. Goals
  10. Funnels
  11. What drives drop-off
  12. Retention
  13. Alerts
  14. One engine
  15. Consent
  16. Bots and previews
  17. Keeping raw events
  18. Statistics in reports
  19. What keeps it honest
  20. Common questions

Where each rule applies

Where you read a numberThe rules on this page that make it
"Overview" tiles and "Reports"People and visits · No sampling · Consent
"Sources" and the "Campaigns" tabAttribution · Channel groups
Revenue questions and campaign revenueRevenue
"Goals", and any answer about a goalGoals
"Funnels", "where did they go?" and "why?"Funnels · What drives drop-off
"Do visitors come back?"Retention
"Set an alert"Alerts
ExplorePeople and visits · Consent
The copilot's answers, the CSV downloadsOne engine

How it works

People and visits

  • A person is a distinct visitor id.
  • A visit starts on first activity, after 30 minutes of inactivity, or at 24 hours. It does not split at midnight, nor when a new campaign tag arrives.
  • An engaged visit has at least 10 seconds in view, or at least 2 pages, or a goal reached.
  • One person, several browsers. When a person signs in, your site can join their browsers into one person. How a person is counted on a site is a policy an Admin sets through the copilot, behind "Change how this site counts people?".
  • Days are UTC days, and the screens say so.

Where the data lives

  • Raw events, per-visitor facts and visitor traits live in your site's own database.
  • Daily totals are used only when they provably cover the window you asked about; otherwise the answer is counted from the raw events.
  • The datasets on Cloudflare's network are our own internal telemetry, not your analytics.

No sampling

  • A question asked on screen may read up to 2,000,000 rows and break down by at most 3 dimensions. It shows the top 25 rows by default and 1,000 at most, and a cut tail is flagged.
  • A question larger than that is refused, never sampled and never estimated.

Attribution

  • First touch (channel, source, medium, referrer, ad platform and campaign) is written once for each visitor and never rewritten.
  • Last touch is the latest visit's channel and the latest tagged arrival. The landing page is kept for every visit.
  • The classifier reads, in order: the address's own tags; eleven ad-click identifiers from Google, Microsoft, Meta, TikTok, LinkedIn, X, Pinterest, Reddit and Snap; the signatures of in-app browsers; then the referrer. It files every arrival under one of eight channels: Direct, Paid search, Paid social, Email, Organic search, Social, Referral and SMS.
  • A referrer is kept as a host, the referring site's name, never its full address.

Channel groups

  • Your own buckets, as ordered rules: "is", "contains" or "starts with".
  • They are applied when a question is read, and never written back into the data, so changing a group never changes history.
  • Up to 20 groups on a site, each created behind approval.

Revenue

  • Revenue is purchases minus refunds. A refund counts in the period it happened.
  • Orders are de-duplicated by their order id.
  • Money is never converted, and a window that holds two currencies is refused rather than added up.

Goals

  • A goal is a rule evaluated over stored history, so a goal created today also counts the events that came before it.
  • An edit that changes what a goal matches gives it a new version and restates its history, and every answer that uses it says so.
  • Before you approve it, the "Live backtest preview" shows how many events and visitors it would have matched over the last 1 to 90 days.

Funnels

  • A funnel counts unique visitors, or sessions, at each step.
  • Each step is the earliest qualifying event after the step before it, inside a window that starts at step 1 and lasts from 1 to 92 days.
  • The order can be ordered, strict or any, and one exclusion event can be set.

What drives drop-off

Behind "why?" on a funnel step, every signal is tested in the same way.

PartMethodValues
The tableA two-by-two of did or did not, against converted or droppedfor each signal
The sizeA risk ratio, with a Katz log interval; 0.5 is added to every cell when one is zero95%
The testThe N-1 chi-squared test, or Fisher's exact test when the cells are small
Many signalsA Benjamini-Hochberg correction across every signalq 0.1
FloorsEnough people behind a signal before it is judged: 25 people, or 2% of the step's people when that is fewer, and 5 outcomes on each side25, 2% and 5
RefusalNo judgment when one outcome outnumbers the other10 to 1
The labelA solid finding reads "Correlated, not proven"; an early one is "a hint, not a conclusion"
  • On screen, a finding reads as a sentence: how many times more or less often one group went on to the next step, how many people it rests on, and, when it rests on few, that it is an early signal to treat "as a hint, not a conclusion".

Retention

  • People are grouped by their first-ever activity, by day, week or month: up to 31 days, 26 weeks or 12 months.
  • Each share is its own row's cohort, never the site's total.
  • A person who is erased leaves every cohort.

Alerts

  • An alert watches a threshold, or "The baseline": the average of the last 6 windows and their standard deviation, with at least 3 windows needed, firing at 1 to 6 times that usual swing, 2 by default.
  • Windows run from 1 to 90 days. Alerts are checked hourly and fire at most once per window, with up to 50 on a site.
  • Email goes through the site's own email connection; without one, the firing reads "Channel silent".

One engine

  • One query engine answers the Overview and Reports, the copilot, the CSV downloads and the alert checker. Funnels run on an engine built to the same rules, and Explore's visitor search has its own read path.
  • It is deterministic, and there is no AI model in the path of a number.
  • The site's boundary cannot even be expressed in a query, so no question can reach another site's data.
  • Every answer records its source, the versions of the definitions it used, its population and its currency.

Bots and previews

  • Every event is tagged with a device type, "bot" included.
  • Author previews and migration previews are never counted.

Keeping raw events

  • For each kind of automatically captured event, you choose how long raw events are kept: 1 to 3,650 days. Unless you choose, everything is kept.
  • A day's raw events are deleted only after a completed archive export covers that day.

Statistics in reports

  • Comparisons in the Overview and in Reports read as plain differences between periods. The significance tests live in Experiments and in the funnel drivers above.

What keeps it honest

Refused, never guessed.

A question too large to count exactly is refused rather than sampled.

Absent, not estimated.

Visitors who never consented are never modelled back in, and every answer says who is missing.

Definitions with versions.

A goal or measure that changes is versioned, and an answer built on it says so.

Correlated, not proven.

A driver of drop-off is tested, corrected, and labelled for what it is.

One site, one boundary.

No query can reach another site's data.

No AI in the arithmetic.

The copilot asks the same deterministic engine as the screens.

Common questions

Why might Praxis count fewer people than another tool?

It counts only visitors who allowed analytics, it honours Global Privacy Control and Do Not Track, it never counts your previews, and it never estimates the visitors it could not see.

Can a goal change last month's numbers?

Yes, when you edit what the goal matches. The goal takes a new version, its history is restated, and every answer that uses it says so.

What happens to the numbers when a person is erased?

Their raw events are deleted, what remains of them is anonymised, and they leave every retention cohort.

Are days in my time zone?

Days are UTC days, and the screens say so.

Which attribution model do you use?

First touch, written once for each visitor, and last touch, the latest tagged arrival, side by side.

Does the copilot use AI to compute numbers?

No. The copilot asks in words; the same deterministic engine as the screens does the counting.

Why is a two-currency window refused?

Praxis never converts money, so it will not add amounts in different currencies together.