Payload Format
HTTP Request
POST /your-webhook-endpoint HTTP/1.1
Content-Type: application/json
X-Fixify-Signature: t=1718000000000,v1=5d41402abc4b2a76b9719d...
Payload Structure
{
"webhookId": "whdel_abc123",
"eventType": "job_created",
"entityType": "job",
"entityId": "job-456",
"parentEntityId": null,
"createdById": "agent-789",
"createdByRole": "Agent",
"payload": {
"jobId": "job-456",
"agencyId": "agency-123",
"jobNumber": 488,
"categoryId": "cat-xyz"
},
"createdOn": 1718000000000,
"deliveredAt": 1718000001234,
"attempt": 1
}
Field Reference
| Field | Type | Description |
|---|---|---|
webhookId |
string | Unique ID for this delivery. Use as idempotency key. |
eventType |
string | The event that fired. See Event Types. |
entityType |
string | Category of the affected entity. See Glossary. |
entityId |
string | null | Firestore document ID of the affected entity. |
parentEntityId |
string | null | ID of the parent entity (e.g. job ID on a quote event). |
createdById |
string | null | ID of the user who triggered the event. |
createdByRole |
string | null | Role string: "Agent", "ServiceProvider", "System". |
payload |
object | null | Event-specific metadata. Content varies by event type — see below. |
createdOn |
number | Epoch milliseconds when the original event was recorded. |
deliveredAt |
number | Epoch milliseconds when this delivery attempt was made. |
attempt |
number | Attempt number. 1 = first attempt; increments on each retry. |
About payload
payload contains the metadata that was captured at the time the event was logged. The fields present depend on the event type. Examples:
job_created
{
"jobId": "abc123",
"agencyId": "agency-xyz",
"jobNumber": 488,
"categoryId": "cat-abc",
"propertyId": "prop-123",
"estateId": null
}
job_assigned_to_service_providers
{
"jobId": "abc123",
"agencyId": "agency-xyz",
"jobNumber": 488,
"categoryId": "cat-abc",
"serviceProviderIds": ["sp-1", "sp-2"],
"assignedOn": 1718000000000
}
quote_approved
{
"fulfilmentId": "ful-123",
"jobId": "job-456",
"agencyId": "agency-xyz",
"jobNumber": 488,
"serviceProviderId": "sp-1",
"quote": { ... }
}
Payload depth
Payloads contain identifiers and key metadata, not full entity snapshots. Use the IDs to fetch full details from the REST API if needed.
Timestamps
All timestamps are epoch milliseconds. Convert with new Date(value).
Idempotency
webhookId is unique per delivery attempt. Use it to deduplicate — the same logical delivery may arrive multiple times across retries and replays.