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

# Webhook not firing

> A checklist for webhook requests that don't start runs, with the response codes to look for.

When a webhook request doesn't start a run, the response code tells you most of the story. Work through this checklist.

<Steps>
  <Step title="Check the Logs tab first">
    Open **Logs** (`L`) and filter by trigger source **Webhook**. If a run row exists, the request arrived; the problem is in the run itself (click the row to replay it and inspect the payload). If there's no row, the request never got through, so check the response your caller received.
  </Step>

  <Step title="Is the trigger node disabled?">
    A disabled Webhook node still answers `200` but with the message "Webhook received but trigger is disabled", and no run starts. Re-enable the node.
  </Step>

  <Step title="Is the URL right?">
    A `404` ("Webhook not found") means the URL doesn't match any live webhook. Copy the current URL from the node's config panel; URLs are unique per node, so a node from a deleted workflow or an old copy of the URL won't work. A `410` ("Webhook is disabled") means the URL exists but its registration is no longer active; re-copy the URL from the node.
  </Step>

  <Step title="Is the method right?">
    The node accepts only its configured **HTTP Method** (POST by default). Anything else returns `405` with a message like "Webhook only accepts POST".
  </Step>

  <Step title="Do auth and secret match?">
    Any mismatch returns `401`. If a **Secret** is set, requests with a body must include a valid HMAC-SHA256 signature in `X-Hub-Signature-256` or `X-Webhook-Signature`; a missing or wrong signature is rejected. If **Authentication** is set, the Basic credentials, header value, or JWT must match exactly what's configured on the node. See [Webhooks](/triggers/webhooks) for how each scheme works.
  </Step>
</Steps>

## Response codes at a glance

| Code  | Meaning                                                                                               |
| ----- | ----------------------------------------------------------------------------------------------------- |
| `200` | Accepted. "Webhook received and workflow triggered", or a note that the trigger is disabled (no run). |
| `401` | Signature or authentication failed.                                                                   |
| `404` | No webhook at that URL.                                                                               |
| `405` | HTTP method doesn't match the node's setting.                                                         |
| `409` | Last-node response mode only: the run paused (for example at an approval) before it could respond.    |
| `410` | The webhook registration is disabled.                                                                 |
| `500` | Last-node response mode only: the run failed; the body carries the error.                             |

## A 200 doesn't mean the run succeeded

With **Respond** set to **Immediately** (the default), the caller gets the `200` acknowledgment before the workflow runs, so a failing workflow still returns `200`. Check Logs for the run's real outcome. If the caller needs to know the result, switch the node to respond when the last node finishes.
