Webhooks (outbound)
EdenClick sends a signed POSTto your endpoint whenever a deal is created, won, or updated, or a new contact is captured. This is the foundation for Slack notifications, Zapier, n8n, Make, and your own backend integrations.
Events
| deal.created | Fired when a deal is created (API, tracking, postback, or app). |
| deal.won | Fired when a deal moves into the Won stage. |
| deal.updated | Fired on any other deal update (value, status, notes). |
| contact.created | Fired when a new contact is captured. |
Setup
- Go to Settings → Webhooks and add an endpoint URL.
- Select the events you care about and save. Copy the signing secret — it is shown only once.
- The endpoint receives a
POSTwith JSON. Verify the signature and respond with2xx.
Payload
{
"event": "deal.won",
"eventId": "9f7e…",
"timestamp": "2026-08-08T00:00:00.000Z",
"workspace": { "id": "…", "slug": "acme" },
"data": {
"id": "…",
"title": "Big deal",
"value": 5000,
"stage": "Won",
"status": null,
"conversionType": "purchase",
"currency": "USD",
"commissionAmount": 250,
"site": "store.example.com",
"contact": { "id": "…", "name": "Jane Doe", "email": "jane@example.com", "companyId": null },
"partner": { "id": "…", "name": "Jane Doe", "email": "jane@partner.io" },
"link": { "id": "…", "slug": "jane-link", "productLabel": "Day Tour" }
}
}data for contact.created contains the contact fields instead. Requests are sent with headersX-EdenClick-Event,X-EdenClick-Event-Id, andX-EdenClick-Signature.
Verify the signature (Node.js)
import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(req, secret) {
const body = JSON.stringify(req.body);
const expected = createHmac('sha256', secret)
.update(body).digest('hex');
const actual = req.headers['x-edenclick-signature'];
return actual && timingSafeEqual(
Buffer.from(actual), Buffer.from(expected)
);
}Quick example: Slack
Create an Incoming Webhook in Slack, then set the EdenClick webhook URL to it. Slack accepts arbitrary JSON and will render a message for a textfield, so the payload above displays directly.