Webhooks
Last reviewed:
DMowl POSTs a JSON event to your URL when a lead shares an email, clicks a link, enters a giveaway, opts out or buys. Set the URL and events under Integrations; each request is signed with your secret so you can verify it came from DMowl.
Set up
- 1 Create a receiving URL
Make: “Custom webhook”. Zapier: “Webhooks by Zapier → Catch Hook”. n8n: “Webhook” node. Or your own endpoint.
- 2 Add it in DMowl
Integrations → Outgoing webhook: paste the URL, choose events, save.
- 3 Test
Click “Send test event”. A lead.email_collected event with test data arrives at your URL.
Events
| Event | Sent when | data contains |
|---|---|---|
| lead.email_collected | A contact answered an email question | contact_id, username, name, email, source, source_id |
| link.clicked | A contact opened a tracked link (first click) | url, contact_id, source, source_id |
| giveaway.entered | A contact entered a giveaway | giveaway_id, contact_id, username |
| contact.opted_out | A contact wrote STOP or similar | contact_id, username |
| conversion.created | An order was attributed to a DM | amount, currency, contact_id, source, source_id, order_id |
Payload and signature
The body is { "event": "…", "created_at": "ISO date", "data": { … } }. Headers: X-DMowl-Event (the event name) and X-DMowl-Signature: sha256=<hex>, an HMAC-SHA256 of the raw body with your signing secret (shown under Integrations).
Compute the HMAC over the raw request body before parsing it and compare it with the header. Your endpoint should answer within 5 seconds; events are sent once and not retried, so queue slow work.
Questions? Answers.
Is there a Zapier app?
Not yet. Use “Webhooks by Zapier → Catch Hook” — it works the same way.
Still stuck? Write to us and tell us what you tried: hello@dmowl.com