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

# Zapier

> Sambungkan Dodo Payments ke 5000+ aplikasi melalui webhook Zapier untuk kemungkinan otomatisasi tanpa batas.

## Pendahuluan

Sambungkan Dodo Payments ke ribuan aplikasi dan layanan melalui Zapier. Otomatiskan alur kerja dengan memicu Zaps saat peristiwa pembayaran terjadi, mulai dari mengirim email hingga memperbarui spreadsheet, membuat tugas, dan banyak lagi.

<Info>
  Integrasi ini memerlukan URL webhook Zapier dari konfigurasi Zap Anda.
</Info>

## Memulai

<Steps>
  <Step title="Open the Webhook Section">
    Di dashboard Dodo Payments Anda, navigasikan ke <b>Webhooks → + Add Endpoint</b> dan perluas dropdown integrasi.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/slbAEdrLLwKHfaRf/images/integrations/zapier.png?fit=max&auto=format&n=slbAEdrLLwKHfaRf&q=85&s=4f04fe274ed3c2135baaa23e7f3cf566" alt="Add Endpoint and integrations dropdown" style={{ maxHeight: '500px', width: 'auto' }} width="1636" height="944" data-path="images/integrations/zapier.png" />
    </Frame>
  </Step>

  <Step title="Select Zapier">
    Pilih kartu integrasi <b>Zapier</b>.
  </Step>

  <Step title="Create Zap in Zapier">
    Di Zapier, buat Zap baru dengan "Webhooks by Zapier" sebagai pemicu. Salin URL webhook.
  </Step>

  <Step title="Paste Webhook URL">
    Tempelkan URL webhook Zapier ke konfigurasi endpoint.
  </Step>

  <Step title="Configure Transformation">
    Edit kode transformasi untuk memformat data bagi alur kerja Zapier Anda.
  </Step>

  <Step title="Test & Create">
    Uji menggunakan payload sampel dan klik <b>Buat</b> untuk mengaktifkan integrasi.
  </Step>

  <Step title="Done!">
    🎉 Event pembayaran sekarang akan memicu alur kerja Zapier Anda secara otomatis.
  </Step>
</Steps>

## Contoh Kode Transformasi

### Payload Webhook Dasar

```javascript basic_webhook.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      event_type: webhook.eventType,
      payment_id: p.payment_id,
      amount: (p.total_amount / 100).toFixed(2),
      currency: p.currency || "USD",
      customer_email: p.customer.email,
      customer_name: p.customer.name,
      payment_method: p.payment_method || "unknown",
      timestamp: webhook.payload.timestamp
    };
  }
  return webhook;
}
```

### Penangan Acara Langganan

```javascript subscription_webhook.js icon="js" expandable theme={null}
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        event_type: "subscription_started",
        subscription_id: s.subscription_id,
        customer_email: s.customer.email,
        customer_name: s.customer.name,
        product_id: s.product_id,
        amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
        frequency: s.payment_frequency_interval,
        next_billing: s.next_billing_date,
        timestamp: webhook.payload.timestamp
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        event_type: "subscription_cancelled",
        subscription_id: s.subscription_id,
        customer_email: s.customer.email,
        cancelled_at: s.cancelled_at,
        cancel_at_next_billing: s.cancel_at_next_billing_date,
        timestamp: webhook.payload.timestamp
      };
      break;
  }
  return webhook;
}
```

### Penangan Pemberitahuan Sengketa

```javascript dispute_webhook.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    webhook.payload = {
      event_type: webhook.eventType,
      dispute_id: d.dispute_id,
      payment_id: d.payment_id,
      amount: (d.amount / 100).toFixed(2),
      status: d.dispute_status,
      stage: d.dispute_stage,
      remarks: d.remarks || "",
      urgent: webhook.eventType === "dispute.opened",
      timestamp: webhook.payload.timestamp
    };
  }
  return webhook;
}
```

## Kasus Penggunaan Zapier yang Populer

<AccordionGroup>
  <Accordion title="Email Notifications">
    * Kirim email Gmail/Outlook untuk konfirmasi pembayaran
    * Buat rangkaian email di Mailchimp/ConvertKit
    * Kirim notifikasi Slack/Discord
    * Buat catatan Google Sheets
  </Accordion>

  <Accordion title="CRM Updates">
    * Tambahkan kontak ke HubSpot/Salesforce
    * Buat kesepakatan di Pipedrive/Close
    * Perbarui data pelanggan di Airtable
    * Catat aktivitas di Monday.com
  </Accordion>

  <Accordion title="Task Management">
    * Buat tugas di Asana/Trello
    * Tambahkan item to-do di Notion
    * Buat acara kalender
    * Kirim notifikasi SMS melalui Twilio
  </Accordion>
</AccordionGroup>

## Tips

* Jaga struktur payload tetap sederhana untuk memudahkan pemrosesan Zapier
* Gunakan nama field yang konsisten di semua peristiwa
* Sertakan timestamp untuk penjadwalan alur kerja
* Uji Zap Anda dengan data contoh sebelum diluncurkan
* Gunakan filter bawaan Zapier untuk logika bersyarat

## Pemecahan Masalah

<AccordionGroup>
  <Accordion title="Zap not triggering">
    * Pastikan URL webhook benar dan aktif
    * Periksa bahwa Zap dalam keadaan menyala di Zapier
    * Pastikan struktur payload sesuai dengan harapan Zapier
    * Uji pengiriman webhook di dasbor Zapier
  </Accordion>

  <Accordion title="Data not mapping correctly">
    * Periksa nama bidang di langkah aksi Zapier
    * Verifikasi tipe data sesuai format yang diharapkan
    * Gunakan fitur uji Zapier untuk men-debug pemetaan
    * Pastikan kode transformasi mengembalikan JSON yang valid
  </Accordion>
</AccordionGroup>
