Skip to content

Purchase Order Events

Purchase order events are triggered when purchase orders are created, updated, or deleted.

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;
}

Triggered when a new purchase order is created.

{
"id": "evt_abc123",
"kind": "purchase.created",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "po_456"
}

Triggered when a purchase order is updated.

{
"id": "evt_abc123",
"kind": "purchase.updated",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "po_456"
}

Triggered when a purchase order is deleted.

{
"id": "evt_abc123",
"kind": "purchase.deleted",
"time": "2024-01-15T10:30:00Z",
"transactionId": "txn_xyz789",
"orderId": "po_456"
}

Union type for handling any purchase order event:

type PurchaseOrderEvent =
| PurchaseCreatedEvent
| PurchaseUpdatedEvent
| PurchaseDeletedEvent;
// Type guard for purchase order events
function isPurchaseOrderEvent(event: BaseEvent): event is PurchaseOrderEvent {
return event.kind.startsWith("purchase.");
}
// Example webhook handler
async function handlePurchaseOrderWebhook(event: PurchaseOrderEvent) {
switch (event.kind) {
case "purchase.created":
console.log(`Purchase order ${event.orderId} created`);
// Notify procurement team
// Create receiving schedule
break;
case "purchase.updated":
console.log(`Purchase order ${event.orderId} updated`);
// Sync changes to external systems
break;
case "purchase.deleted":
console.log(`Purchase order ${event.orderId} deleted`);
// Clean up related data
break;
}
}