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.

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 replaceswebhook.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 asubscription_started or subscription_cancelled event when a subscription becomes active or is cancelled:
subscription_webhook.js
Dispute Alert Handler
Send every dispute event, withurgent set to true when a dispute opens:
dispute_webhook.js
Popular Zapier Use Cases
Email Notifications
Email Notifications
- 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
CRM Updates
CRM Updates
- Add contacts to HubSpot or Salesforce
- Create deals in Pipedrive or Close
- Update customer records in Airtable
- Log activities in Monday.com
Task Management
Task Management
- 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 = truebefore you return the webhook. The logs record a skipped delivery as successful.
Troubleshooting
Zap Not Triggering
Zap Not Triggering
- 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
404for a Zap that is off or deleted, but the URL can keep returning200for 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.
Data Not Mapping Correctly
Data Not Mapping Correctly
- 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
webhookand thatwebhook.payloadis 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.