Proud winners of the 2026 CFIN Foodtech Frontier Awards. Learn more →

Purchase Order Events

Webhook events for purchase orders from suppliers

Purchase order events are triggered when purchase orders are created, updated, or 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;
}

#purchase.created

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

#purchase.updated

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

#purchase.deleted

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

#All Purchase Order Event Types

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