Smartlead’s Webhooks let you send real-time data about campaign events to external systems. If a delivery fails or your server wasn’t ready, you can retry or resend the webhook to ensure your data pipeline is complete and consistent.
This guide explains:
How to safely redeliver or re-trigger webhook events
How to avoid duplicates
Troubleshooting common errors
Best practices for webhook handling
Scope conflicts
If you set up a User-level webhook, it will take priority over Client or Campaign-level webhooks. Make sure the right one is active for your events.
Endpoint readiness
Your webhook URL should use HTTPS, accept POST requests with JSON, and reply with a quick 2xx success. Do any heavy work in the background — slow responses or errors will cause retries.
Avoid duplicates
Design your receiver to check the event ID so it doesn’t process the same event twice if Smartlead retries.
What can be retried or resent?
Event webhooks
Email Sent, First Email Sent, Email Open, Email Link Click, Email Reply, Lead Unsubscribed, Lead Category Updated, Email Bounce, Campaign Status Changed, Manual Step Reached, Untracked Replies.
Error logging webhooks
If you’re using the Error Webhook API, you can test or review failures by re-sending the same payload. This makes it easier to trace and debug issues.
Use this if Smartlead already sent the event but your server didn’t handle it correctly.
Find the failed delivery
Check your webhook logs for the time, status, response, and event ID.
Fix the issue on your side
Make sure your server replies quickly with a 2xx success, can read the JSON, and passes any secret or signature checks.
Send it again
Use the redelivery option in Smartlead (if available) or resend the same payload manually. Keep the same event ID so it’s not processed twice.
Check success
Confirm your logs show a 2xx and that the event was saved only once.
Tip: If your test tool shows “Too Many Requests (429),” switch to a proper server or add buffering.
Use this if you don’t have the old payload or the event depends on the object’s current state.
Choose the right event type
For example:
Sent = a new sent time exists
Open = a new open time exists
Click = a new click time exists
Reply = a new reply time exists
Bounce = bounce status changed to true
Perform the action again
Do the smallest action needed to fire the event again (like opening or clicking the email).
Confirm delivery
Check the logs for a 2xx success and verify the event was delivered as expected.
Safe retry patterns
Reply quickly, handle later
Always send back a 2xx success right away. Do the heavy work in the background so retries aren’t triggered by timeouts.
Avoid duplicates
Design your system to check the event ID (or payload hash) so the same event isn’t processed twice if Smartlead retries.
Retry smartly
When replaying many events, spread them out and watch for errors. Don’t overload your server or connected systems with a flood of retries.
Troubleshooting repeated webhook failures
4xx errors on every retry
Double-check your setup: is authentication correct, are signatures verified, and can your server read the JSON (including arrays)? Make sure you return Content-Type: application/json
.
5xx errors or timeouts
Your server may be overloaded. Scale it up, do less work up front, and push heavy tasks into a background queue.
429 Too Many Requests
Don’t use a rate-limited test tool. Add a queue to handle bursts and slow down retries if needed.
Events going to the wrong place
If you only want Client or Campaign webhooks, remove or update any User-level webhook, since it overrides the others.
Observability and audit
Delivery logs
Check the logs for delivery time, status code, and response details to confirm whether a resend worked.
Error Webhook API
Send platform or integration errors to a dedicated error endpoint so you can cross-check and build a clear incident timeline.
Webhook manager
If you think the issue might be on the Smartlead side, review the status of the webhook manager service that handles deliveries.
Q: Will resending cause duplicate processing?
A: It shouldn’t if your receiver is idempotent. Use event id–based de-duplication.
Q: Can I test Slack webhooks?
A: There is no built-in “test” button. Configure the Slack webhook and trigger a real event to validate end-to-end.
Q: Do lower-level webhooks receive events when a User-level webhook exists?
A: No. A User-level webhook overrides client and campaign-level hooks until removed or reconfigured.
If your webhooks are still failing after retrying:
Events don’t show up in logs
Payloads are malformed or misrouted
You're unsure about event scope
Contact Smartlead Support, we're happy to help troubleshoot your webhook setup.