Webhook Event Reference
Complete list of events your webhook subscriptions can listen to.
Event Naming Convention
All event names follow a dot-separated convention: <module>.<action> or <module>.<entity>.<action>. For example, task.created or task.status.changed.
When creating a webhook subscription, you can subscribe to specific events by their exact name, or use wildcard patterns to match groups of events:
task.created— matches only thetask.createdevent.task.*— matches all top-level task events:task.created,task.assigned,task.completed,task.cancelled,task.updated,task.deleted.payment.*— matches all payment events.
The payloads described below are the contents of the data field in the webhook payload envelope. Every delivery is wrapped in the standard payload structure with id, event, timestamp, organizationId, data, and apiVersion.
Task Events
Task events are emitted throughout the lifecycle of a delivery task — from creation through assignment, transit, and completion or cancellation.
| Event | Description | Key Payload Fields |
|---|---|---|
task.created |
A new task has been created. | task, timestamp |
task.assigned |
An agent has been assigned to a task. | task, agentId, previousAgentId, agent ({ id, userId, name } from task relations, nullable), timestamp |
task.status.changed |
A task's status has changed (e.g., ACCEPTED to IN_TRANSIT). | task, oldStatus, newStatus, reason, timestamp |
task.courier.assigned |
An external courier has been assigned to a task. | task, courierId, courierType, previousCourierId, courier ({ id, name } from task relations, nullable), timestamp |
task.completed |
A task has been completed successfully. | task, completedAt, completedBy |
task.cancelled |
A task has been cancelled. | task, cancelledAt, cancelledBy, reason |
task.updated |
Task details have been modified. | task, changes |
task.deleted |
A task has been deleted. | taskId, organizationId |
Task Object Shape
The task object included in task event payloads contains the following fields:
{
"id": 1234,
"code": "TSK-00456",
"name": "Delivery to Downtown",
"status": "IN_TRANSIT",
"taskType": "delivery",
"courierType": "INTERNAL",
"timeToServe": "asap",
"scheduledAt": null,
"completedAt": null,
"customerId": 89,
"agentId": 12,
"locationId": 5,
"organizationId": 42,
"createdAt": "2026-02-16T13:00:00.000Z",
"updatedAt": "2026-02-16T14:30:00.000Z"
}
Courier Events
Courier events track the lifecycle and status of external courier integrations.
| Event | Description | Key Payload Fields |
|---|---|---|
courier.created |
A new courier integration has been created. | courier |
courier.status.changed |
A courier's status has changed. | courier, oldStatus, newStatus |
courier.updated |
Courier details have been modified. | courier, changes |
courier.deleted |
A courier has been deleted. | courierId, organizationId |
Payment Events
Payment events cover the full payment lifecycle including creation, completion, failure, and refunds.
| Event | Description | Key Payload Fields |
|---|---|---|
payment.created |
A new payment record has been created. | payment |
payment.completed |
A payment has been completed successfully. | payment |
payment.failed |
A payment has failed. | payment, error |
payment.refunded |
A payment has been refunded (full or partial). | payment, refundAmount |
payment.status.changed |
A payment's status has changed. | payment, oldStatus, newStatus |
Agent Events
Agent events track delivery driver activity, including creation, availability changes, and real-time location updates.
| Event | Description | Key Payload Fields |
|---|---|---|
agent.created |
A new agent (delivery driver) has been created. | agent |
agent.status.changed |
An agent's availability or duty status has changed. | agent, oldStatus, newStatus |
agent.location.updated |
An agent's GPS location has been updated. | agentId, location ({ lat, lng }) |
The agent.location.updated event fires frequently as drivers move. Subscribing to this event will generate a high volume of webhook deliveries. Make sure your endpoint can handle the throughput, or consider using the real-time tracking Socket.IO connection instead.
Customer Events
Customer events are emitted when customer records are created, modified, or removed.
| Event | Description | Key Payload Fields |
|---|---|---|
customer.created |
A new customer record has been created. | customer |
customer.updated |
Customer details have been modified. | customer, changes |
customer.deleted |
A customer record has been deleted. | customerId, organizationId |
Organization Events
Organization events track changes to the organization (tenant) itself.
| Event | Description | Key Payload Fields |
|---|---|---|
organization.created |
A new organization has been created. | organization |
organization.updated |
Organization details have been modified. | organization, changes |
organization.deleted |
An organization has been deleted. | organizationId |
Wildcard Pattern Summary
For convenience, here are the most useful wildcard patterns you can use when creating subscriptions:
| Pattern | Matches |
|---|---|
task.* |
All top-level task events (task.created, task.assigned, task.completed, task.cancelled, task.updated, task.deleted) |
task.status.* |
task.status.changed |
task.courier.* |
task.courier.assigned |
courier.* |
All top-level courier events (courier.created, courier.updated, courier.deleted) |
courier.status.* |
courier.status.changed |
payment.* |
All top-level payment events (payment.created, payment.completed, payment.failed, payment.refunded) |
payment.status.* |
payment.status.changed |
agent.* |
All top-level agent events (agent.created) |
agent.status.* |
agent.status.changed |
agent.location.* |
agent.location.updated |
customer.* |
All customer events (customer.created, customer.updated, customer.deleted) |
organization.* |
All organization events (organization.created, organization.updated, organization.deleted) |