> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.supersend.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Webhooks: Testing, Delivery Logs, and Payloads

# Webhooks: Testing, Delivery Logs, and Payloads

## Purpose

This article is for anyone building or operating a **Webhook** or **OutboundSync** integration: operators, RevOps, and developers. It explains **what SuperSend sends**, how to **test safely**, and how to use **Webhook delivery logs** to inspect real traffic, copy JSON, filter failures, and retry deliveries.

For **reply vs bounce vs autoresponse** and CRM noise, see [Webhooks: Replies, Bounces, and CRM Automation](https://help.supersend.io/en/article/webhooks-replies-bounces-and-crm-automation-glg697/).

## Prerequisites

- A **Webhook** or **OutboundSync** integration with a URL saved
- **Team** selected in **Admin** → **Integrations** when working at org level (campaign integrations are team-scoped)
- Permission to view integrations and delivery logs for that team

## What to expect from live webhooks

- SuperSend sends an **HTTP POST** to your URL with a **JSON body**.
- The body always includes a top-level **`type`** string (for example `reply`, `open`, `click`, `bounce`, `contact_added`). Use this as the primary branch in Zapier, Make, or custom code.
- If you enable **multiple event types** on the same integration, **every enabled type** is POSTed to the **same URL**. Your receiver must not assume every request is a reply.
- Failed deliveries are **retried** automatically up to a maximum number of attempts. Statuses **Retrying** and **Pending** mean the system is still working toward a result or waiting for the next attempt.
- Optional **headers** (for example event hints) may be present; the JSON **`type`** field remains the reliable source for automation logic. For signing and header details, use the developer documentation at [docs.supersend.io](https://docs.supersend.io/) (Webhooks).

## Test webhooks from the app (per event)

You can fire a test POST **before** real traffic, without waiting for a live event.

1. Open the integration editor: **Admin** → **Integrations** → **Integration Library** → choose **Webhook** (or **OutboundSync**) → **Manage accounts** → add or edit an account; or use **Campaign Settings** → **Integrations** and open the same panel for that campaign.
2. Ensure a **webhook URL** is set.
3. In the **event list**, each subscribable event that supports testing shows **Test →** next to its label. Click **Test →** for the event you want (for example **Reply** or **Open**).
4. Choose **Sample data** or **Real contact data**:
   - **Sample data** — Generic payload shape. Use this to confirm your URL is reachable and your stack accepts POSTs.
   - **Real contact data** — Pick a campaign and contact so fields like `contact.email` and `contact.custom` match production-like data (useful for Zapier/Make field mapping).
5. Send the test. **Every test request includes `"test": true` in the JSON body** so you can ignore or branch on it in your endpoint.

After sending, open **delivery logs** (below) and confirm a row appears with the expected **event** and **status**.

## Where to open Webhook delivery logs

You can open logs from three places; all use the same delivery log UI.

### 1. Org Admin — full account history

1. **Admin** → **Integrations** → **Integration Library**.
2. Select the **team** from the dropdown.
3. Open **Webhook** or **OutboundSync** → **Manage accounts**.
4. For the account you care about, click **Details**.
5. Open the **Delivery Logs** tab.

This view shows deliveries for that integration account **across all campaigns** that use it (no campaign filter).

### 2. Org Admin — from the account list

From **Manage accounts**, each Webhook/OutboundSync row may expose **Test** / **Details**; use **Details** → **Delivery Logs** as above.

### 3. Campaign Settings — this campaign only (Webhook)

1. **Campaign Settings** → **Integrations**.
2. Find **Webhook** where at least one account is active.
3. Click **View logs**.

The modal lists deliveries **scoped to the current campaign** (useful when one webhook URL is shared across many campaigns).

**OutboundSync** uses the same **Delivery Logs** tab in **Admin** when you open the account **Details**; the campaign integrations page does not show a separate **View logs** shortcut for OutboundSync today.

## Using the delivery log UI

### Summary

At the top, you may see **total deliveries**, a **success rate** snapshot for the current page, and **average latency** for rows that reported timing. Use these as a quick health check, not as a substitute for your own monitoring.

### Search and filters

- **Search** — Matches **contact email** (partial search). Use this to find a specific prospect or test contact.
- **Filters** — Open **Filters** to restrict by **Status** (Delivered, Failed, Retrying, Pending) and **Event type** (Reply, Open, Click, Bounce, etc.).
- **Clear all** — Removes search and filter selections.
- **Refresh** — Reloads the current page from the server.

### Table columns

| Column | Meaning |
|--------|--------|
| **Time** | When the delivery record was created (queue time), not necessarily when your server finished. |
| **Event** | Webhook event type for this POST. |
| **Contact** | Associated contact email when the event had a contact; some events may show no contact. |
| **Status** | **Delivered** (success), **Failed** (exhausted or terminal failure), **Retrying** / **Pending** (in progress or scheduled). |
| **Response** | HTTP status code returned by your server (when available) and round-trip **latency**. |
| **Actions** | **Retry** (when failed or retrying), and row expand/collapse. |

### Pagination

Deliveries load in pages (50 per page). Use **Previous** / **Next** at the bottom to move through history.

## Expand a row: attempts, errors, payload

Click a row to expand it. You will see:

- **Attempts** — Current count vs **max attempts** for automatic delivery.
- **HTTP status** and **latency** for the latest attempt.
- **Last attempt** and, if applicable, **Next retry** time.
- **Campaign** name when the event was tied to a campaign.
- **Error** message when SuperSend captured a failure reason (timeouts, connection errors, non-2xx responses, etc.).

If a **stored payload** is available for that delivery, an action **View Payload** appears.

### View Payload and Copy JSON

1. Expand the delivery row.
2. Click **View Payload**.
3. A modal shows the **exact JSON body** SuperSend attempted to send (pretty-printed).
4. Use **Copy JSON** to paste into your IDE, a JSON formatter, or a ticket for support.

**Note:** Very old deliveries may have been created before payload retention was available; in those cases **View Payload** may not appear. Use **Test →** for that event type or trigger a new live event, then inspect the new row.

### Manual Retry

For rows in **Failed** or **Retrying**, use **Retry** to queue another delivery attempt. This resets the attempt counter for that record in the UI and is useful after you fix your endpoint or firewall rules.

## Export CSV

**Export CSV** queues a background export of webhook delivery data. When it completes, you receive **email** notification; you can also open **Admin** → **Exports** (or your org’s exports area) to download the file. Use exports for audits, spreadsheets, or sharing with someone who does not have app access.

## If you use the V2 API or MCP

Dashboard delivery logs apply to integrations created and used inside the product. If you manage webhooks with the **V2 API** or automation tools, refer to [docs.supersend.io](https://docs.supersend.io/) for payload schemas, signing, and listing deliveries via API. The JSON shape and **`type`** field follow the same conceptual model as campaign webhooks.

## Troubleshooting

| Issue | What to do |
|--------|------------|
| **No rows in delivery logs** | Confirm the integration is **enabled**, the event toggles you expect are on, and real activity (or **Test →**) has occurred. Check you are on the correct **team** and, in campaign view, the correct **campaign**. |
| **All failures or 4xx/5xx** | Expand a row, read **Error**, open **View Payload**, and replay the request against a local tunnel (for example ngrok) or logging middleware. Fix the endpoint, then use **Retry**. |
| **Wrong event type in Zapier/Make** | You enabled multiple events on one URL. Filter on **`type`** (and for replies, optionally **`reply.category`**) in the automation. See [Webhooks: Replies, Bounces, and CRM Automation](https://help.supersend.io/en/article/webhooks-replies-bounces-and-crm-automation-glg697/) and [SuperSend → Make → Salesforce Setup](https://help.supersend.io/en/article/supersend-make-salesforce-setup-dv6sj/). |
| **Custom fields missing in payload** | Use **Real contact data** in **Test →**, or **View Payload** on a live delivery, and confirm keys under `contact.custom`. Names match what you used in CSV or API. |
| **Cannot find View Payload** | The delivery may predate stored payloads; send a new **Test →** or wait for a new event and inspect that row. |

## Related articles

- [Webhooks: Replies, Bounces, and CRM Automation](https://help.supersend.io/en/article/webhooks-replies-bounces-and-crm-automation-glg697/)
- [Integrations Overview](https://help.supersend.io/en/article/integrations-overview-r3pvl9/)
- [Zapier and Make Setup](https://help.supersend.io/en/article/zapier-and-make-setup-1k96iky/)
- [SuperSend → Make → Salesforce Setup](https://help.supersend.io/en/article/supersend-make-salesforce-setup-dv6sj/)
