Obvious/Help Center

Webhook Not Firing

Published February 27, 2026 · Last updated March 5, 2026 · 3 min read

Your webhook subscription is set up but tasks aren't running when events come in. Here's how to find the problem.

Webhook URL is incorrect

What you see: The external service reports delivery failures, or events never appear in Obvious.

What's happening: The URL configured in the provider doesn't match the one Obvious generated.

How to fix it:

  1. Ask the agent to list your webhook subscriptions — each includes its URL.
  2. Compare that URL character-for-character with what's in the provider's dashboard.
  3. If the URL changed after a secret rotation, copy the new one and update the provider.

Event types don't match

What you see: The provider confirms successful delivery, but no task runs.

What's happening: The event type the provider sends (e.g., updated) isn't in the subscription's or task trigger's events list.

How to fix it:

  1. Check which event types your subscription listens for.
  2. Verify the task's webhook trigger includes the same types.
  3. Add the missing type, or use ["*"] to match all events.

Payload format is invalid

What you see: The provider shows successful sends, but Obvious returns 400 or invalid_json.

What's happening: Obvious requires JSON with Content-Type: application/json. Form-encoded data, XML, or malformed JSON gets rejected.

How to fix it:

  1. Check the provider's webhook settings for a content type option. Select JSON.
  2. If the provider doesn't support JSON, use a middleware layer to convert the payload before forwarding to Obvious.

Signature verification fails

What you see: The provider reports 404 on every delivery.

What's happening: The signing secret or signature header name in Obvious doesn't match what the provider sends.

How to fix it:

  1. Confirm the signing secret in Obvious matches the provider's exactly — no extra whitespace.
  2. Verify the signature header name (e.g., x-hub-signature-256 for GitHub, x-pylon-signature for Pylon).
  3. If the secret was rotated on the provider side, update the subscription with the new webhookSecret.

Subscription is paused

What you see: Everything looks correct, but nothing fires.

What's happening: Paused subscriptions accept deliveries but don't dispatch events for task matching.

How to fix it:

  1. Check the subscription status.
  2. Update it to active to resume.

Still stuck?

Ask the agent to list your webhook subscriptions and share the provider's delivery logs — the HTTP status code Obvious returned narrows the cause fast.

Next steps

Was this helpful?