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

# Verify Webhook

> Verify your webhook

Webhook verification is optional, but highly recommended.

Upon verification success, the `verify` function will return the payload.

You can get the signature from the `X-Vartiq-Signature` header. If you provided your own signature header name, you can use that instead.

<CodeGroup>
  ```javascript JavaScript theme={null}
  const verifiedPayload = vartiq.verify(payload, signature, webhookSecret);
  ```

  ```go Go theme={null}
  verifiedPayload, err := client.Verify(payload, signature, webhookSecret)
  ```

  ```python Python theme={null}
  verified_payload = vartiq.verify(payload, signature, webhook_secret)
  ```
</CodeGroup>

## Manual Verification

You can also manually verify the webhook by computing the HMAC signature yourself.

<CodeGroup>
  ```javascript JavaScript theme={null}
  const signature = crypto.createHmac("sha256", webhookSecret).update(payload).digest("hex");
  ```

  ```go Go theme={null}
  signature := hmac.New(sha256.New, []byte(webhookSecret)).Sum(payload)
  ```

  ```python Python theme={null}
  signature = hmac.new(webhook_secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
  ```

  ```php PHP theme={null}
  $signature = hash_hmac("sha256", $payload, $webhookSecret);
  ```
</CodeGroup>
