Saltar al contenido principal

Eventos de Webhook de Suscripción

Los siguientes eventos de webhook están disponibles para rastrear cambios en el ciclo de vida de la suscripción:
EventoDescripción
subscription.activeLa suscripción se activa con éxito
subscription.updatedEl objeto de suscripción fue actualizado (cualquier cambio en el campo activa este evento)
subscription.on_holdLa suscripción se pone en espera debido a una renovación fallida
subscription.renewedLa suscripción se renueva para el próximo período de facturación
subscription.plan_changedEl plan de suscripción fue mejorado, degradado o modificado
subscription.cancelledLa suscripción es cancelada
subscription.failedLa creación de la suscripción falló durante la creación del mandato
subscription.expiredLa suscripción alcanzó el final de su término

Usando subscription.updated para Sincronización en Tiempo Real

El webhook subscription.updated se activa cada vez que cambia cualquier campo de la suscripción, lo que te permite mantener el estado de tu aplicación sincronizado sin necesidad de hacer polling:
app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;
  
  if (event.type === 'subscription.updated') {
    const subscription = event.data;
    
    // Sync subscription changes to your database
    await syncSubscription(subscription.subscription_id, {
      status: subscription.status,
      next_billing_date: subscription.next_billing_date,
      metadata: subscription.metadata,
      // ... other fields you want to track
    });
    
    console.log(`Subscription ${subscription.subscription_id} updated`);
  }
  
  res.json({ received: true });
});
Suscríbete a subscription.updated para recibir notificaciones en tiempo real sobre cualquier cambio en la suscripción, eliminando la necesidad de hacer polling a la API para actualizaciones.

Esquema de Carga Útil del Webhook

Response struct representing subscription details

addons
Addon Cart Response Item · object[]
requerido

Addons associated with this subscription

billing
object
requerido

Billing address details for payments

cancel_at_next_billing_date
boolean
requerido

Indicates if the subscription will cancel at the next billing date

created_at
string<date-time>
requerido

Timestamp when the subscription was created

currency
enum<string>
requerido

Currency used for the subscription payments

Opciones disponibles:
AED,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BWP,
BYN,
BZD,
CAD,
CHF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SEK,
SGD,
SHP,
SLE,
SLL,
SOS,
SRD,
SSP,
STN,
SVC,
SZL,
THB,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW
customer
object
requerido

Customer details associated with the subscription

metadata
object
requerido

Additional custom data associated with the subscription

meters
object[]
requerido

Meters associated with this subscription (for usage-based billing)

next_billing_date
string<date-time>
requerido

Timestamp of the next scheduled billing. Indicates the end of current billing period

on_demand
boolean
requerido

Wether the subscription is on-demand or not

payment_frequency_count
integer<int32>
requerido

Number of payment frequency intervals

payment_frequency_interval
enum<string>
requerido

Time interval for payment frequency (e.g. month, year)

Opciones disponibles:
Day,
Week,
Month,
Year
previous_billing_date
string<date-time>
requerido

Timestamp of the last payment. Indicates the start of current billing period

product_id
string
requerido

Identifier of the product associated with this subscription

quantity
integer<int32>
requerido

Number of units/items included in the subscription

recurring_pre_tax_amount
integer<int32>
requerido

Amount charged before tax for each recurring payment in smallest currency unit (e.g. cents)

status
enum<string>
requerido

Current status of the subscription

Opciones disponibles:
pending,
active,
on_hold,
cancelled,
failed,
expired
subscription_id
string
requerido

Unique identifier for the subscription

subscription_period_count
integer<int32>
requerido

Number of subscription period intervals

subscription_period_interval
enum<string>
requerido

Time interval for the subscription period (e.g. month, year)

Opciones disponibles:
Day,
Week,
Month,
Year
tax_inclusive
boolean
requerido

Indicates if the recurring_pre_tax_amount is tax inclusive

trial_period_days
integer<int32>
requerido

Number of days in the trial period (0 if no trial)

cancelled_at
string<date-time> | null

Cancelled timestamp if the subscription is cancelled

discount_cycles_remaining
integer<int32> | null

Number of remaining discount cycles if discount is applied

discount_id
string | null

The discount id if discount is applied

expires_at
string<date-time> | null

Timestamp when the subscription will expire

payment_method_id
string | null

Saved payment method id used for recurring charges

tax_id
string | null

Tax identifier provided for this subscription (if applicable)