POST.
Create a webhook
1
Open Integrations → Webhooks
Go to Configuration → Integrations → “4 · Webhooks”.
2
Add your endpoint
Enter an
https:// URL (HTTP is rejected) and select the events to subscribe to.3
Save your signing secret
TrackRev shows the endpoint’s signing secret (
whsec_…) once — store it to verify
signatures.Payload
Every delivery is aPOST with this envelope:
Verify the signature
ComputeHMAC-SHA256(rawBody, signingSecret) and compare (constant-time) to
X-TrackRev-Signature:
Events
Event fields
click.created—click_idis the click’s id (theidinGET /api/v1/clicks),tsits timestamp,visitor_idthe visitor who clicked, andexternal_idthe link’s ownexternal_id(nullif it has none). For a Smart Link,channelis the channel inferred for this click.sale.created— when the sale was attributed to a click,link_idandchannelname the credited link (with split credit, the most recent click) andvisitor_idthe buyer’s visitor; all three arenullfor a sale with no click credit (e.g. coupon-only).
click.created
Delivery behaviour
- Each event is delivered to every active webhook subscribed to it.
- Each attempt times out after 5 seconds. A delivery that fails with a network error, a timeout,
429or a5xxis retried — up to 3 attempts, 0.5 s and then 2 s apart, all within about 10 seconds. Other responses (2xx,3xx,4xx) are final. - Retries send the identical body and headers (same
X-TrackRev-Timestampand signatures), so you can de-duplicate on the body — e.g.click_idfor clicks,order_idfor sales. - Delivery is best-effort — TrackRev records the final attempt’s status but does not block your product on your endpoint. Credit deliveries made by the fulfilment worker are attempted once.
- Return a
2xxquickly; do heavy work asynchronously on your side.
Manage webhooks (add, disable, delete) from the same Integrations section. Each row shows its last
delivery status and time.

