company logo

Help center

Go to Smartlead.ai
API Documentation
All collectionsAPI, Integrations, and Webhooks How to Retry or Resent Webhooks

How to Retry or Resent Webhooks

This guide shows you how to retry or resend webhook deliveries in Smartlead, confirm they were successful, and prevent duplicates on your end.

Overview

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

Before you retry

  • 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.

Option A: Redeliver the same event

Use this if Smartlead already sent the event but your server didn’t handle it correctly.

  1. Find the failed delivery
    Check your webhook logs for the time, status, response, and event ID.

  2. 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.

  3. 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.

  4. 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.

Option B: Re-trigger the event (regenerate)

Use this if you don’t have the old payload or the event depends on the object’s current state.

  1. 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

  2. Perform the action again
    Do the smallest action needed to fire the event again (like opening or clicking the email).

  3. 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.

FAQ

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.⁠⁠⁠⁠​

Need Help?

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.

Related Articles

  • API Documentation

  • Set Up Smartlead Webhooks for Campaign Automation

Did this answer your question?
😞
😐
😁