For the complete documentation index, see llms.txt.

Collected data

Last updated View as Markdown

Contentsquare collects comprehensive visitor interaction data while protecting personal information through email filtering and optional masking features.

The tag collects the following data by default. Some features collect additional data points, which are described on their own pages: Error analysis, Voice of Customer, and Product Analytics.

In particular, potential Personal Data would be:

  1. Into the HTML content that is sent for a small fraction of your visitors. Solutions to prevent this from happening:

    • Remove some sensitive content (this chapter explains how)

    • Totally deactivate this for all users (some features may then be unavailable like Session Replay or retroactive background; ask your Account Manager)

  2. Into Custom Variables sent to Contentsquare servers (to prevent this from happening, make sure that the values that you wish to collect could not be linked to one individual)

  • The tag doesn't collect the values of form fields. For a field change, it collects which field changed and whether it was left blank, never its content.

  • The tag doesn't collect what the user types. Keystrokes are collected as categories, not characters: every letter, digit, and symbol is reported as a single alphanumerical value, alongside the named keys (Enter, Backspace, Delete, Tab, Escape, arrows, and the modifier keys).

  • The tag redacts the following patterns before the data is sent to Contentsquare servers:

    PatternReplaced with
    Email addresses, including URL-encoded onesCS_ANONYMIZED_EMAIL
    Credit card numbers, when the number passes a Luhn checksumCS_ANONYMIZED_PII
    Digit sequences of 9 digits or more, such as phone and social security numbers• per digit

    Email redaction applies to URLs, Custom Vars, Dynamic Vars, e-commerce transaction IDs, Session Replay, and the messages collected by Error analysis. Credit card and digit-sequence redaction applies to the text collected by Session Replay. If your project masks numbers, every digit is redacted instead. Target text is not redacted: when it contains any of these patterns, it is not collected at all.

The Tag automatically collects the following data. Any values you explicitly send via Custom Vars or Dynamic Vars are also collected.

Rows marked accessibility analysis only are collected only when accessibility analysis is active on the project. Everything else is collected by default.

DataUsageValue example
User AgentDevice type (desktop/tablet/mobile) and browser detectionMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv
.7.5)
City GeolocationWeb users geolocation (based on the IP address; for more info on IP Addresses see dedicated section)Paris, France
URLMappings: group pageviews on similar page templateshttps://en.wikipedia.org/ ↗
Screen ResolutionSegments1600x900
RefererSegments: traffic source detectionhttps://google.com
ClicksZoning Analysis{target: "div#zone", t:1500}
Clicked Element (button and link)Segmentation, Funnels{target: "button#checkout", t:1500, text: "Checkout"}
Clicked Element (all elements)Segmentation, Funnels{target: "button#checkout", t:1500, text: "Checkout"}
HoversZoning Analysis{target: "div#zone", t:1500}
ScrollZoning Analysis (exposure metrics){top:0px, left: 0px; t:1500}
Mouse moveActivity rate{x:200, y:800, t:1500}
FocusKeyboard navigation metrics (accessibility analysis only){target: "input#email", t:1500}
Tap, drag, flickZoning Analysis, Session Replay (mobile gestures){target: "div#carousel", direction: "left", t:1500}
Field changeSegmentation, Funnels (which field changed, and whether it was left blank){target: "input#email", blank: true, t:1500}
Form submitSegmentation, Funnels{target: "form#checkout", t:1500}
Keystroke categoryActivity rate{target: "input#email", key: "alphanumerical", t:1500}
Text selection lengthAccessibility analysis only (character count, never the text){len:42, t:1500}
Window resizeSegments{x:1280, y:720, t:1500}
Zoom levelAccessibility analysis only{val:1.5, t:1500}
Web VitalsSpeed Analysis: LCP, CLS, FCP, TTFB, and INP{name: "LCP", val:2400}

The two Clicked Element rows in the previous table correspond to the target-text setting on your project, which decides which elements contribute their text:

  • Buttons and links only — text is collected for the nearest button or a ancestor of the clicked element, and nothing else.
  • All elements — any clicked element contributes its text.

Target text is trimmed to 100 characters. It is dropped entirely when the element is masked, when it contains a masked child, or when its text contains one of the redacted patterns, or any digit if your project masks numbers.

Collected when you send e-commerce transactions — see E-commerce transactions.

DataValue example
Transaction ID1234
Total (revenue)11.99
CurrencyUSD
Product Total (Merchandising only)11.99
Product ID / SKU (Merchandising only)1234
Product name (Merchandising only)Green shoes
Product quantity (Merchandising only)1
Product category (Merchandising only)Shoes

Additional data on the Contentsquare Experience Platform

Section titled Additional data on the Contentsquare Experience Platform

Projects collecting Product Analytics data natively send all the data described earlier on this page, plus the data in this section. See Product Analytics for the commands that produce it.

The Tag attaches the following parameters to every pageview and event request, so that reporting is not limited to the first pageview of a session. Session-level values are restored from the _cs_s_ctx cookie.

ParameterDataValue example
tPage titleCheckout — Confirmation
fvtSession start time1717060800000
fvurlSession landing pagehttps://example.com/home
fpvurlSession traffic sourcehttps://google.com
pvurlPrevious pageview URLhttps://example.com/cart
urlCurrent pageview URLhttps://example.com/checkout
cvtCurrent pageview time1717060860000
swScreen width1600
shScreen height900
iEncrypted user identity set via identifybfuKr7A9WgrhAgm2
…
cvarpPage-level custom properties{"plan":"premium"}
happidProduct Analytics environment ID of the project2748219634
cwCollection mode (1 native, 2 legacy sideloading)1

Page title collection can be disabled with hidePageTitle.

click, tap, change, and submit interactions are collected as events so they can be analyzed without prior tagging. Each one carries:

  • The target path of the element the user interacted with.
  • The element hierarchy of that element, when hierarchy collection is enabled on the project.
  • The merged custom properties in scope: pageview properties, visit properties, and any properties resolved by your event enrichers.

The hierarchy is the chain of ancestor elements from the interacted element up to — and stopping at — the document body. Each level is serialized as its tag name, then its id, then its classes in alphabetical order, then its remaining attributes:

@button;#submit-order;.btn;.btn-primary;[data-testid=confirm];|@div;.checkout-footer;|

Levels are separated by |. The whole hierarchy is capped at 1024 characters and truncated from the outermost level; a single attribute value longer than 1024 characters is dropped.

The following are never collected, whatever your masking settings:

ExcludedReason
The value attribute of form inputsHolds what the user typed
data-com.agilebits.onepassword.initial-value, data-com.onepassword.ivCan hold passwords (1Password)
data-initial-value, data-previous-valueCan hold personal data (v-mask)
onclick, onsubmitInline JavaScript
styleInline CSS, too verbose
data-ember-action, data-react-checksum, data-reactidFramework internals, no analytical value
maxlengthTechnical constraint, no analytical value
On SVG elements, every attribute except data-* and aria-labelNo analytical value

Hierarchy collection also respects your project's masking settings. On a masked element, no attributes are collected at all. When anonymization is active, attributes outside your project's allowlist are collected by name only, without their value.