CookieFirst
Integrates CookieFirst consent management with walkerOS by listening for CookieFirst events and translating consent categories to walkerOS consent groups.
Installation
npm install @walkeros/web-source-cmp-cookiefirst
import { startFlow } from '@walkeros/collector';
import { sourceCookieFirst } from '@walkeros/web-source-cmp-cookiefirst';
await startFlow({
sources: {
consent: {
code: sourceCookieFirst,
},
},
});
Configuration
This source uses the standard source config wrapper (consent, data, env, id, ...). For the shared fields see source configuration. Package-specific fields live under config.settings and are listed below.
Settings
| Property | Type | Description | More |
|---|---|---|---|
categoryMap | Record<string, string> | Map the CMP's consent categories (keys) to walkerOS consent groups (values). | |
explicitOnly | boolean | Only process consent after the user made an explicit choice. Ignores default/implicit states. Default: true. | |
globalName | string | Custom name for the CookieFirst global on window. Default: 'CookieFirst'. |
Mapping
This package does not define custom rule-level settings. For the standard rule fields (consent, condition, data, batch, name, policy) see mapping.
Examples
category map override
cf init detection
full consent
partial consent
How it works
-
Initialization: Checks if CookieFirst is already loaded and processes existing consent state from
window.CookieFirst.consent. -
cf_init event: Listens for the
cf_initevent fired when CookieFirst banner initializes. -
cf_consent event: Listens for the
cf_consentevent fired when user changes consent preferences. -
Consent mapping: Translates CookieFirst categories to walkerOS consent groups and calls
elb('walker consent', state).
Default category mapping
{
necessary: 'functional',
functional: 'functional',
performance: 'analytics',
advertising: 'marketing',
}
When multiple CookieFirst categories map to the same walkerOS group (e.g., both
necessary and functional to functional), the source uses OR logic: if ANY
source category is true, the target group is true.
Custom mapping example
await startFlow({
sources: {
consent: {
code: sourceCookieFirst,
config: {
settings: {
categoryMap: {
performance: 'statistics', // Use 'statistics' instead of 'analytics'
},
explicitOnly: true,
},
},
},
},
});