Mapping
Mapping is walkerOS's code-free way to reshape events as they move through the flow. You describe the transformation as data (JSON or object literal), and the collector applies it at two stations: source push (clean and normalize incoming data) and destination transform (adapt to each tool's expected format).
Two concepts
Everything in walkerOS mapping is built from two building blocks:
- Mapping.Value: the polymorphic primitive. Whenever a
config field accepts a value (
data,map.*,policy.*,set[], …), you write aMapping.Value. There are eight forms (path, constant, map, loop, set, fn, condition, consent). - Mapping.Rule: the object on a destination's
mapping[entity][action]. It composes values into a complete rule (name,data,condition,consent,policy,batch,ignore,skip,settings).
When a destination doc shows data: any, the value you put there is a
Mapping.Value. The whole rule around it is a Mapping.Rule.
Minimal example
// Destination rule: transform "product view" for GA4
{
product: {
view: {
name: 'view_item',
data: {
map: {
item_id: 'data.id',
value: 'data.price',
currency: { value: 'USD' },
},
},
},
},
}
product.view is the entity-action key. name renames the event. data is a
Mapping.Value (specifically the map form) that builds the destination
payload.
Try it
Map events by their entity-action structure, live:
Where mapping runs
Source mapping cleans, filters, or renames incoming events before they reach the collector:
Destination mapping adapts events to each tool's API shape:
Both mappings are independent. The same event can be transformed differently at each stage.
See also
- Mapping.Value: the eight value forms
- Mapping.Rule: rule-level fields and API reference
- Transformers: middleware alternative for validation, enrichment, redaction
- Consent: consent-gated mapping