Skip to main content

Consent events (Enhanced Consent)

Enhanced consent is the recommended way to track marketing consent events on your website.

Events

consent_preferences

Event
Schema for consent preferences selection event
Schema URIiglu:com.snowplowanalytics.snowplow/consent_preferences/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"basisForProcessing": "consent",
"consentVersion": "1",
"consentScopes": [
"necessary",
"preferences",
"statistics"
],
"domainsApplied": [
"https://www.example.com/"
],
"consentUrl": "https://www.example.com/",
"eventType": "allow_selected",
"gdprApplies": false
}
Schema
PropertyDescription
eventType
Required. The action for the consent preferences of a user.
Must be one of: deny_all, allow_all, allow_selected, pending, implicit_consent, withdrawn, expired
basisForProcessing
Required. GDPR lawful basis for data collection & processing.
Must be one of: consent, contract, legal_obligation, vital_interests, public_task, legitimate_interests
consentUrl
string
Required. URI of the privacy policy related document.
consentVersion
string
Required. Version of the privacy policy related document.
consentScopes
array
Required. The scopes allowed after the user finalized his selection of consent preferences. E.g ['analytics', 'functional', 'advertisement'].
domainsApplied
array
Required. The domains for which this consent allows these preferences to persist to.
gdprApplies
boolean
Optional. Determine if GDPR applies based on the user's geo-location.
Warehouse query
select
unstruct_event_com_snowplowanalytics_snowplow_consent_preferences_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'consent_preferences'
and events.event_vendor = 'com.snowplowanalytics.snowplow'

cmp_visible

Event
Tracks the load time of Consent Management Platform (CMP) banners.
Schema URIiglu:com.snowplowanalytics.snowplow/cmp_visible/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"elapsedTime": 1.5
}
Schema
PropertyDescription
elapsedTime
number
Required. The time taken for the consent popup to be shown to the screen.
Warehouse query
select
unstruct_event_com_snowplowanalytics_snowplow_cmp_visible_1_0_0
from
PIPELINE_NAME.events events
where
events.collector_tstamp > timestamp_sub(current_timestamp(), interval 1 hour)
and events.event = 'unstruct'
and events.event_name = 'cmp_visible'
and events.event_vendor = 'com.snowplowanalytics.snowplow'

How to track?

To track enhanced consent events using the JavaScript tracker on Web, you can make use of the Enhanced Consent plugin.

Modeled data using the snowplow-web dbt package

To process raw events created by the Snowplow Enhanced Consent plugin we have included an optional module to model consent events in the snowplow-web dbt package.

This custom module consists of a series of dbt models which produce the following aggregated models from the raw consent tracking events:

Derived tableTable description
snowplow_web_consent_logSnowplow incremental table showing the audit trail of consent and Consent Management Platform (cmp) eventsDocs
snowplow_web_consent_usersIncremental table of user consent tracking statsDocs
snowplow_web_consent_totalsSummary of the latest consent status, per consent versionDocs
snowplow_web_consent_scope_statusAggregate of current number of users consented to each consent scopeDocs
snowplow_web_cmp_statsUsed for modeling cmp_visible events and related metricsDocs
snowplow_web_consent_versionsIncremental table used to keep track of each consent version and its validityDocs

Visit the Consent Tracking for Marketing accelerator for an end-to-end tutorial on how to track and model consent data using Snowplow.

Older consent APIs and events

There is an option to track older consent granted and consent withdrawn events in our trackers. However, we recommend using the Enhanced Consent events as they are more up-to-date.

To learn how to track consent granted and withdrawn events, see:

The tracking consists of two events (consent_granted and consent_withdrawn) and two context entities (consent_document and gdpr).

consent_granted

Schema
Schema for consent granted
Schema URIiglu:com.snowplowanalytics.snowplow/consent_granted/jsonschema/1-0-0
Schema
PropertyDescription
expiry
string
Optional.

consent_withdrawn

Schema
Schema for consent withdrawn
Schema URIiglu:com.snowplowanalytics.snowplow/consent_withdrawn/jsonschema/1-0-0
Schema
PropertyDescription
all
boolean
Required.

consent_document

Schema
Schema for consent document context
Schema URIiglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0
Schema
PropertyDescription
id
string
Required.
version
string
Required.
name
string
Optional.
description
string
Optional.

gdpr

Schema
Schema for a web page context
Schema URIiglu:com.snowplowanalytics.snowplow/gdpr/jsonschema/1-0-0
Schema
PropertyDescription
basisForProcessing
string
Required. GDPR basis for data collection & processing
Must be one of: consent, contract, legal_obligation, vital_interests, public_task, legitimate_interests
documentId
string
Optional. ID for document detailing basis for processing
documentVersion
string
Optional. Version of document detailing basis for processing
documentDescription
string
Optional. Description of document detailing basis for processing