| name | walkeros-understanding-events |
| description | walkerOS events are self-describing, stateless, vendor-agnostic data structures. Use when this capability is needed. |
| metadata | {"author":"elbwalker"} |
Understanding walkerOS Events
Overview
walkerOS events are self-describing, stateless, vendor-agnostic data structures.
They capture user interactions in a standardized format that can be transformed
for any destination.
Core principle: Events describe WHAT happened, not WHERE it goes. Stateless.
Self-describing. Industry-agnostic.
Entity-Action Naming (Critical)
STRICT REQUIREMENT: All events use "entity action" format with space
separation.
'page view';
'product add';
'order complete';
'button click';
'page_view';
'pageview';
'purchase';
'add_to_cart';
Parsing: const [entity, action] = event.split(' ')
- Entity: Noun (page, product, user, order, button)
- Action: Verb (view, add, complete, click, login)
Event Properties
See
packages/core/src/types/walkeros.ts
for canonical types (Event interface, plus event helpers in event.ts).
| Property | Type | Purpose | Example |
|---|
name | string | "entity action" format | "product view" |
data | object | Entity-specific properties | { id: "P123", price: 99 } |
context | object | State/environment info | { stage: ["checkout", 1] } |
globals | object | Global properties | { language: "en" } |
user | object | User identification | { id: "user123" } |
nested | array | Related entities | [{ type: "category", data: {...} }] |
consent | object | Consent states | { marketing: true } |
id | string | Auto-generated unique ID | "1647261462000-01b5e2-2" |
timestamp | number | Auto-generated Unix ms | 1647261462000 |
entity | string | Parsed from name | "product" |
action | string | Parsed from name | "view" |
data Property
Entity-specific properties. Schema-free but consistent within entity type.
data: { id: "P123", name: "Laptop", price: 999, currency: "USD" }
data: { title: "Home", path: "/", referrer: "https://..." }
context Property
Hierarchical state information. Format: { name: [value, order] }
context: {
stage: ["checkout", 1],
test: ["variant-A", 0],
group: ["premium", 2]
}
globals Property
Properties that apply to ALL events in the session.
globals: {
language: "en",
currency: "USD",
environment: "production"
}
nested Property
Related entities captured together.
nested: [
{ type: 'product', data: { id: 'P1', quantity: 2 } },
{ type: 'product', data: { id: 'P2', quantity: 1 } },
];
user Property
User identification across sessions.
user: {
id: "user123",
device: "device456",
session: "sess789"
}
Design Principles
Statelessness
Events are immutable snapshots. They don't reference previous events or maintain
state.
Self-Describing
Events contain all context needed to understand them. No external lookups
required.
Vendor-Agnostic
Events use generic concepts (product, order) not vendor-specific (GA4 item, FB
content).
Transformation to vendor formats happens in mapping, not in event creation.
Creating Events
import { elb } from '@walkeros/collector';
await elb('page view', { title: 'Home', path: '/' });
await elb(
'product add',
{ id: 'P123', price: 99 },
{ stage: ['cart', 1] },
{ currency: 'USD' },
);
Related Skills
Source Files:
Documentation:
Converted and distributed by TomeVault — claim your Tome and manage your conversions.