Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Eventos de Recuperación de Carritos Abandonados

Los siguientes eventos de webhook rastrean el ciclo de vida de la recuperación de carritos abandonados:
EventoDescripción
abandoned_checkout.detectedSe ha detectado un pago abandonado. Enviado cuando un pago se identifica como abandonado (fallido o incompleto) y comienza el flujo de trabajo de recuperación.
abandoned_checkout.recoveredEl cliente completó el pago a través del enlace de recuperación. El campo recovered_payment_id contiene el ID de pago exitoso.

Campos de Carga Útil de Pago Abandonado

payment_id
string
requerido
El pago original que fue abandonado. Úselo para buscar detalles de producto, cantidad y moneda.
customer_id
string
requerido
El cliente que abandonó el pago.
abandonment_reason
string
requerido
Por qué se abandonó el pago. Uno de:
  • payment_failed — El cliente intentó el pago pero falló
  • checkout_incomplete — El cliente visitó el pago pero nunca intentó pagar
status
string
requerido
Estado actual del ciclo de vida de este intento de recuperación. Uno de:
  • abandoned — Detectado, aún no se han enviado correos electrónicos
  • recovering — Al menos un correo electrónico de recuperación enviado
  • recovered — El cliente completó el pago
  • exhausted — Todos los correos enviados o se encontró un nuevo pago
  • opted_out — Cliente se dio de baja
abandoned_at
string
requerido
Marca de tiempo ISO 8601 de cuando se detectó el pago como abandonado.
recovered_payment_id
string | null
El ID de pago del pago de recuperación exitoso. null hasta que el pago sea recuperado.

Ejemplo: Manejo de Webhooks de ACR

app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'abandoned_checkout.detected':
      console.log(`Checkout abandoned: ${event.data.payment_id}`);
      console.log(`Reason: ${event.data.abandonment_reason}`);
      // Track abandonment in your analytics
      await trackAbandonment(event.data);
      break;

    case 'abandoned_checkout.recovered':
      console.log(`Checkout recovered: ${event.data.payment_id}`);
      console.log(`Recovery payment: ${event.data.recovered_payment_id}`);
      // Grant access, update records
      await handleRecovery(event.data);
      break;
  }

  res.json({ received: true });
});

Eventos de Dunning

Los siguientes eventos de webhook rastrean el ciclo de vida de la suscripción fallida:
EventoDescripción
dunning.startedSe ha creado un intento de dunning para una suscripción que ingresó a on_hold o fue cancelada por el cliente.
dunning.recoveredEl cliente actualizó su método de pago y el pago resultante fue exitoso. El campo payment_id contiene el ID de pago exitoso.

Campos de Carga Útil de Intento de Dunning

subscription_id
string
requerido
La suscripción que desencadenó el intento de dunning.
customer_id
string
requerido
El cliente que posee la suscripción.
trigger_state
string
requerido
El estado de suscripción que desencadenó el dunning. Uno de:
  • on_hold — Suscripción pausada por fallo en el pago
  • cancelled — Cliente canceló desde el portal del cliente
status
string
requerido
Estado actual del ciclo de vida de este intento de dunning. Uno de:
  • recovering — Se están enviando correos electrónicos de dunning
  • recovered — Cliente actualizó método de pago y el pago fue exitoso
  • exhausted — Todos los correos enviados o el estado de suscripción cambió
created_at
string
requerido
Marca de tiempo ISO 8601 de cuando se creó el intento de dunning.
payment_id
string | null
El ID de pago del pago de recuperación exitoso. null mientras se recupera.

Ejemplo: Manejo de Webhooks de Dunning

app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'dunning.started':
      console.log(`Dunning started for subscription: ${event.data.subscription_id}`);
      console.log(`Trigger: ${event.data.trigger_state}`);
      // Track dunning in your system
      await trackDunning(event.data);
      break;

    case 'dunning.recovered':
      console.log(`Subscription recovered: ${event.data.subscription_id}`);
      console.log(`Recovery payment: ${event.data.payment_id}`);
      // Reactivate access, update records
      await handleDunningRecovery(event.data);
      break;
  }

  res.json({ received: true });
});
Suscríbase a ambos dunning.started e dunning.recovered para rastrear el ciclo de vida completo del dunning. Use dunning.started para pausar periodos de gracia o marcar suscripciones en riesgo en su sistema.

Abandoned Cart Recovery

Configure secuencias de correos electrónicos de ACR e incentivos de descuento.

Subscription Dunning

Configure secuencias de correos electrónicos de dunning para suscripciones vencidas.

Subscription Webhooks

Eventos relacionados con el ciclo de vida de suscripción como subscription.on_hold e subscription.cancelled.

Esquema de Carga Útil de Webhook

Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered events

abandoned_at
string<date-time>
requerido
abandonment_reason
enum<string>
requerido
Opciones disponibles:
payment_failed,
checkout_incomplete
customer_id
string
requerido
payment_id
string
requerido
status
enum<string>
requerido
Opciones disponibles:
abandoned,
recovering,
recovered,
exhausted,
opted_out
recovered_payment_id
string | null
Last modified on May 4, 2026