Overview
PulseGrid wraps every event in a consistent JSON envelope.
Field meanings:
- delivery_id: identifies this delivery to this endpoint. It stays the same during retries.
- id: identifies the original PulseGrid event.
- event: describes what happened, such as message or order.created.
- project: identifies the project that produced the event.
- channel: identifies the realtime channel where it happened.
- sender: identifies the publishing user, device or backend.
- data: application-specific event content.
- meta: optional supporting context.
- source: how PulseGrid received the event, such as websocket, api or system.
- sent_at: UTC ISO-8601 time when PulseGrid accepted the event.
One event can be delivered to several endpoints. Those deliveries share the same event id but each receives a different delivery_id.
Setup
Use event for routing business logic.
Use project.id for dependable tenant/application identification.
Use channel.id or channel.slug to identify the realtime room.
Use delivery_id for duplicate protection.
Use sent_at for auditing and ordering.
Treat data and meta as untrusted input even after signature verification.
Code example
{
"channel": {
"id": "e9d225b0-58df-45dc-9393-25acb4a5e667",
"name": "demo-channel",
"slug": "demo-channel"
},
"data": {
"text": "Hello from Alpha"
},
"delivery_id": "afa3e157-1268-4ec0-977f-4556484722a0",
"event": "message",
"id": "05afc0c0-66a2-4ce3-9bbf-dcbc2abc2b47",
"meta": {
"source": "dashboard_console"
},
"project": {
"id": "210d1f81-1d6e-412b-a0a0-b3cd843e82fb",
"name": "Alpha",
"slug": "alpha"
},
"sender": {
"identifier_id": "dashboard_user_1",
"identifier_label": "Tshepo Mofokeng"
},
"sent_at": "2026-08-25T19:40:20.247053+00:00",
"source": "websocket"
}
Notes
The payload timestamp is UTC. South African Standard Time is UTC+2.
The system test uses channel slug system, source system and event pulsegrid.test. A real Channel Console message normally uses event message and source websocket.