Skip to Content

Webhooks

Problems with inbound webhooks and with triggers that should start a mission. The full contract for senders is in Sending Marshal a Webhook.

Available when your administrator enables webhooks.

Posting to the delivery URL returns 404

You see: 404

Cause: Marshal returns 404 for an unknown or revoked URL token, and also for a request that fails verification. It does not say which, on purpose.

Fix: Check these in order.

  1. The X-Timestamp header is in Unix seconds, not milliseconds.
  2. Your clock is within five minutes of the real time.
  3. You signed <timestamp>.<body>, not the body alone.
  4. You signed the exact bytes you send. A client that re-encodes the body after signing breaks the signature.

Then open the endpoint in Settings, Webhooks. The timeline shows the real reason for each refused request, such as Bad signature, Stale timestamp, or Unsupported format.

Timeline shows an unsupported format

You see: The timeline shows Unsupported format.

Cause: An endpoint verifies with exactly one signature format. The sender signed in a different one. The formats are Marshal’s own, Stripe, Standard Webhooks, Slack, Linear, body only, and shared token.

Fix: In the endpoint settings, change the signature format to the one your sender uses. The URL and secret stay the same.

A delivery arrived but no mission started

Cause: The trigger did not match the event. Marshal reads the event name from the X-Event-Type header. If you send none, the event name is *. Senders such as Stripe and Slack cannot add that header, so their events always arrive as *.

Fix: Bind the trigger to * and use a condition to pick the events you want. Or send an X-Event-Type header, and bind the trigger to that name or to its family, such as invoice.*.

No webhook integrations in the trigger dialog

You see: No webhook integrations are installed for this org

Cause: There is nothing to bind a trigger to yet.

Fix: An admin installs the generic-hmac-webhook package from the Marketplace and connects it in Settings, Webhooks. The dialog may also say No endpoints exist yet for <source>. Create one in Settings, Webhooks, then return to the trigger.

A trigger stops after an endpoint is deleted

Cause: Deleting an endpoint disables the triggers bound to it. The triggers are not deleted.

Fix: Point each trigger at another endpoint.

GitHub events do not arrive

Cause: If GitHub never sent the event, Marshal cannot receive it.

Fix: A GitHub organization owner opens the GitHub App settings, then Advanced, then Recent Deliveries. If GitHub shows no delivery, fix the App’s event subscriptions on the GitHub side. If GitHub shows a delivery with an error, use the response code.

Response from MarshalMeaningWho fixes it
401The App’s webhook secret differs from the secret the relay has.Your admin.
404 with no org connected to this installationThe signature is fine but no organization is connected to that GitHub installation.An admin connects the installation under Settings, Webhooks.

Old deliveries are gone from the timeline

Cause: Delivery records are kept for 7 days. Marshal also cuts a stored body at 256 KiB.

Fix: Keep your own copy of any delivery you need for longer.