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
localStoragenorsessionStorage. - 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:
- name Humind as the chat widget provider in the privacy notice;
- add the functional storage below to the cookie policy or appropriate register;
- 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;
- 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;
- 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.
| Key | Storage | Data and purpose | Attention level | Retention |
|---|---|---|---|---|
__humind_local_storage_probe__ | localStorage | Temporary value used to check that storage is available | Purely technical | Deleted immediately |
humindVisitorId | localStorage | Pseudonymous identifier used to maintain visitor continuity | Pseudonymous data | 13 sliding months: the lifetime restarts on each visit, and the identifier is deleted after 13 months without a visit |
humindVisitorIdLastSeenAt | localStorage | Date of the latest visit, used only to enforce the visitor identifier's lifetime | Purely technical | Same lifetime as humindVisitorId, deleted with it |
humindSessionId | sessionStorage | Pseudonymous widget session identifier | Pseudonymous data | Tab session |
humind.humind-state.<companyId> | localStorage | Conversation identifiers and dates, resume tokens, short titles, and satisfaction flags | Pseudonymous data and access tokens | Each conversation entry is deleted 90 days after its last activity, matching the server-side lifetime of its resume token |
humind.cookie-consent.<companyId> | localStorage | The visitor's usage measurement choice (accepted or rejected), with its decision and expiry dates | Consent choice | 13 months from the decision, after which the choice is asked again |
humind.pre-chat-survey.<companyId> | localStorage | Record that the optional pre-chat survey was completed or skipped, with its dates. Contains no survey answer | Purely functional | 6 months from completion |
lastHumindNotificationTimestamp | localStorage | Date of the latest proactive invitation, used to limit repetition | Purely functional | Useful for 5 minutes, deleted at the next widget load once that window has passed |
humind:appointment-booking-request | sessionStorage | Technical booking request identifiers, related slots, and update date, with a maximum of 20 entries | Technical data linked to an action | Tab 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, orsessionStorage; - 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.
Consent behavior
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.
| Configuration | Behavior |
|---|---|
| No consent required in Humind or forwarded by the merchant | PostHog is active by default |
Consent required with a pending status | PostHog is not initialized before acceptance |
Status is accepted | Acceptance is stored and PostHog becomes active |
Status is rejected | Any 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.
Related pages
- Data retention and deletion: how long server-side data is kept and how it is deleted.
- Incident management and personal data breaches: how incidents are handled and merchants notified.