Common Envelope
Every event — regardless of category — is wrapped in this envelope. The payload holds the category-specific fields.
{
"event_id": "uuid (string)",
"event_type": "string — e.g. \"worker.deployed\"",
"brand": "abiworkers | ailysi",
"tenant_id": "string | null — FK to DualPartner",
"entity_type": "TadbeerApplicant | EmployerProfile | WhatsAppSession | WhatsAppPersonaProfile",
"entity_id": "string — the record id this event concerns",
"occurred_at": "ISO-8601 timestamp",
"producer": "string — engine/connector/handler that emitted (e.g. \"workerOSLifecycleEngine\")",
"correlation_id": "string — links events in the same lifecycle",
"payload": "{ ...event-specific fields, see below }",
"metadata": "{ source: \"webhook|engine|manual\", trace_id, user_id }"
}Worker Events
tap an event to expand schema + exampleHow these flow
- • Producers (engines, webhook handlers) emit these events to
eventPropagationEngine. - • The
Event/PortalEvententities persist the envelope;AuditLog+PlatformMetricrecord observability. - • Consumers (workflow engines, notification engines) subscribe and react — see the Meta & Autonomy Blueprint.