Enhanced Consent
This plugin is the recommended way to track marketing consent events on your website. Functions, usage and a complete setup journey is showcased on the Consent Tracking for Marketing accelerator.
| Tracker Distribution | Included | 
|---|---|
sp.js | ❌ | 
sp.lite.js | ❌ | 
The plugin is available since version 3.8 of the tracker.
Download
| Download from GitHub Releases (Recommended) | Github Releases (plugins.umd.zip) | 
| Available on jsDelivr | jsDelivr (latest) | 
| Available on unpkg | unpkg (latest) | 
Initialization
window.snowplow(
    'addPlugin',
    'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-enhanced-consent@latest/dist/index.umd.min.js',
    ['snowplowEnhancedConsentTracking', 'EnhancedConsentPlugin']
);
Functions
| API | Used for: | 
|---|---|
trackConsentAllow | Track an acceptance of user consent. | 
trackConsentSelected | Track a specific selection of consented scopes. | 
trackConsentPending | Track the unconfirmed selection about user consent. | 
trackConsentImplicit | Track the implicit consent on user consent preferences. | 
trackConsentDeny | Track a denial of user consent. | 
trackConsentExpired | Track the expiration of a consent selection. | 
trackConsentWithdrawn | Track the withdrawal of user consent. | 
trackCmpVisible | Track the render time of a CMP banner. | 
Usage
trackConsentAllow
To track the complete acceptance of a user consent prompt, you can use the trackConsentAllow method with the following attributes:
window.snowplow("trackConsentAllow:{trackerName}", {
    consentScopes: ["necessary", "marketing", "personalization"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackConsentSelected
To track the specific selection of scopes of a user consent preferences, you can use the trackConsentSelected method with the following attributes:
window.snowplow("trackConsentSelected:{trackerName}", {
    consentScopes: ["necessary", "marketing", "personalization"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackConsentPending
Some consent management platform installations, allow the user to take website actions or/and navigating to other pages without accepting the consent prompt. To track the unconfirmed selection of user consent, you can use the trackConsentPending method with the following attributes:
window.snowplow("trackConsentPending:{trackerName}", {
    consentScopes: ["necessary", "marketing", "personalization"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackConsentImplicit
Some consent management platforms have a configuration which allows the setting of consent implicitly after a set of user interactions like clicks, scroll etc. To track the implicit selection of a user consent, you can use the trackConsentImplicit method with the following attributes:
window.snowplow("trackConsentImplicit:{trackerName}", {
    consentScopes: ["necessary", "marketing", "personalization"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackConsentDeny
To track the complete denial of a user consent, you can use the trackConsentDeny method with the following attributes:
window.snowplow("trackConsentDeny:{trackerName}", {
    consentScopes: ["necessary"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackConsentExpired
To track the expiration of a user consent, you can use the trackConsentExpired method with the following attributes:
window.snowplow("trackConsentExpired:{trackerName}", {
    consentScopes: ["necessary", "marketing", "personalization"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackConsentWithdrawn
To track the withdrawal of a user consent, you can use the trackConsentWithdrawn method with the following attributes:
window.snowplow("trackConsentWithdrawn:{trackerName}", {
    consentScopes: ["necessary", "marketing", "personalization"],
    basisForProcessing: "consent",
    consentUrl: "https://www.example.com/",
    consentVersion: "1.0",
    domainsApplied: ["https://www.example.com/"],
    gdprApplies: true
});
trackCmpVisible
Consent management platform banners are an important part of a website’s first impression and performance. Snowplow provides a way to track what we call elapsedTime, which is the timestamp of the consent management platform banner becoming visible on the user’s screen.
window.snowplow("trackCmpVisible:{trackerName}", {
    /* Using the performance.now API to retrieve the elapsed time from the page navigation. */
    elapsedTime: performance.now(),
});
Entities
Below is main entity used for tracking consent in the Snowplow Enhanced Consent implementation.
Consent Entity
An consent entity can have the following attributes:
| attribute | type | description | required | 
|---|---|---|---|
| basisForProcessing | string | GDPR lawful basis for data collection & processing. | ✅ | 
| consentUrl | string | URI of the privacy policy related document. | ✅ | 
| consentVersion | string | Version of the privacy policy related document. | ✅ | 
| consentScopes | string[] | The scopes allowed after the user finalized his selection of consent preferences. E.g ['analytics', 'functional', 'advertisement']. | ✅ | 
| domainsApplied | string[] | The domains for which this consent allows these preferences to persist to. | ✅ | 
| gdprApplies | boolean | Determine if GDPR applies based on the user's geo-location. | ✘ |