The Event Object
The Event Object
In this article:
- Overview
- Attributes
- Request headers
- Example
- Things to keep in mind
Overview
Every SuperPath webhook delivery has the same envelope. SuperPath sends it as the JSON body of an HTTPS POST request to your registered endpoint URL. Your endpoint reads the event attribute to work out what happened, then parses data for that event type.
For how to register an endpoint and handle the request, see Webhooks - Get updates in real-time. For the list of values event can take, see Types of Events.
Attributes
Field | Type | Description |
|---|---|---|
| string | The type of event being sent, for example |
| string | An ISO 8601 date-time string, in UTC, of when SuperPath sent the event. |
| number | The UTC offset, in hours, of the SuperPath service that sent the event. |
| object | The record the event relates to. Its shape depends on the event — see the Data type column in Types of Events. |
These four attributes are the whole body. Whatever the event type, nothing else is sent at the top level.
Every data object, for every event type, includes at least these two fields:
Field | Type | Description |
|---|---|---|
| string | The ID of your SuperPath account. |
| string | The ID of the record the event relates to. |
Request headers
Header | Sent | Description |
|---|---|---|
| Always |
|
| Only when signature authentication is on for that webhook |
|
SuperPath does not send an API key, bearer token or any other credential to your endpoint, so your endpoint must accept unauthenticated POST requests. Signature authentication is the mechanism for verifying the sender.
Example
A user.created delivery:
{
"event": "user.created",
"dateSent": "2022-02-15T10:36:36.300Z",
"dateSentOffset": 0,
"data": {
"tenantId": "abcdef",
"id": "foettyQz714xBVi75gZ6",
"firstName": "John",
"lastName": "Lennon",
"email": "john@beatles.com",
"position": "Founder & CEO",
"roleId": "admin",
"roleName": "Admin",
"avatar": "https://res.cloudinary.com/superpath/image/upload/23423234234/john.jpg",
"username": "john.lennon",
"employeeId": "2123234",
"timezone": "Australia/Sydney",
"pointsTotal": 427,
"pointsSelfAssigned": 336,
"pointsAssigned": 0,
"status": "active",
"isDeleted": false,
"dateCreated": "2020-11-13T11:48:42.109Z",
"dateCreatedOffset": 11,
"dateLastModified": "2022-02-15T10:36:21.354Z",
"dateLastModifiedOffset": 11,
"userFullNameLastModified": "Jake Jackson",
"userIdLastModified": "foettyQz714xBVi75gZ6"
}
}Things to keep in mind
- Read the
eventattribute rather than inferring the event from the shape ofdata— several events share the samedatashape, for exampleuser.created,user.updatedanduser.deleted. - Handle event names you do not recognise gracefully. New event types are added over time, so do not assume that only the events documented today will ever arrive.
- Treat
dataas additive. Fields may be added to a payload over time, so parse the fields you need rather than rejecting a payload with unfamiliar fields in it. - Do not rely on the order of keys in the JSON body.
- On a delete event,
datacarries the record as it was immediately before it was deleted, so you still have theidand the details you need to reconcile your own copy.
Updated on: 25/07/2026
Thank you!
