What Grain stores
Grain keeps an ephemeral session ID in memory until a visitor grants consent. The data Grain collects depends on the consent state:
Grain strips query parameters from the page path before consent. A query string can carry
personal data. Every event carries a
_consent_status property with the value granted or
pending, so the dashboard can separate the two states.
Consent also gates the automatic properties, for example the referrer, the page title, and the
UTM parameters. Read Automatic tracking. Read
Automatic properties.
Consent modes
Each SDK has aconsentMode configuration value. The default mode of both SDKs needs no consent
banner. The TypeScript types of the published packages win over this page when they disagree.
Grain Tag
The instance exposes three consent calls:
The categories are
necessary, analytics, functional, and marketing.
Analytics Web
The
waitForConsent configuration value applies to GDPR_STRICT only. When it is true, the
SDK holds events in a queue until the user grants consent, then sends them.
onConsentChange(listener) and offConsentChange(listener) subscribe to changes of the state.
The SDK stores the consent preference itself in localStorage. This storage holds the
preference only, not a tracking identifier.
IP anonymization
IP masking removes the last octet of the address before storage:Data retention
Grain deletes events after the retention period. You can export the data of a user before Grain deletes it.User rights
The privacy endpoints take the tenant alias in the path and the API key in theX-API-Key
header. Read Authentication.
Access (GDPR Article 15)
The export returns JSON with every event, every property, and the consent history of the user.Erasure (GDPR Article 17)
Anonymization
Anonymization replaces the user ID with a random UUID. The aggregated analytics stay intact.Data residency
Grain stores all analytics and configuration data in EU data centers by default. Xreos, the company behind Grain, is based in the US.
A US (East) region in Virginia is planned. Region selection will be part of
tenant creation.
Processors
Grain gives 30 days of notice before a change to this list. Enterprise customers can object to a
new subprocessor.
Certifications
Security measures
Incident response
Dashboard privacy controls
The privacy settings are athttps://grainql.com/dashboard/privacy:
Read Install Grain for the code that installs the SDK and the consent calls.