Skip to content
Docs
Browse Analytics

Friction explore

The Friction explore has one row for every error, rage click, dead click and quick back. What it covers, what to know when reading it, and every dimension and metric in it.

The Friction explore has one row for every friction signal on a property with friction turned on: a JavaScript error, a rage click, a dead click, or a quick back, which is a page view the visitor went back from within ten seconds. On a store that captures purchases, every alert its Shopify checkout showed and every checkout extension that failed is a row too, from Kontala's Shopify pixel, since the website tag does not run in a checkout. See Struggle signals for how each one is detected.

Good to know

  • A signal has the dimensions of the page view it happened on, including that page's speed, so you can see which pages friction happens on.
  • An error's message is normalised, so one error reads alike wherever it happened, and every URL is scrubbed.
  • Rage and dead clicks have no click types.

Used on dashboards

Charts on these dashboards are built on the Friction explore:

  • Product and app usage: Friction

Dimensions

The Friction explore has 131 dimensions.

The signal

DimensionTypeDescription
SignalStringWhat the visitor met. Error: the page threw an uncaught error or left a promise's rejection unhandled. Error click: such an error within a second of a click. Rage click: three clicks or more within a second of each other, in one spot. Dead click: a click on something that looked clickable that nothing answered within a second. Quick back: a page the visitor went back from within 10 seconds. Checkout alert: a store's checkout showed its buyer an alert, a field to correct or a payment declined. Checkout extension error: an app's checkout extension failed.

The error

DimensionTypeDescription
Error kindStringUncaught error: code threw and nothing caught it. Unhandled rejection: a promise failed and nothing handled it.
Error nameStringThe error's constructor, such as TypeError or ReferenceError, where the browser said.
Error messageStringWhat the error said, normalised so one error reads alike wherever it happened: numbers, addresses, ids and quoted text are replaced with <n>, <url>, <id> and '<str>', and only a name such as 'price' is kept.
ErrorStringThe error as its name and message: TypeError: Cannot read properties of undefined (reading 'price').
Error sourceStringThe script the error was thrown in, without its query string. Empty where the browser did not say, as for an error in another site's script.
Script ownerStringThis site where the error was thrown in a script on the page's own host or one of its subdomains; Another site where it was a script from elsewhere, such as a tag manager's or a widget's; Unknown where the browser did not say.
Error lineNumberThe line of the script the error was thrown on.
Error columnNumberThe column, within that line, the error was thrown at.
Error after click (ms)NumberHow long after the click an error click's error came, in milliseconds, under a second.

The click

DimensionTypeDescription
Clicks in the burstNumberHow many clicks a rage click was, three or more.
Burst length (ms)NumberFrom a rage click's first click to its last, in milliseconds.
Nothing answered the burstBooleanWhether nothing on the page answered any click of the rage click: the clicks of a stepper or a quantity button are answered, and are usually no frustration.
Dead click outcomeStringAnswered late: the page answered after the first second but within seven. Never answered: nothing within seven seconds. Left first: the visitor left the page or the tab before either.
Late answer (ms)NumberHow long a dead click that was answered late waited, in milliseconds.

The element

DimensionTypeDescription
ElementStringThe element clicked: the link, button or control the click resolved to, else what the pointer was on.
Element textStringA link's or a button's own text, redacted. Empty for anything else, as for a click.
Element idStringThe element's id attribute.
Element classesStringThe element's class attribute.
Element nameStringThe element's name attribute, as a form control carries it.
Element typeStringThe element's type attribute, where it has one, such as a button's.
Element roleStringThe element's role attribute, such as button or tab.
Element labelStringThe element's aria-label.
Element pathStringWhere the element sits in the page, up to eight elements from the nearest: main > form.checkout > button.
Element attributesStringEvery attribute kept, as JSON, which a contains filter reads.
Clicked onStringWhat the pointer was on, where the click resolved to an element around it, such as the icon inside a button. Where nothing actionable was clicked, it is the element itself: something that looked clickable and is not.
Element shown asStringThe element as a reader would know it: its text, else its aria-label, else its tag and id, such as button#add.

From the Page views explore

Every row also has these 104 dimensions of the Page views explore, which mean the same here and are described there:

  • Time: Event time, Ingest time
  • The visitor: Visitor type, Days since first visit
  • The visit: Entrance page, Entrance hostname, Session page views, Single-page session, Session number
  • Scroll depth: Scroll depth (%), Scroll depth band
  • Page speed: LCP (ms), LCP rating, INP (ms), INP rating, CLS, CLS rating, FCP (ms), FCP rating, TTFB (ms), TTFB rating, Speed rating, Load or route, LCP element, INP element
  • Friction: Friction measured
  • Page: Path, Section, Subsection, Page title, Hostname, Site domain, Query string, Referrer host, Referring domain
  • Attribution: Campaign source, Campaign medium, Campaign, Campaign term, Campaign content, Click ID source, Has click ID
  • Attribution carried across the visit: Session campaign source, Session campaign medium, Session campaign, Session click ID source, Session referring domain, Session referrer host, Session campaign term, Session campaign content, Channel
  • First touch: First-touch channel, First-touch source, First-touch medium, First-touch campaign, First-touch referring domain
  • Geo: Country, Country name, Continent, Region, City, Geo source
  • Network: ISP, ASN, Datacenter traffic, Cellular
  • Browser environment: Language, Language code, Language name, Device class, Screen resolution, Viewport size, Timezone offset (min)
  • The visitor's own clock: UTC offset, Local hour of day, Local day of week, Local day of week number
  • Browser, operating system and device: Browser, Browser version, Operating system, Device type, User agent
  • An app: Platform, Shown in app, App version, App build, OS version, Device model, SDK version
  • Data source and quality: Tenant, Site, Allowed origin, Origin, Tag, Tag version, Collector version, Delivery mode
  • Signed-in user: Signed in, Organisation, Company domain, Global Privacy Control, Scrubbed parameters
  • Page type: Page type, Page type source

Metrics

The Friction explore has 11 metrics.

MetricCalculationDescription
Friction signalsCountErrors, rage clicks, dead clicks and quick backs on measured pages, and a store's checkout alerts and failed checkout extensions. Bot traffic is left out, and nothing is stored without consent.
ErrorsCountJavaScript errors and unhandled rejections, each once a page view however often it was thrown, error clicks included.
Error clicksCountErrors that came within a second of a click.
Rage clicksCountBursts of three clicks or more within a second of each other, in one spot.
Dead clicksCountClicks on something that looked clickable that nothing answered within a second.
Quick backsCountPage views the visitor went back from within 10 seconds.
Checkout alertsCountAlerts a store's checkout showed its buyers, each once however long it stayed on screen.
Checkout extension errorsCountTimes an app's extension failed in a store's checkout.
Visits affectedCount distinctVisits that met at least one of the signals in the rows.
Visitors affectedCount distinctDistinct device cookies among the visits affected. Optimistic on Safari for the reason the page view explore gives.
Pages affectedCount distinctHow many different pages the signals in the rows happened on, each hostname and path once.

Your own fields

When your organisation maps data layer fields in Data Capture, they appear in the Friction explore too: the standard fields under Standard fields and your own under Data layer. They are left out of the lists above, because every organisation maps its own.

Was this helpful?