Friction analytics
This page describes what is measured, what is not, and why. It is meant for whoever runs a site and has to decide whether to switch the measurement on, and account for that choice in their privacy policy.
What the measurement counts
Four events, aggregated by day, by form, by structure version and by step:
| Event | When it is counted |
|---|---|
step_viewed | A step becomes visible, including the first. |
started | The visitor types something, for the first time. |
validation_error | A field refuses a value, with the reason for the refusal. |
submitted | The submission goes through. Established by the server. |
Every row in the database is a counter, never a visit: a date, a form, a version, a step, possibly a field and a code, and a total. Two visitors hitting the same field on the same day increment the same counter.
What is not measured
- No submitted value. A field is designated by its id, never by its contents.
- No IP address, no session id, no cookie, no browser fingerprint.
- No individual timing, no session replay, no tracking between forms or between visits.
This is not a policy that a setting could relax: the table has no column in which to put a visitor, and the public route accepts no parameter that designates one. Collecting more would mean changing the schema, which shows up in a migration.
Abandonment is an inference
Nobody announces that they are giving up. What we know is how many started the form and how many submitted it; the difference is estimated abandonment.
A visitor who starts one day and comes back the next is counted once as an abandonment and once as a submission, on two different days. Over a week the gap is negligible; over a single day it is not. The report therefore names the estimate rather than presenting it as a fact.
The detail threshold
Below twenty refusals over the period being viewed, the per-field breakdown is not shown — only the total is.
The threshold does not protect a piece of data: there is none. It protects the inference one would draw from a count of one. On a lightly used form, “one error on the Salary field” can designate a particular person to anyone who knows the site’s visitors.
Switching it on
The measurement is off by default and is enabled form by form, in the builder, under the “Friction analytics” panel.
That is not a token precaution. Measuring without having decided to is collecting without having said so — and the site’s privacy policy would know nothing about it. The choice therefore belongs to whoever answers for it.
Consent: the plugin sets no cookie and no identifier, and so needs no consent under the ePrivacy directive. If your site’s policy puts all audience measurement behind consent, or if your impact assessment requires it, switch the measurement on only once you have collected it: the module does not do that for you.
Retention
Thirteen months by default — enough to compare a season with the same season a year earlier, which is the longest comparison this report has to serve. Adjustable under Settings → Data → “Friction analytics”.
A daily purge erases older counters. A zero or negative value is ignored: a nonsensical setting must keep, not destroy.
The counters of a deleted form go with it.
What the form version changes
A form you rework is no longer the same object of measurement. The version is a fingerprint of its structure — the id, type and order of its fields — and not a number maintained by hand:
- correcting a label does not cut the series of measurements;
- adding, removing, retyping or moving a field opens a new series.
Without this, the errors of a deleted field would mix with those of its replacement, and a redesign would appear to have made worse what it fixed.
Without JavaScript
The journey events are emitted by the browser: a visitor without JavaScript emits
no step_viewed, no started and no validation_error. Their submission, on the
other hand, is counted — it is established server-side.
The journey figures are therefore a lower bound, exactly like the view counter in the statistics. They serve to compare steps against one another, not to count visitors.
What someone without the rights sees
The report appears under Statistics and follows its permissions: you need the
capability to view submissions, and the form must be accessible to the user. The
public route, for its part, answers nothing readable — it returns 204 in every
case, including for a form that does not exist, so as not to reveal what the site
contains.
