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

# Assinatura

> A carga útil enviada para o seu endpoint de webhook quando uma assinatura é criada, atualizada ou muda de estado.

## Eventos de Webhook de Assinatura

Os seguintes eventos de webhook estão disponíveis para rastrear mudanças no ciclo de vida da assinatura:

| Event                       | Description                                                                                |
| --------------------------- | ------------------------------------------------------------------------------------------ |
| `subscription.active`       | A assinatura é ativada com sucesso                                                         |
| `subscription.updated`      | O objeto da assinatura foi atualizado (qualquer alteração em um campo dispara este evento) |
| `subscription.on_hold`      | A assinatura é suspensa devido à falha na renovação                                        |
| `subscription.renewed`      | A assinatura é renovada para o próximo período de faturamento                              |
| `subscription.plan_changed` | O plano da assinatura foi atualizado, rebaixado ou modificado                              |
| `subscription.cancelled`    | A assinatura é cancelada                                                                   |
| `subscription.failed`       | A criação da assinatura falhou durante a criação do mandate                                |
| `subscription.expired`      | A assinatura chegou ao fim do seu prazo                                                    |

### Usando `subscription.updated` para sincronização em tempo real

O webhook `subscription.updated` é acionado sempre que qualquer campo da assinatura muda, permitindo que você mantenha o estado da sua aplicação sincronizado sem precisar fazer 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>
  Inscreva-se em `subscription.updated` para receber notificações em tempo real sobre qualquer alteração na assinatura, eliminando a necessidade de fazer polling na API para atualizações.
</Tip>

## Esquema de Carga Útil do Webhook
