For the complete documentation index, see llms-docs.txt or the site index llms.txt. Full docs corpus: llms-full-docs.txt. Prefer the markdown version of this page at /docs/webhooks.md. Product capabilities: skill.md. Docs MCP: /docs/mcp. Site MCP: /mcp.

Introduction

Use webhooks to notify your application about events from Reloop.

Webhooks allow you to build or set up integrations which subscribe to certain events on Reloop. When one of those events is triggered, we'll send a HTTP POST payload to the webhook's configured URL.

What is a webhook?

Webhooks are "user-defined HTTP callbacks". They are usually triggered by some event, such as an email being delivered or a domain being verified. When that event occurs, the source site makes an HTTP request to the URL configured for the webhook. Users can configure them to cause events on one site to invoke behavior on another.

Why use webhooks?

  • Automatically remove bounced email addresses from mailing lists
  • Create alerts in your messaging or incident tools based on event types
  • Store all send events in your own database for custom reporting/retention
  • Receive emails using Inbound

How to receive webhooks

1. Create a dev endpoint to receive requests.

Set up a URL on your server that can receive HTTP POST requests.

export default (req, res) => {
  if (req.method === 'POST') {
    const event = req.body;
    console.log(event);
    res.status(200).send('OK');
  }
};

You can use tools like ngrok or VS Code Port Forwarding to expose your local server to the internet.

2. Add a webhook in Reloop.

Go to the Webhooks page in your dashboard.

  1. Add your publicly accessible HTTPS URL.
  2. Select all events you want to observe.

3. Test your local endpoint.

When you send an email or trigger an event, Reloop will send a payload like this to your endpoint:

{
  "id": "whev_01h…",
  "type": "email.bounced",
  "created_at": "2026-07-22T23:41:12.126Z",
  "data": {
    "email_id": "em_123456789",
    "from": "Acme <onboarding@reloop.sh>",
    "to": ["bounced@reloop.sh"],
    "subject": "Sending this example",
    "status": "bounced",
    "error": {
      "code": 550,
      "message": "User unknown"
    }
  }
}

All data fields use snake_case. See Event Types for the full catalog and per-category shapes.

Headers include Reloop-Id, Reloop-Timestamp, and Reloop-Signature for verification.

4. Update and deploy your production endpoint.

Once you've tested your logic, update your endpoint to handle specific event types and deploy it to your production server.

export default (req, res) => {
  if (req.method === 'POST') {
    const event = req.body;
    if (event.type === "email.bounced") {
      // Handle bounce logic
    }
    res.status(200).send('OK');
  }
};

5. Register your production webhook endpoint

Update your webhook URL in the Reloop Dashboard with your production URL.

FAQ


Learn More

Was this page helpful?

Edit this page