Skip to content

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.