Webhook Basics
Webhooks allow notifications by posting (POST) a JSON array of event data to a URL of your choice. For example, you can receive a webhook when a recipient unsubscribes from an email, allowing you to update or remove the address from your database.
General Notes
-
Batch size: Each webhook payload contains a maximum of 100 records per POST.
-
Response status: Your endpoint must return HTTP status
200 to indicate successful receipt. Any other status will be treated as a failure.
-
Retry policy: Failed deliveries are retried up to five times using the following intervals: 5 minutes, 1 hour, 3 hours, 12 hours, and 24 hours after the initial attempt.
-
Webhook disabling: Your webhook will be disabled if there are 100 consecutive failures.
-
The
timestamp field is a UNIX timestamp in CST (Central Standard Time).
-
The
listmetadata field (optional) contains a JSON object of all columns from your list for the associated email record. To include this, enable "Include Full List Column Data" when setting up your webhook.
Security Best Practice
To secure your webhook endpoint, verify the APISIGNATURE HTTP header included with each POST.
The signature is generated using hash_hmac with sha512 on the POST payload and your Master API Key as the shared secret.
See our sample code downloads for implementation examples.
Supported Webhook Types
- open — Triggered when an email is opened
- click — Triggered when a link is clicked in an email
- unsubscribe — Triggered when an email unsubscribe event occurs
- smtpopen — Triggered when an email is opened via SMTP API
- smtpclick — Triggered when a link is clicked in an email via SMTP API
- smtphardbounce — Triggered when a hard bounce occurs via SMTP API
- smtpsoftbounce — Triggered when a soft bounce occurs via SMTP API
- notification — Notifies for different events in the system. Such as list completion for email/SMS, merging list completion, SMS 10dlc events, DBL alerts, campaign error alerts, list verification job completion.
Webhook Data Examples
Type:
open
For when an email is opened
JSON Data Returned
Type:
click
For when a link is clicked in an email
JSON Data Returned
Type:
unsubscribe
For when an email unsubscribe happens on the account
JSON Data Returned
Type:
smtpsoftbounce
If using the SMTP API occurs when there is a soft bounce
JSON Data Returned
Type:
smtphardbounce
If using the SMTP API occurs when there is a hard bounce
JSON Data Returned
Implementation Tips
-
Ensure your server responds quickly with HTTP
200 so webhook retries are not triggered.
-
Always validate the
APISIGNATURE for authenticity to prevent spoofed requests.
-
Consider logging all received events for troubleshooting any delivery or processing issues.