> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firsttouch.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For API operations, fetch https://gateway.firsttouch.ai/api/public/openapi.json for the complete input/output schemas, internal references, and x-mcp-annotations. Endpoint Markdown intentionally omits generated schema fragments. Select /api/public/tools/<tool_name> using the exact underscore-separated name. Send requests to https://gateway.firsttouch.ai; the canonical document currently omits servers. Start at https://docs.firsttouch.com/api-reference/agent-start.md.

# Configure Webhooks

> Send FirstTouch outreach, reply, and signal events to your other apps, test a destination, and review deliveries.

Webhooks send events from FirstTouch to an HTTPS endpoint in another app. Use them to notify your team about replies, record completed outreach in your own system, or react to social and website signals.

You choose which events each **destination** receives. A destination is the receiving app's webhook URL and its FirstTouch settings.

> [!NOTE]
>
> Webhooks are available where the feature is enabled. Only Team owners and Admins can manage destinations, signing secrets, and delivery history. If Webhooks is missing, see the [troubleshooting FAQ](https://docs.firsttouch.com/WebApp/Webhooks/troubleshooting.md#why-cant-i-see-webhooks).

## Before You Start

* Select the FirstTouch Team whose events you want to receive.
* Obtain a publicly reachable HTTPS webhook URL from your receiving app, or prepare your own receiver.
* Ensure the receiver accepts JSON POST requests and responds with an HTTP `2xx` status within five seconds.
* For a custom receiver, implement [signature verification and duplicate handling](https://docs.firsttouch.com/WebApp/Webhooks/technical-reference.md#signature-verification).

> [!WARNING]
>
> Destinations created through the current settings form include available message content, contact details, and signal details. Only connect an app authorised to receive this data. The form does not expose a separate sensitive-data switch. Keep signing secrets in a secrets manager, not in screenshots, browser code, or support messages.

## Add A Destination

The screenshots use an example destination named **Social events**. Destination URLs and Team identifiers have been replaced with placeholders; use your own receiving app's URL when configuring a destination.

**1. Open Webhooks**

Go to **Team Settings > Integrations**. On the **Webhooks** card, click **Settings**.

If no destinations exist, the **Destinations** tab shows **Connect your first app**. Either **Add destination** button opens the same form.

![Empty Webhooks Destinations tab with Add destination buttons in the header and Connect your first app panel.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/destinations-empty.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=114f51907696ba278428499c2840114f)

The Destinations tab before the first app is connected.

**2. Enter the destination details**

Click **Add destination**. Enter a **Destination name** of 1–100 characters and the receiving app's **Webhook URL**.

Use a public HTTPS hostname on port 443. Localhost, private-network destinations, IP-address URLs, embedded usernames/passwords, and URL fragments are not supported. Use the final receiving URL: redirects are not followed.

**3. Choose events**

Under **Events to send**, select at least one event. Use **Select all** only if the receiving app needs every available type.

Events are grouped into LinkedIn, email, and signals. See the [event catalogue](https://docs.firsttouch.com/WebApp/Webhooks/technical-reference.md#event-catalogue) for exact names and trigger conditions.

In this example, all six LinkedIn event types are selected; email and signal events are left unchecked. Select `signal.social.detected` separately if you also want social-engagement signals.

![Add destination form named Social events with an example HTTPS URL, six LinkedIn event checkboxes selected, and Send events to this destination enabled.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/add-destination.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=5007939403b442d63bb58dd8693d01c7)

Add a destination URL and select the exact event types the receiving app needs.

**4. Save the destination**

Leave **Send events to this destination** selected to enable delivery, then click **Add destination**.

Clear the checkbox if you want to save without enabling delivery yet.

**5. Save the signing secret**

In **Save your signing secret**, reveal and copy the secret into your receiving app's secure configuration, then click **I saved it**.

You can reveal the active secret again from the destination's **Overview** tab. A webhook signing secret verifies incoming events; it is not a FirstTouch Public API key.

## Review And Test The Destination

In **Destinations**, click the destination name to open **Overview**, **Testing**, and **Delivery history**. The green **On** badge indicates that sending is enabled; it does not establish that a delivery has succeeded.

![Social events destination Overview with the send-events switch on, six selected event types, and a masked signing secret with reveal and rotation icons.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/destination-overview.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=4d226152f195757495814439d06b4cd5)

Overview shows the enabled state, subscribed events, and masked signing secret.

1. In **Overview**, confirm **Send events to this destination** is on and review **Selected events**.
2. Open **Testing** and select one of the destination's configured events.
3. Under **Example data**, use **Fields** to search field descriptions or **JSON** to inspect the sample payload.
4. Click **Send test event**. This sends a synthetic event to the actual receiving URL; its payload has `is_test: true`.
5. Inspect the result in **Delivery details** or **Delivery history**. **Delivered** means the receiver returned an HTTP `2xx` status—not that its downstream processing completed.

![Testing tab with linkedin.connection.accepted selected, Send test event, and the JSON example view showing a synthetic event with is\_test set to true.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/testing-example.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=181d462260cc93465eba15fe4c2d6be4)

Testing lets you choose a subscribed event, inspect example JSON, and send a test to your app.

> [!TIP]
>
> Turn off **Show explanations** before copying an example into a JSON parser. Examples with explanations contain comments and are not valid JSON. Previewing or copying an example does not send it.

Tests use the same delivery and retry mechanism as real events. A queued or processing test is not yet a successful delivery. Make sure the receiving app handles test events safely.

## Review Delivery History

Use **Delivery history** on the main Webhooks screen for the Team's deliveries, or inside a destination for only that destination. History covers the last **30 days**.

* Search by destination name, event ID, or delivery ID.
* Filter by destination where available, event, status, and date range.
* Click **Refresh** to retrieve current results.
* Select a row to open **Delivery details**.

A blue **TEST** marker identifies a synthetic event. The **Attempts** column counts delivery attempts, not separate business events. The example below shows a test delivered on its first attempt.

![Destination Delivery history with event, status, and date filters, a Refresh button, and one TEST delivery marked Delivered with one attempt.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/delivery-history.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=8b9e2a13f9d11c08176faceccc93e11f)

Delivery history shows the event, test marker, status, attempt count, and creation time.

Details include event data, event and delivery IDs, the test-event marker, and each attempt's HTTP status, timing, and available response or error. Receiver response text may be shortened or redacted.

![Delivery details drawer for a synthetic linkedin.connection.request\_sent event, showing Delivered, event and delivery IDs, event data, Resend, and Attempt 1 with HTTP 200.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/delivery-details.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=1d7bede9bac5c220d3842ab6459d1968)

An example connection-request test delivery: the first attempt received HTTP 200. Resend is available at the top of the drawer.

For a completed delivery, click **Resend** when offered. This sends the original payload again and creates a separate delivery history entry. It can trigger duplicate downstream work unless your receiver deduplicates events. See [retries and resends](https://docs.firsttouch.com/WebApp/Webhooks/technical-reference.md#retries-and-resends).

## Edit, Turn Off, Or Delete A Destination

Use the destination's actions menu to choose **Edit destination**, **Turn off** / **Turn on**, or **Delete destination**. You can also use **Send events to this destination** in **Overview**.

The actions menu is the three-dot button at the right of the destination card. The card also shows the number of subscribed event types and **Last successful delivery**. A dash means no successful delivery is shown yet; use **Delivery history** to investigate.

![Social events destination card with an On badge, six events, a dash under Last successful delivery, and its Turn off, Edit destination, and Delete destination menu open.](https://mintcdn.com/firsttouchinc/TYcp4ItLj7u6Y_rO/images/webhooks/destination-actions.webp?fit=max\&auto=format\&n=TYcp4ItLj7u6Y_rO\&q=85\&s=4e800c42b8037a3d365fcb5883a51e83)

Use the destination's three-dot menu to turn sending off, edit settings, or delete it.

> [!WARNING]
>
> Turning off a destination cancels its pending deliveries. Events received while it is off are not queued for that destination. Turning it back on does not restore canceled deliveries or backfill missed events. Retained completed deliveries can be resent individually when eligible.

Deleting a destination stops future delivery, cancels pending deliveries, and removes its signing secrets. It cannot be used for resends after deletion. Retained delivery details remain subject to the 30-day history window.

If a delivery is already in flight, FirstTouch may ask you to retry the change shortly. Changing the URL affects later attempts; it does not rewrite payloads already recorded in history.

## Change A Signing Secret

In **Overview > Signing secret**, use the eye icon to reveal the active secret. Use the circular-arrow icon (**Rotate secret**) beside it to open **Change signing secret**.

| Option | Effect |
| - | - |
| **Create a new signing secret** | Creates a new secret. Existing active secrets remain valid for up to one hour; an earlier expiry is not extended. Update your receiver before they expire. |
| **Replace immediately** | Invalidates all existing secrets immediately and creates a replacement. Coordinate the receiver update to avoid failed deliveries. |
| **Turn off all signing secrets** | Revokes every active secret without creating a replacement. Events cannot be sent without an active signing secret. |

Confirm the operation, then securely store any new secret. If there is no active secret, use **Create secret** and update the receiver before testing again.

## Next Steps

* [Webhook Technical Reference](https://docs.firsttouch.com/WebApp/Webhooks/technical-reference.md): payloads, signatures, retries, and limits.
* [Webhook Troubleshooting](https://docs.firsttouch.com/WebApp/Webhooks/troubleshooting.md): missing events, delivery failures, and common questions.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.