Use when creating events, understanding event structure, or working with event properties. Covers entity-action naming, event properties, statelessness, and vendor-agnostic design.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: understanding-events description: Use when creating events, understanding event structure, or working with event properties. Covers entity-action naming, event properties, statelessness, and vendor-agnostic design.
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.
// Correct
'page view';
'product add';
'order complete';
'button click';
// Wrong
'page_view'; // underscore
'pageview'; // no separator
'purchase'; // no entity
'add_to_cart'; // wrong format
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).
| 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.
// product entity
data: { id: "P123", name: "Laptop", price: 999, currency: "USD" }
// page entity
data: { title: "Home", path: "/", referrer: "https://..." }
context Property
Hierarchical state information. Format: { name: [value, order] }
context: {
stage: ["checkout", 1], // checkout stage, first step
test: ["variant-A", 0], // A/B test variant
group: ["premium", 2] // user segment
}
globals Property
Properties that apply to ALL events in the session.
globals: {
language: "en",
currency: "USD",
environment: "production"
}
nested Property
Related entities captured together.
// Order with line items
nested: [
{ type: 'product', data: { id: 'P1', quantity: 2 } },
{ type: 'product', data: { id: 'P2', quantity: 1 } },
];
user Property
User identification across sessions.
user: {
id: "user123", // Your user ID
device: "device456", // Device fingerprint
session: "sess789" // Session ID
}
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';
// Basic event
await elb('page view', { title: 'Home', path: '/' });
// With all properties
await elb(
'product add',
{ id: 'P123', price: 99 }, // data
{ stage: ['cart', 1] }, // context (optional)
{ currency: 'USD' }, // globals (optional)
);
Related
Skills:
- understanding-mapping skill - Transform events for destinations
Source Files:
- packages/core/src/types/walkeros.ts - Event types
- packages/core/src/schemas/ - Event schemas
Documentation:
- Website: Event Model - User-facing docs
- walkeros.io/docs - Public documentation
More by elbwalker
View allUse when events aren't reaching destinations, debugging event flow, or troubleshooting mapping issues. Covers common problems and debugging strategies.
Use when configuring event mappings for specific use cases. Provides recipes for GA4, Meta, custom APIs, and common transformation patterns.
Use when writing or updating any documentation - README, website docs, or skills. Covers quality standards, example validation, and DRY patterns. (project)
Use when creating a new walkerOS source. Example-driven workflow starting with research and input examples before implementation.