CookiePro / OneTrust
Installation
npm install @walkeros/web-source-cmp-cookiepro
Usage
import { startFlow } from '@walkeros/collector';
import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';
await startFlow({
sources: {
consent: {
code: sourceCookiePro,
},
},
});
Settings
| Setting | Type | Default | Description |
|---|---|---|---|
categoryMap | Record<string, string> | See below | Maps CookiePro category IDs to walkerOS groups |
explicitOnly | boolean | true | Only process explicit consent (user made a choice) |
globalName | string | 'OneTrust' | Custom name for window.OneTrust object |
CookiePro categories
CookiePro registers cookies and assigns them to categories. Those categories are mapped to walkerOS consent groups:

Default category mapping
{
C0001: 'functional', // Strictly Necessary
C0002: 'analytics', // Performance
C0003: 'functional', // Functional
C0004: 'marketing', // Targeting
C0005: 'marketing', // Social Media
}
Category ID comparison is case-insensitive. Unmapped category IDs are ignored
since CookiePro's opaque IDs are meaningless without a mapping. All mapped
walkerOS groups receive explicit true/false values — absent groups are set
to false so destinations know which consent is denied.
Custom entries are merged with the default mapping. Specify only the categories you want to override — all other defaults remain active.
Custom mapping example
await startFlow({
sources: {
consent: {
code: sourceCookiePro,
config: {
settings: {
categoryMap: {
C0002: 'statistics', // Use 'statistics' instead of 'analytics'
},
explicitOnly: true,
},
},
},
},
});
How it works
-
Already loaded: Checks if
window.OneTrustandwindow.OptanonActiveGroupsalready exist. If so, processes consent immediately. -
OptanonWrapper: If the SDK isn't loaded yet, wraps the global
OptanonWrappercallback (preserving any existing wrapper). The wrapper self-unwraps after the first call. -
OneTrustGroupsUpdated event: Listens for the
OneTrustGroupsUpdatedwindow event, which fires on every consent change. -
Parsing: Splits the
OptanonActiveGroupscomma-separated string, maps category IDs throughcategoryMap, and callselb('walker consent', state). Sets explicitfalsefor all mapped groups not in the active list.
Timing considerations
The source handles all timing scenarios:
- SDK loads before source: The "already loaded" check reads existing consent
from
OptanonActiveGroupsimmediately. - Source loads before SDK: The
OptanonWrapperwrapping intercepts the SDK's init callback. explicitOnly(default): UsesOneTrust.IsAlertBoxClosed()to determine if the user has actively interacted with the consent banner.