Usercentrics
Installation
npm install @walkeros/web-source-cmp-usercentrics
Usage
import { startFlow } from '@walkeros/collector';
import { sourceUsercentrics } from '@walkeros/web-source-cmp-usercentrics';
await startFlow({
sources: {
consent: {
code: sourceUsercentrics,
config: {
settings: {
eventName: 'ucEvent', // Must match your Usercentrics admin config
categoryMap: {
essential: 'functional',
functional: 'functional',
marketing: 'marketing',
},
},
},
},
},
});
Settings
| Setting | Type | Default | Description |
|---|---|---|---|
eventName | string | 'ucEvent' | Window event name configured in Usercentrics admin |
categoryMap | Record<string, string> | {} | Maps Usercentrics categories to walkerOS consent groups |
explicitOnly | boolean | true | Only process explicit consent (user made a choice) |
Usercentrics setup
Configure a Window Event in your Usercentrics admin:
Implementation > Data Layer & Events > Window Event Name (e.g., ucEvent).

Alternatively, set eventName: 'UC_SDK_EVENT' to use the built-in Browser SDK
event (no admin configuration required).
Custom mapping example
await startFlow({
sources: {
consent: {
code: sourceUsercentrics,
config: {
settings: {
eventName: 'ucEvent',
categoryMap: {
essential: 'functional',
functional: 'functional',
marketing: 'marketing',
},
explicitOnly: true,
},
},
},
},
});
How it works
-
Event listener: Registers a listener for the configured window event (default:
ucEvent). -
Group vs. service detection: Checks if
ucCategoryvalues are all booleans:- Group-level: Uses
ucCategoryas consent state (maps categories viacategoryMap) - Service-level: Extracts individual service booleans from
event.detail(normalized tolowercase_underscores) and appliescategoryMapto booleanucCategoryentries
- Group-level: Uses
-
Explicit filtering: By default, only processes events where
type === 'explicit'(user actively made a choice). SetexplicitOnly: falseto also process implicit/default consent. -
Consent command: Calls
elb('walker consent', state)with the mapped consent state.
Timing considerations
The source should be initialized before the Usercentrics script loads to avoid
missing the initial consent event. When using explicitOnly: true (default),
this is not a concern since the implicit init event is filtered anyway. For
explicitOnly: false, ensure the consent source has no require constraints
so it initializes immediately.