Skip to content

Humind widget: information for legal teams

This page describes the browser storage created by the Humind chat widget and the data sent to PostHog for usage measurement.

It is the reference inventory of that behavior: Humind keeps it up to date with each widget release, and merchants can rely on it for their register and cookie policy. The legal qualification of the full integration remains the merchant's, as controller, because it also depends on elements outside Humind's control, such as the merchant's CMP, tags, and policies.

At a glance

  • The widget uses functional storage to maintain a session, resume a conversation, and prevent certain duplicate actions.
  • Every persistent storage item has a defined lifetime. Expired items are deleted automatically the next time the widget loads.
  • PostHog sets no cookie and uses neither localStorage nor sessionStorage.
  • PostHog events are explicit and anonymous: they contain no visitor, conversation, or appointment identifier.
  • Usage measurement is therefore not subject to consent. PostHog is active by default.
  • A merchant can still choose to condition measurement on prior consent; in that case, PostHog is not initialized before acceptance.

Actions to plan

The merchant's legal team should:

  1. name Humind as the chat widget provider in the privacy notice;
  2. add the functional storage below to the cookie policy or appropriate register;
  3. note that no consent is required for usage measurement, which is anonymous; a merchant who still wishes to condition it on consent can do so through the Humind setting or its own CMP;
  4. reference Humind's sub-processor list, maintained in the DPA and available on request, for Humind's own providers: the usage measurement tool is a Humind sub-processor (currently PostHog Cloud EU, hosted in Frankfurt) and does not need to be named individually in the merchant's own notice;
  5. document separately the external services enabled by the merchant, including GTM, GA4, and booking tools.

Functional widget storage

These storage items support chat operation. They are not created by PostHog.

KeyStorageData and purposeAttention levelRetention
__humind_local_storage_probe__localStorageTemporary value used to check that storage is availablePurely technicalDeleted immediately
humindVisitorIdlocalStoragePseudonymous identifier used to maintain visitor continuityPseudonymous data13 sliding months: the lifetime restarts on each visit, and the identifier is deleted after 13 months without a visit
humindVisitorIdLastSeenAtlocalStorageDate of the latest visit, used only to enforce the visitor identifier's lifetimePurely technicalSame lifetime as humindVisitorId, deleted with it
humindSessionIdsessionStoragePseudonymous widget session identifierPseudonymous dataTab session
humind.humind-state.<companyId>localStorageConversation identifiers and dates, resume tokens, short titles, and satisfaction flagsPseudonymous data and access tokensEach conversation entry is deleted 90 days after its last activity, matching the server-side lifetime of its resume token
humind.cookie-consent.<companyId>localStorageThe visitor's usage measurement choice (accepted or rejected), with its decision and expiry datesConsent choice13 months from the decision, after which the choice is asked again
humind.pre-chat-survey.<companyId>localStorageRecord that the optional pre-chat survey was completed or skipped, with its dates. Contains no survey answerPurely functional6 months from completion
lastHumindNotificationTimestamplocalStorageDate of the latest proactive invitation, used to limit repetitionPurely functionalUseful for 5 minutes, deleted at the next widget load once that window has passed
humind:appointment-booking-requestsessionStorageTechnical booking request identifiers, related slots, and update date, with a maximum of 20 entriesTechnical data linked to an actionTab session, deleted when the list becomes empty

Lifetimes are enforced by the widget itself: localStorage has no native expiry, so each widget load deletes the items whose window has passed. The 13-month visitor lifetime follows the maximum duration admitted by the CNIL for trackers; the 90-day conversation lifetime matches the server-side validity of the resume token, which is a signed token that expires 90 days after the conversation's last activity and is rotated on each interaction.

A conversation's short title may reflect its subject. The resumeToken can be used to request that the conversation be resumed. Both should be protected as pseudonymous data and access tokens.

Usage measurement with PostHog

Humind uses PostHog to measure widget display and use, product and cart interactions, advisor requests, appointments, satisfaction, and technical errors.

Events may contain:

  • the Humind company identifier (the merchant, not the visitor);
  • the shop domain, integration type, page template, country, and environment;
  • product, store, or service identifiers from the merchant's catalog;
  • interaction measurements, functional states, and technical diagnostics.

The widget configuration:

  • creates no PostHog person profile;
  • uses no PostHog cookie, localStorage, or sessionStorage;
  • strips from every event, through a denylist applied at send time, any visitor, session, conversation, message, appointment, or contact identifier, as well as any email, name, or phone number;
  • disables session recording, autocapture, automatic pageviews, and campaign parameters;
  • excludes the IP address, merchant page URL, and referrer;
  • sends only semantic events triggered by the widget.

Traffic goes through ph.thehumind.com and is then forwarded to PostHog Cloud EU, hosted in Frankfurt.

Events are anonymous: they contain no identifier that could link them to a visitor or a conversation, PostHog stores nothing in the browser, and the technical sender id is random, limited to the current page load, and never linked to the visitor. Neither Humind nor PostHog can relate these events to a person. This is what places usage measurement outside the scope of consent: it relies on no tracker subject to Article 82 of the French Data Protection Act, and it processes no personal data.

Since usage measurement is anonymous, it is not subject to consent. The mechanism below is therefore optional: it exists for merchants who prefer, as an internal policy, to condition measurement on an explicit visitor choice or to drive it from their own CMP.

ConfigurationBehavior
No consent required in Humind or forwarded by the merchantPostHog is active by default
Consent required with a pending statusPostHog is not initialized before acceptance
Status is acceptedAcceptance is stored and PostHog becomes active
Status is rejectedAny previous acceptance is replaced, PostHog remains blocked, and the functional chat stays available

The merchant can require consent in Humind settings or forward the status from its own CMP through the cookie-consent attribute.

Both choices are stored in the browser, with the decision date and an expiry date 13 months later. After that expiry the stored choice is deleted and the question is asked again. After a refusal, no PostHog event is sent; the functional chat remains usable, and a visitor who accepted through the built-in banner can withdraw that acceptance at any time from the widget menu, and a visitor who refused can enable usage measurement again from the same menu.

When consent is required, events produced before acceptance are not sent later.

Items the merchant must complete

The merchant must complete its inventory with:

  • GA4, GTM, or other services triggered from its dataLayer;
  • external calendars and booking services displayed in the widget;
  • retention periods for conversations, server logs, and other processing performed outside the browser.

Regulatory references

Released under the proprietary Humind license.