> ## 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.

# Suscripción

> La carga útil enviada a tu endpoint de webhook cuando se crea, actualiza o cambia el estado de una suscripción.

## 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:

| Event                       | Description                                                                               |
| --------------------------- | ----------------------------------------------------------------------------------------- |
| `subscription.active`       | La suscripción se activa con éxito                                                        |
| `subscription.updated`      | El objeto de suscripción se actualizó (cualquier cambio de campo desencadena este evento) |
| `subscription.on_hold`      | La suscripción se pone en espera debido a una renovación fallida                          |
| `subscription.renewed`      | La suscripción se renueva para el siguiente período de facturación                        |
| `subscription.plan_changed` | El plan de suscripción fue actualizado, degradado o modificado                            |
| `subscription.cancelled`    | La suscripción se cancela                                                                 |
| `subscription.failed`       | La creación de la suscripción falló durante la creación del mandato                       |
| `subscription.expired`      | La suscripción llegó al final de su período                                               |

### 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 tener que hacer polling:

```javascript theme={null}
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 });
});
```

<Tip>
  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 obtener actualizaciones.
</Tip>

## Esquema de Carga Útil del Webhook
