Cookies, storage and consent categories for your site
A privacy or web owner uses this page to disclose what the Noxtica browser SDK writes on a visitor’s device. It lists each cookie and storage entry with its store, lifetime, writer and consent category. It also explains how Do Not Track (DNT) and Global Privacy Control (GPC) signals change what the collector accepts.
The tables are an engineering inventory, not legal advice. Your counsel decides how to classify each entry under the rules that apply to you. The cookie notice for Noxtica’s own websites is at Cookies.
Key points
- Core writes no persistent storageThe core script writes only per-tab sessionStorage entries. Cookies, localStorage and IndexedDB entries come from the extensions.
- Three device cookiesnox_fp_<sk>, nox_itp_canary_<sk> and nox_tri_<sk> last 400 days, are host-only, use SameSite=Lax and are not HttpOnly.
- Withdrawal deletes the device keysWithdrawing the deviceId category deletes the three keys and the IndexedDB database nox_kv_<sk>.
- DNT and GPC follow the domain policyWith Honor, monitoring, error detail and console logs are refused with HTTP 403. Replay follows its own policy. The tracker answers 200 and processes nothing.
What it is
Availability: depends on your plan, role and the modules enabled for your organisation.
<sk> below is the Site Key of your domain. The SDK has two scripts. The core script runs on every page. The extensions script runs after your page allows it. The core writes no cookie, no localStorage and no IndexedDB. It writes per-tab sessionStorage entries and nothing else. Everything persistent comes from the extensions.
Cookie and storage inventory
| Name | Store | Lifetime | Written by | Consent category |
|---|---|---|---|---|
nox_fp_<sk> | Cookie, localStorage, IndexedDB | 400 days | Extensions | deviceId |
nox_itp_canary_<sk> | Cookie, localStorage, IndexedDB | 400 days | Extensions | deviceId |
nox_tri_<sk> | Cookie, localStorage, IndexedDB | 400 days | Extensions | deviceId |
nox_kv_<sk> | IndexedDB database that holds the three keys above | Same as the keys | Extensions | deviceId |
nox_lock_<sk> | localStorage | At most 30 seconds | Extensions | deviceId |
nox_buf_<sk> | IndexedDB | Undelivered events dropped after 72 hours | Extensions | analytics |
noxtica.session.<sk>.token | sessionStorage | Until the tab closes | Core | None, security session state |
noxtica.session.<sk>.protect.<action> | sessionStorage | Until the tab closes, read once and removed | Core | None, security session state |
noxtica.session.khanvm, noxtica.session.gpuvm | sessionStorage | Until the tab closes | Extensions | None |
__noxtica_khan_accel_v1 | sessionStorage | Until the tab closes | Extensions | None |
nx_replay_tab_id, nx_replay_session_v1 | sessionStorage | Until the tab closes, or 30 minutes idle by default | Extensions | replay |
cookietest, _nox_test | Cookie, localStorage, sessionStorage | Removed in the same call | Extensions | None |
What each entry holds:
nox_fp_<sk>is the device record: the device identifier, the last-submit time and the state schema version. The localStorage and IndexedDB copies also keep the last check result (score, risk level, confidence, flags). From SDK 3.8.1 the cookie copy holds only the schema version, the device identifier and the last-submit time, as URI-encoded JSON.nox_itp_canary_<sk>is a purge canary, a timestamp that tells the SDK a browser purged its storage.nox_tri_<sk>is a token refresh interval hint.nox_lock_<sk>is a cross-tab lock. It is used when the browser has no Web Locks API, and it is not written while persistent storage is closed.nox_buf_<sk>buffers real-user-monitoring and console-log events until they are delivered.noxtica.session.<sk>.tokencaches the session token so later pages in the same tab skip a round trip.
Cookie attributes
The three device cookies nox_fp_<sk>, nox_itp_canary_<sk> and nox_tri_<sk> are written by script with these attributes.
| Attribute | Value |
|---|---|
| Lifetime | 400 days |
| Path | / |
| Domain | Not set, so the cookie is host-only |
| SameSite | Lax |
| Secure | Added on https pages |
| HttpOnly | Not set. A script writes the cookie and the SDK reads it back to restore storage that a browser purged. |
Consent categories
| Category | What a grant enables | Storage it governs |
|---|---|---|
deviceId | Persistent device storage and the persistent device-recognition token. | The three device keys, nox_kv_<sk> and nox_lock_<sk>. |
analytics | Real-user monitoring, error detail, console-log capture, the interaction tracker and the durable event buffer. | nox_buf_<sk>. |
replay | Session replay recording and upload. | nx_replay_tab_id, nx_replay_session_v1. |
behavioral | Behavioral signals, pointer and touch tracks, geolocation, cookie contents, the extension probe, favicon detection and the WebRTC probe. | No storage entry. |
In a gated consent mode (api or a cookie mode), nothing persistent is written until deviceId is granted and the domain’s persistent device recognition setting is on. Before that, the three device keys are held in memory and sessionStorage under the same names. When deviceId is withdrawn, the SDK deletes the three keys from localStorage and cookies and deletes the IndexedDB database nox_kv_<sk>. In the not_required mode the extensions write the device record as soon as they load, unless your page denies deviceId. See Consent modes.
Third-party network contacts
| Contact | When it happens |
|---|---|
challenges.cloudflare.com | The SDK loads Cloudflare Turnstile when the server requests a challenge. |
stun.l.google.com on port 19302 | The WebRTC probe uses this public STUN server. It runs when the behavioral category is allowed and the probe is enabled for your domain. |
DNT and GPC
The SDK reports a visitor’s browser signal in getConsent().privacySignal: gpc when navigator.globalPrivacyControl is true, dnt when doNotTrack is 1 or yes, otherwise null. Browsers send Sec-GPC: 1 or DNT: 1 on requests.
The collector acts on the signal according to the domain’s DNT/GPC policy. Real-user monitoring, error detail, console logs and the interaction tracker follow the policy you set in Web Analytics & Privacy → Consent & Privacy. Session replay has its own DNT/GPC policy per domain in Web Analytics & Privacy → Capture Policies. New domains start on Honor in the Consent & Privacy decision, and the Capture Policies form starts on Honor too. With Honor and a signal present:
| Lane | What the collector does |
|---|---|
| Real-user monitoring | Refuses with HTTP 403 and “RUM not enabled for this domain”. |
| Error detail | Refuses with HTTP 403 and rum_error_detail_dnt_gpc_honored. |
| Console logs | Refuses with HTTP 403 and console_logs_dnt_gpc_honored. |
| Session replay | Refuses with HTTP 403 and replay_dnt_gpc_honored. |
| Interaction tracker | Answers HTTP 200 with {"ok":true,"eventsProcessed":0,"reason":"dnt_gpc_honored"} and processes nothing. |
With Documented override the lane is not refused for the signal. For real-user monitoring, an override needs the approved legal basis rum_observability and your acknowledgement. This page does not state that a signal stops the core security check.
Prerequisites
- A domain with the SDK installed. See Install and browser runtime.
- Your consent mode chosen for the domain. See Consent modes.
- The administrator role to read the CSP & storage tab and to save a consent decision.
- Your counsel’s classification of each entry for your jurisdiction.
Steps
1. Open the generated storage table
- Open Backoffice → Integrations & API → Script & Consent.
- Select your domain if the page asks for one, then the CSP & storage tab.
- Read the table “Cookies and browser storage written by the collector”. Backoffice generates it from the SDK source.
2. Choose the rows for your setup
- If you run the core script alone, disclose the sessionStorage rows marked Core.
- If you load the extensions, add the rows that match the categories you grant.
- Add
nox_buf_<sk>when you grantanalytics, and the replay rows when you grantreplay.
3. Map categories to your consent tool
Connect your consent tool to the four categories with client.setConsent. The mapping is your decision. Example:
const client = window.noxticaClient;
const state = (allowed) => (allowed ? 'granted' : 'denied');
cmp.onConsentChanged((choices) => {
client.setConsent({
deviceId: state(choices.preferences),
analytics: state(choices.statistics),
replay: state(choices.statistics),
behavioral: state(choices.marketing),
});
});
4. Publish the disclosure
Copy the inventory into your cookie policy. State for each row the name, store, lifetime and purpose. Name the third-party contacts that apply to your setup.
5. Set the DNT and GPC policy
- Open Web Analytics & Privacy → Consent & Privacy. Domains that still need a decision are listed. A domain whose decision is already recorded does not appear.
- In the row of a listed domain, choose the DNT/GPC policy. Keep Honor unless your counsel advises otherwise. Session replay has a separate DNT/GPC policy in Web Analytics & Privacy → Capture Policies.
- Save and complete the step-up check. A documented override also needs the legal basis and the acknowledgement.
6. Set your own console preference
Open Backoffice → Settings. In Privacy & cookies, switch Analytics, session replay and device recognition on or off for your own account. Turning it off stops collection and deletes what was stored on that device.
Open the generated storage table
Open Script & Consent, then the CSP & storage tab, and read the table.
Choose the rows for your setup
Disclose the core rows always, and add rows for each category you grant.
Map categories to your consent tool
Connect your consent tool to the four categories with setConsent.
Publish the disclosure
Copy the inventory into your cookie policy with name, store, lifetime and purpose.
Set the DNT and GPC policy
Choose Honor or a documented override per domain. Replay has its own policy in Capture Policies.
Set your own console preference
Switch the Privacy & cookies option in Settings on or off for your own account.
Verify it works
With the consent mode api and nothing granted, check the page in your browser developer tools.
- Application → Cookies shows no
nox_cookie. Object.keys(localStorage).filter((k) => k.startsWith('nox_'))returns an empty array.- sessionStorage shows
noxtica.session.<sk>.token. - After you grant
deviceIdand load the extensions, the three device cookies appear withPath=/,SameSite=Laxand a 400-day lifetime, and noDomainattribute. - After you withdraw
deviceId, the three keys and thenox_kv_<sk>database disappear. - With a browser GPC signal on and the policy on Honor, a real-user-monitoring request returns HTTP 403, and a replay upload is refused.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
A nox_fp_<sk> entry exists before consent. | The domain mode is not_required, or the entry is the sessionStorage copy held before deviceId is granted. | Check the mode with getConsent().mode. Choose a gated mode if visitors must decide first. |
| No device cookie appears after consent. | The extensions did not load, or persistent device recognition is off for the domain. | Check noxtica:extensions-loaded and the domain setting. |
nox_buf_<sk> is missing. | analytics is not granted, or no monitoring event was buffered. | Grant analytics. |
| Monitoring requests return HTTP 403 for some visitors. | The policy is Honor and the visitor’s browser sends a GPC or DNT signal. | This is intended. Choose a documented override when your counsel approves it. |
| A proxy breaks consent enforcement. | The loader adds an nxc query parameter to collector requests. A proxy that removes it makes the collector count nothing as granted. | Keep nxc in proxies and rewrite rules. |
| The cookie is larger than expected on an older loader. | Before SDK 3.8.1 the cookie also held the last check result. | Update the loader. |
Related
- Consent modes, GPC and Google Consent Mode: how consent modes and categories work in the SDK.
- Install and browser runtime: install tags, the Content Security Policy and the consent matrix.
- Legal basis register and receipts: the per-domain consent decision.
- Privacy and compliance controls in Backoffice: map of every privacy page.
- Cookies and Privacy Policy: the public legal documents for Noxtica’s own sites.