Skip to main content

Introduction

Connect Dodo Payments to thousands of apps through Zapier. Each Dodo Payments event can start a Zap that sends an email, adds a spreadsheet row, creates a task, or updates a CRM record.
The Zapier connector sends each event to the webhook URL of a Zap that starts with Webhooks by Zapier. Webhooks by Zapier isn’t available on the Zapier Free plan, so you need a paid Zapier plan. You also need access to Developer → Webhooks in the Dodo Payments dashboard.

Getting Started

1

Open the Webhook Section

In the Dodo Payments dashboard, go to Developer → Webhooks and click Add endpoint.
Add endpoint dialog with Zapier selected in the Integration dropdown and the How to connect Zapier steps
2

Select Zapier

In Integration, select Zapier. The dashboard loads the Zapier transformation code and shows setup steps in the How to connect Zapier panel.
3

Create Zap in Zapier

In Zapier, create a Zap. For the trigger, select Webhooks by Zapier, choose the Catch Hook event, and click Continue. On the trigger’s Test tab, copy the webhook URL.
4

Paste Webhook URL

Paste the Zapier webhook URL into Endpoint URL. The Zapier connector has no API key field.
5

Select Events

Subscribed events lists the events the Zapier connector supports. Keep only the events your transformation handles. Zapier accepts any JSON, so an event that the transformation leaves unchanged still starts your Zap, with the original Dodo Payments payload.
6

Configure Transformation

Under Transformation code, edit the handler to send the fields your Zap uses. Start from the examples.
7

Test & Create

Under Test this code, select an event type and click Simulate to preview the payload. Then click Create endpoint.
8

Done

Subscribed events now reach your Zap. To load sample fields into Zapier, open the endpoint’s Testing tab, select an event type, and click Send example. In Zapier, click Test trigger, map the fields in your action steps, and publish the Zap.

Transformation Code Examples

Each handler replaces webhook.payload with a flat object and keeps webhook.url, your Zapier webhook URL. Dodo Payments amounts are in the smallest currency unit, so the examples divide by 100 and send the result as a string, such as "25.00". For zero-decimal currencies such as JPY and KRW, use the amount as is.

Basic Webhook Payload

Send the details of a successful payment:
basic_webhook.js

Subscription Event Handler

Send a subscription_started or subscription_cancelled event when a subscription becomes active or is cancelled:
subscription_webhook.js

Dispute Alert Handler

Send every dispute event, with urgent set to true when a dispute opens:
dispute_webhook.js
  • Send Gmail or Outlook emails to confirm payments
  • Add customers to email sequences in Mailchimp or ConvertKit
  • Send Slack or Discord notifications
  • Add rows to Google Sheets
  • Add contacts to HubSpot or Salesforce
  • Create deals in Pipedrive or Close
  • Update customer records in Airtable
  • Log activities in Monday.com
  • Create tasks in Asana or Trello
  • Add to-do items in Notion
  • Create calendar events
  • Send SMS messages through Twilio

Tips

  • Keep the payload flat, so each field is easy to find when you map it in Zapier.
  • Use the same field names across events, so one Zap can handle several event types.
  • Include timestamp, so your Zap can record when each event occurred.
  • After you change the transformation, send a new example and test the trigger again in Zapier, so it loads the new fields.
  • To run later steps only for some events, add a Filter by Zapier step that checks event_type.
  • To skip an event in code, set webhook.cancel = true before you return the webhook. The logs record a skipped delivery as successful.

Troubleshooting

  • Check that Endpoint URL matches the webhook URL on the trigger’s Test tab. The URL changes when the Zap is transferred to another Zapier user.
  • Check that the Zap is published and turned on. Zapier returns 404 for a Zap that is off or deleted, but the URL can keep returning 200 for up to several hours after the change.
  • Open the Logs tab in Developer → Webhooks to see Zapier’s response to each delivery.
  • Check that the event is selected in Subscribed events. To change the selection, open the endpoint and click Edit.
  • Check that the field names in your action steps match the keys your transformation sends.
  • Check that each value has the type your action expects. The examples send amounts as strings.
  • Check that the handler returns webhook and that webhook.payload is a JSON object. If the payload is an array, Zapier runs the Zap once for each item.
  • Use Test trigger in Zapier to see the fields of the latest event.
Last modified on September 26, 2026