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

# Webhooks

> Signed HTTP deliveries of responses, status changes, AI corrections, urgent feedback, theme spikes and account events to an endpoint you run.

Usertick sends webhook events to an endpoint you host as they happen. Every delivery is signed the [Standard Webhooks](https://www.standardwebhooks.com/) way, failed deliveries are retried, and Usertick keeps every attempt for 30 days. Webhooks are available on the Starter plan and above.

> [card] [Events](https://docs.usertick.com/developers/webhooks/events.md)
>
> The events an endpoint can receive and the body each one carries.

> [card] [Verify signatures](https://docs.usertick.com/developers/webhooks/verify.md)
>
> Confirm that a delivery came from Usertick, in Node and Python.

> [card] [Delivery and retries](https://docs.usertick.com/developers/webhooks/delivery.md)
>
> Timeouts, retries, the delivery log, resending and failure alerts.

> [card] [Rotate a secret](https://docs.usertick.com/developers/webhooks/rotation.md)
>
> Switch to a new signing secret without missing a delivery.

## Ways to receive events

An endpoint is a URL with a signing secret. Endpoints are listed under **Settings → Developers → Webhooks**, and responses reach them in three ways:

1. **Workflows.** On the **Workflows** page, a workflow for one survey can include a **Send to a webhook** step that sends the survey's responses to an endpoint. The workflow starts **When a response is submitted**, **After AI analysis** or **When a response becomes urgent**, and its **Only if** conditions and **If / else** steps can limit it to the responses that match.
2. **Survey events, from Settings.** In an endpoint's **Survey events** settings, **Surveys** set to **All surveys, including new ones** or **Only selected surveys** sends one event, such as **After AI analysis** or **When it becomes urgent**, from those surveys. It can be limited to some feedback types, urgencies and themes.
3. **From your code or an app.** [`POST /webhooks/subscribe`](https://docs.usertick.com/developers/api/reference/subscribe-webhook) subscribes a URL to one of the [response and AI events](https://docs.usertick.com/developers/webhooks/events.md), from one survey or every survey, or to [a workflow's Zapier step](https://docs.usertick.com/developers/webhooks/events.md#a-workflows-zapier-step), which receives the responses the workflow sends to it. Apps such as [Zapier](https://docs.usertick.com/integrations/zapier.md) subscribe the same way when a Zap is turned on.

The dashboard steps are in [Webhooks](https://docs.usertick.com/integrations/webhooks.md).

An endpoint created in Settings can also receive optional account notifications, such as a member joining or a plan change. See [Account notifications](https://docs.usertick.com/developers/webhooks/events.md#account-notifications).

## What a delivery contains

```http theme={null}
POST /hooks/usertick HTTP/1.1
Content-Type: application/json; charset=utf-8
webhook-id: 6f1d2c3b-8a90-4e12-b345-67c890d12e34:n1
webhook-timestamp: 1759226400
webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=
X-Usertick-Event: response.created
X-Usertick-Attempt: 1

{
  "id": "6f1d2c3b-8a90-4e12-b345-67c890d12e34:n1",
  "type": "response.created",
  "createdAt": "2026-09-30T10:00:00.123Z",
  "data": { "id": "9b1c2d3e-4f50-4a61-8b72-93a4b5c6d7e8", "survey": { "...": "..." }, "answers": [ "..." ], "ai": null }
}
```

Every survey event is an envelope of four keys:

| Key | Contents |
| - | - |
| `id` | The message id. It equals the `webhook-id` header and stays the same on every retry and resend, so duplicates can be dropped by it. |
| `type` | The event, such as `response.created` or `response.status_changed`. See [Events](https://docs.usertick.com/developers/webhooks/events.md). |
| `createdAt` | When the event happened |
| `data` | The response, as the [Response resource](https://docs.usertick.com/developers/api/response-object.md) the API returns. A `theme.spiking` delivery carries [the spike](https://docs.usertick.com/developers/webhooks/events.md#theme-spikes) instead. |

These four keys stay the same within v1. A full payload is on the [events page](https://docs.usertick.com/developers/webhooks/events.md#a-full-payload). Account notifications and test pings use their own bodies, described on the same page.

| Header | Contents |
| - | - |
| `webhook-id` | The message id, the same on every retry and resend |
| `webhook-timestamp` | When this attempt was sent, in Unix seconds |
| `webhook-signature` | `v1,` followed by the base64 HMAC-SHA256 signature. During a secret rotation it carries two signatures separated by a space. |
| `X-Usertick-Event` | The event, for example `response.created` |
| `X-Usertick-Attempt` | `1` for the first try, then `2`, `3` and so on |
| `X-Usertick-Test` | `1` on a test delivery |

To avoid timeouts, answer with any 2xx quickly and do the work afterward. Timeouts and retries are described in [Delivery and retries](https://docs.usertick.com/developers/webhooks/delivery.md).

## Who can manage webhooks

Anyone whose role has the **View surveys and results** permission and opens all surveys can see endpoints and their delivery logs. A role with **Only selected surveys** doesn't see them. Creating, changing, testing, resending and deleting require the **Manage integrations** permission.


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