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

# Langganan

> Payload yang dikirim ke endpoint webhook Anda ketika langganan dibuat, diperbarui, atau berubah status.

## Peristiwa Webhook Langganan

Peristiwa webhook berikut tersedia untuk melacak perubahan siklus hidup langganan:

| Acara                       | Deskripsi                                                             |
| --------------------------- | --------------------------------------------------------------------- |
| `subscription.active`       | Langganan berhasil diaktifkan                                         |
| `subscription.updated`      | Objek langganan diperbarui (setiap perubahan bidang memicu acara ini) |
| `subscription.on_hold`      | Langganan ditangguhkan karena pembaruan gagal                         |
| `subscription.renewed`      | Langganan diperbarui untuk periode penagihan berikutnya               |
| `subscription.plan_changed` | Paket langganan ditingkatkan, diturunkan, atau dimodifikasi           |
| `subscription.cancelled`    | Langganan dibatalkan                                                  |
| `subscription.failed`       | Pembuatan langganan gagal saat pembuatan mandat                       |
| `subscription.expired`      | Langganan mencapai akhir masa berlakunya                              |

### Menggunakan `subscription.updated` untuk Sinkronisasi Waktu Nyata

Webhook `subscription.updated` dipicu setiap kali bidang langganan berubah, memungkinkan Anda menjaga status aplikasi tetap sinkron tanpa harus melakukan 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>
  Berlangganan ke `subscription.updated` untuk mendapatkan notifikasi waktu nyata tentang setiap perubahan langganan, sehingga Anda tidak perlu lagi melakukan polling pada API untuk pembaruan.
</Tip>

## Skema Payload Webhook
