Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

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