Webhooks
Send order lifecycle events to OpenAI to keep users informed.
Event Types
| Event | When |
|---|---|
order.created | Order successfully created |
order.updated | Status changes |
Payload Structure
interface OrderEvent {
event_type: 'order.created' | 'order.updated';
event_id: string;
timestamp: string;
checkout_session_id: string;
order: {
order_id: string;
order_number: string;
status: OrderStatus;
totals: Totals;
};
}Order Statuses
| Status | Description |
|---|---|
pending | Awaiting processing |
confirmed | Order confirmed |
shipped | Order shipped |
fulfilled | Order delivered |
canceled | Order canceled |
Sending Webhooks
async function sendWebhook(event: OrderEvent) {
const payload = JSON.stringify(event);
const timestamp = new Date().toISOString();
const signature = signPayload(payload, timestamp);
await fetch(OPENAI_WEBHOOK_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Signature': signature,
'Timestamp': timestamp,
'Idempotency-Key': event.event_id,
},
body: payload,
});
}Best Practices
- Include unique
Idempotency-Key - Implement retry with exponential backoff
- Send events in chronological order
- Monitor delivery success rate