---
title: "Webhooks"
description: "Inbound webhooks let another system submit a form on an employee's behalf. The Webhooks view lists every webhook with its endpoint, secret state and log."
sidebar:
  label: Overview
  order: 0
area: settings
feature: webhooks
appPath: /settings/general/webhooks
lastVerified: 2026-10-22
version: "2026-10-16"
audience: admin
related:
  - settings/webhooks/create-a-webhook-secret
  - flows/forms
  - notices
intercom:
  - id: "16858360"
    title: Create a Webhook (Pyn 2)
    url: https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2
    note: draws on
---

An inbound webhook is an address another system posts JSON to. Each webhook belongs to a form: a payload that arrives becomes a submission of that form for the employee the payload names, and that submission can trigger an automation. Webhooks are created on the form, in its **Webhook** drawer; Settings lists them all in one place.

![Settings > General > Webhooks lists every inbound webhook created on a form.](https://support.pynhq.com/media/settings/webhooks/settings-webhooks-list.png)

## How a webhook works

- The endpoint is `POST /api/webhook/<webhook id>` with the header `Authorization: Bearer <secret>` and a JSON body. The panel shows the **URL** and **Header** to send: "Post a JSON body here, with the secret as a bearer token."
- The body names the employee with `subject_id` and the answers under `fields`. The form's **Subject** setting says which source system that id comes from, for example a BambooHR employee id.
- Every call is answered `202` as soon as it is accepted; the **History** tab is the record of what became of each payload. Entries carry a code such as `submitted`, `unknown-subject`, `invalid-fields` or `already-submitted`.
- A payload Pyn could not take raises a notice in [Notices](https://support.pynhq.com/notices/) keyed by its code, so a caller repeating one mistake updates a single notice rather than raising many. Admins can also be emailed; see [Set notification emails](https://support.pynhq.com/settings/notifications/).
- A webhook accepts nothing until it has a secret, and an archived webhook stops accepting payloads.

## What you can do here

- [Create or replace a webhook secret](https://support.pynhq.com/settings/webhooks/create-a-webhook-secret/)
- Rename a webhook from its panel
- Read the **History** of payloads and export the whole log as CSV from the form's Webhook drawer
- Archive a webhook from its **...** menu

## Where it is in the app

Open `/settings/general/webhooks` in Pyn, or open **Settings** in the primary navigation and select **Webhooks** under **General**. To create a webhook, open the form in [Forms](https://support.pynhq.com/flows/forms/), select **Settings** in the rail and then **Add Webhook**.

## Related

- [Create or replace a webhook secret](https://support.pynhq.com/settings/webhooks/create-a-webhook-secret/) before the first payload.
- [Forms](https://support.pynhq.com/flows/forms/) to create the webhook and choose its subject.
- [Notices](https://support.pynhq.com/notices/) for payloads Pyn could not take.

## Related Intercom articles

- [Create a Webhook (Pyn 2)](https://intercom.help/pyn/en/articles/16858360-create-a-webhook-pyn-2) — draws on
