Fields
- actor — the user or system performing the action.
- verb — a dotted name describing what happened.
- object — what was acted on.
- context — device, IP (hashed), locale, session, page.
- consent — purpose allowlist at the time of the event.
Example
{
"actor": { "id": "u_123", "email": "sam@acme.co" },
"verb": "order.placed",
"object": { "id": "ord_81", "amount": 4200, "currency": "USD" },
"context": { "ip": "203.0.113.4", "ua": "iPhone/17.2", "locale": "en-US" },
"consent": ["marketing", "analytics"]
}Why this shape
Because every module reads from and writes to the same envelope, analytics funnels, messaging templates, and support timelines all speak the same language. Add a new module, and it instantly has every event it needs — no pipeline to build.
Verb conventions
We recommend lowercase, dot-separated object.past_tense_verb: order.placed, session.started, link.clicked. Sendora doesn't enforce this — but it makes searching events easier.