Skip to Content
🚀Agentic Commerce Protocol is now live! Instant Checkout is available in ChatGPT. Learn more →
DocumentationAPI SpecificationsWebhooks

Webhooks

Send order lifecycle events to OpenAI to keep users informed.

Event Types

EventWhen
order.createdOrder successfully created
order.updatedStatus 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

StatusDescription
pendingAwaiting processing
confirmedOrder confirmed
shippedOrder shipped
fulfilledOrder delivered
canceledOrder 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

Specification maintained by OpenAI and Stripe

AboutPrivacyTermsRSS

Apache 2.0 · Open Source