How are user and session identities handled by Constructor?

To optimize for a privacy-first architecture, Constructor handles identity creation and session management on the client side in our JavaScript client as well as our SDKs for iOS and Android.

First visit

A random string of characters (UUID) is created by Constructor's tracking library on a user's first visit to a site, which is saved in the browser. This random ID is passed as the i parameter with all subsequent requests, the first of which is the session start event. The s parameter refers to the session number and is initialized at 1.

Subsequent visits

Constructor's tracking library checks if a random UUID exists in the user's browser local storage and uses this ID to refer to the user's visits in the browser. If there has been a period of more than 30 minutes of inactivity since the last visit or action, the s parameter is incremented by 1 and a new session start event is sent.

Privacy

The UUID is saved in one of two ways, both methods are engineered with user privacy as a top priority. By default the UUID is stored in the browser's local storage. To support some integrations, the beacon will store this UUID in a first-party cookie set on a customer's domain and is not accessible to Constructor or our SDKs when users visit any other site. By using only local storage or first-party cookies, we avoid all privacy concerns with third-party cookies.

Basic tracking requirements

All of the preceding actions are handled transparently in all client-side Constructor libraries. No additional implementation work is required to instantiate or pass along these parameters.

Omnichannel tracking capabilities

Some customers want to provide their users omnichannel personalization, allowing them to personalize and optimize a user's experience across all the devices they use. For these customers, we provide the optional ui parameter, which allows our customers to tie interactions across different browsers to one canonical user identity.

This ID has no meaning to Constructor apart from the common interactions and behavioral data, so cannot be used by Constructor to identify a user outside a customer's properties and does not constitute PII.

More information and setup instructions can be found in Omnichannel personalization.

Contexts

The i, ui and s parameters are used in two key contexts:

Personalizing results for search, autosuggest, recommendations and browse requests.
Tracking users' behavior on-site and their interaction with search, autosuggest, recommendations, and browse results.

UI tracking contexts

The ui parameter can be passed to the JavaScript, iOS and Android SDKs to add that parameter to behavioral tracking events. For requesting results, the ui parameter can be added on the client side for front-end integrations, or can be added to requests in our server client libraries for back-end integrations.