Order Events
Webhook events for customer orders
Order events are triggered when customer orders are created, updated, change status, or are deleted.
TypeScript Interfaces
Copy these interfaces to type your webhook handlers:
/** Base event properties included in all webhook events */
interface BaseEvent {
/** Unique event identifier (UUID) */
id: string;
/** Event type */
kind: string;
/** ISO 8601 timestamp */
time: string;
/** Transaction identifier for grouping related events */
transactionId: string;
}
/** Order status values */
type OrderStatus =
| "pending"
| "ready"
| "inProgress"
| "completed"
| "cancelled";
order.created
Triggered when a new order is created.
{
"id": "evt_abc123",
"kind": "order.created",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "ord_456",
"orderShortId": "ORD-001"
}interface OrderCreatedEvent extends BaseEvent {
kind: "order.created";
/** Order UUID */
orderId: string;
/** Human-readable order ID (e.g., "ORD-001") */
orderShortId: string;
}order.updated
Triggered when any tracked field on an order changes. The changes object contains only the fields that changed, each with from and to values.
{
"id": "evt_abc123",
"kind": "order.updated",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "ord_456",
"orderShortId": "ORD-001",
"changes": {
"status": { "from": "pending", "to": "ready" },
"dueDate": { "from": null, "to": "2024-02-01T00:00:00Z" }
}
}interface OrderChanges {
status?: { from: OrderStatus | null; to: OrderStatus | null };
customerId?: { from: string | null; to: string | null };
dueDate?: { from: string | null; to: string | null };
price?: { from: number | null; to: number | null };
nodeId?: { from: string | null; to: string | null };
notes?: { from: string | null; to: string | null };
currency?: { from: string | null; to: string | null };
[field: string]: { from: unknown; to: unknown } | undefined;
}
interface OrderUpdatedEvent extends BaseEvent {
kind: "order.updated";
/** Order UUID */
orderId: string;
/** Human-readable order ID (e.g., "ORD-001") */
orderShortId: string;
/** Fields that changed, each with from/to values */
changes: OrderChanges;
}order.status.changed
Triggered when an order's status is updated.
{
"id": "evt_abc123",
"kind": "order.status.changed",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "ord_456",
"orderShortId": "ORD-001",
"previousOrderStatus": "pending",
"currentOrderStatus": "ready"
}interface OrderStatusChangedEvent extends BaseEvent {
kind: "order.status.changed";
/** Order UUID */
orderId: string;
/** Human-readable order ID (e.g., "ORD-001") */
orderShortId: string;
/** Status before this change */
previousOrderStatus: OrderStatus;
/** New status after this change */
currentOrderStatus: OrderStatus;
}Status Values
Order Status
pendingstringOrder created, awaiting processing
readystringOrder is ready for fulfillment
inProgressstringOrder is being fulfilled
completedstringOrder has been fulfilled
cancelledstringOrder was cancelled
order.deleted
Triggered when an order is deleted.
{
"id": "evt_abc123",
"kind": "order.deleted",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "ord_456"
}interface OrderDeletedEvent extends BaseEvent {
kind: "order.deleted";
/** Order UUID */
orderId: string;
}All Order Event Types
Union type for handling any order event:
type OrderEvent =
| OrderCreatedEvent
| OrderUpdatedEvent
| OrderStatusChangedEvent
| OrderDeletedEvent;
// Type guard for order events
function isOrderEvent(event: BaseEvent): event is OrderEvent {
return event.kind.startsWith("order.");
}
// Example webhook handler
async function handleOrderWebhook(event: OrderEvent) {
switch (event.kind) {
case "order.created":
console.log(`New order created: ${event.orderShortId}`);
// Send order confirmation, notify warehouse, etc.
break;
case "order.updated":
console.log(`Order ${event.orderShortId} was updated`);
// Sync changes to external systems
break;
case "order.status.changed":
console.log(
`Order ${event.orderShortId} changed from ${event.previousOrderStatus} to ${event.currentOrderStatus}`
);
// Trigger notifications, update external systems, etc.
break;
case "order.deleted":
console.log(`Order ${event.orderId} was deleted`);
// Clean up related data in external systems
break;
}
}