Skip to main content
Suscribete solo a los eventos que tu integracion necesita, pero procesa cada evento de forma idempotente.

Bookable minimo

Para una integracion Scheduled Offer minima:

Bookable completo

Para una plataforma madura:
events

Contrato de estados

Tu plataforma recibe eventos SimplePay como booking.confirmed; usa esos eventos como contrato publico de integracion.

Campos que conviene persistir

Para Bookable:
  • event.id
  • event.type
  • booking.id
  • booking.status
  • booking.paymentStatus
  • booking.eventTypeId
  • booking.productId
  • booking.resourceId
  • booking.tenantCustomerId
  • booking.startsAt
  • booking.endsAt
  • booking.quantity
  • booking.amountMinor
  • booking.currency
  • booking.simplepayCheckoutSessionId
  • booking.simplepayCheckoutSessionId
Para pagos simples:
  • event.id
  • event.type
  • Checkout Session ID spcs_...
  • Payment Link ID splink_..., si aplica
  • PaymentIntent ID sppi_..., si aplica
  • client_reference_id
  • metadata.order_id o equivalente
  • amount y currency esperados
No persistas secretos ni credenciales en tus tablas de eventos. Guarda referencias, estados y snapshots no sensibles.

Deduplicacion

Tu tabla de eventos deberia tener una llave unica por event.id.
schema.sql
En el handler:
dedupe.ts

Replays

Los replays vuelven a entregar un evento existente. Por eso tu handler debe ser idempotente antes de depender de replays como herramienta operacional.
Last modified on June 21, 2026