Skip to main content
To learn which data Kameleoon stores on its backend servers—primarily for analytics and reporting—read the data collection back-end article.

Introduction

Like any web analytics solution, Kameleoon collects data such as URLs visited, browser version, and time spent on your website. As an experimentation and personalization platform, Kameleoon also requires real-time, persistent access to this data to trigger experiments and personalization campaigns with minimal latency. Because the JavaScript runtime environment resets on each page change, storing this data in memory alone is not possible. Instead, Kameleoon reads and writes data across different web pages (URLs). Fetching data from a backend server at the start of each page load is one alternative, but this approach has two drawbacks:
  • Performance cost: Each page load incurs an extra server call.
  • Scalability cost: Frequent server requests degrade performance at scale.
Local storage is a more efficient approach. It lets Kameleoon store data directly in the browser.

Local storage as a data storage mechanism

Kameleoon does not use cookies to store data for two reasons:
  • Cookies are not designed to store large amounts of data.
  • The browser sends cookies with every HTTP request, including requests for static resources such as images, which increases bandwidth usage and reduces performance.
Instead, Kameleoon uses Local Storage, a standard web technology that most browsers support. It works similarly to cookies but supports much larger storage capacity (typically a few MBs, depending on the browser). Compared to cookies, Local Storage has the following properties:
  • Only JavaScript can write to Local Storage—servers cannot.
  • Only JavaScript can read data from Local Storage.
  • The browser never sends Local Storage data to remote HTTP servers, which makes it more secure.
However, Local Storage has one key limitation: it is scoped to a single exact subdomain.

Local storage limitations for unified session data

Unlike cookies—where a script on http://www.example.com can create a cookie accessible from buy.example.com—Local Storage is partitioned by subdomain and protocol. For example, if your e-commerce website is hosted on https://www.randomshop.com but your conversion funnel runs on https://transaction.randomshop.com, Local Storage cannot share data between these two subdomains. This can produce inconsistent experiment variations across the customer journey, affecting both user experience and experiment validity. Kameleoon provides a mechanism to unify session data across subdomains. For details, see Unify session data across subdomains.

List of collected data

This page covers two categories of data:
  1. Data collected and stored for all visitors (excluding visitors who opted out).
  2. Data collected for internal use when Kameleoon users build experiments on the platform.
For data privacy purposes, focus on the first category. The second category applies only to a small number of internal employees.
Kameleoon always stores data in a first-party context, associated with your domain. Kameleoon never stores third-party data on Kameleoon-owned domains.

Data stored for all visitors

Data stored in Local Storage

Local Storage does not have a built-in expiration mechanism. To work around this, Kameleoon emulates lifespan expiration by storing data with two fields:
  • "value": The stored information.
  • "expirationDate": A timestamp that defines when Kameleoon stops using the data.
Example:
The kameleoonData key stores the following data for each visit (on this device only, or all visits if you use cross-device history reconciliation):
  • Custom data
  • Device type (mobile, tablet, or desktop)
  • Operating system
  • Browser name and version
  • Screen size
  • Window size
  • Browser time zone
  • Browser language
  • Original referrer (acquisition channel)
  • Number of pages viewed
  • Title and URL of pages visited
  • Time spent on the website
  • Visit start and end time
  • Number of open tabs
  • Whether an ad blocker is active
  • List of conversions (clicks, transactions, and other events)
  • List of personalizations and A/B experiments the visitor saw
  • Current weather conditions (if the targeting condition is active): temperature, wind, rain, and other conditions
  • Sunset time (if a weather targeting condition is active, because some weather criteria require it)
  • Weather forecast (if the targeting condition is active): temperature, wind, rain, and other conditions
  • Geolocation (if a geolocation or weather targeting condition is active)
  • IP address (if the targeting condition is active)
  • External segmentation data from a third-party DMP or CRM
  • Products seen (if the Product Targeting add-on is enabled)

Data stored in Session Storage

Data stored in cookies

Kameleoon uses only one cookie to store a randomly generated visitor identifier. The Kameleoon CDN may also set an optional cookie when it delivers the application file, unless you self-host the application file.If you use the Kameleoon Product Recommendation add-on, Kameleoon stores two additional cookies. You can contact your Customer Success Manager to enable a cookieless option that stores these data points in Local Storage instead.

Temporary data stored only for Kameleoon internal use

Data stored in cookies

Data stored in Local Storage

Data stored in Session Storage