Test inbound webhooks with sample events: Send a test `ping` to check endpoint reachability; Use expected outcomes to validate receiver decisions and state changes; Inspect sender delivery records and downstream effects for accuracy
Image: Workflow Automation Guide

Observability

Part of APIs and webhooks in automated workflows

Testing an inbound webhook with sample events

Plan sample webhook events, inspect sender and receiver records, and check downstream outcomes separately from receipt.

Test an inbound webhook by sending a known event, checking the sender's delivery record, and comparing the receiver's decision and downstream result with what you expected. A 2xx response alone may confirm receipt while processing continues later.

Write the expected outcomes

Use a test source account or another safe environment, with an endpoint configured for that sender. Record the subscribed event, expected record identifier and intended destination effect. Keep test activity away from live customer records and communications.

For an illustrative order-change webhook, write the expected result before sending each sample:

Sample eventExpected receiver decisionExpected destination state
Relevant order changeAccept for processingOne intended action after confirmation
Irrelevant changeAcknowledge as the sender contract permits and skipNo new action
Missing required identifierReject or hold under the agreed contractNo guessed record
Same event delivered againRecognise the repeatNo extra business effect
Valid event with later processing failureKeep the failure visible for recoveryNo false completion

This is a test plan, not a report of performed tests. The sender's response rules determine when an invalid delivery should receive an error and when it should be acknowledged for internal review.

Send a sender-generated event

Prefer a provider test facility or a disposable action that produces the subscribed event. GitHub documents triggering an event and inspecting its delivery.

For repository or organisation webhooks, its REST API can trigger a ping. A repository webhook subscribed to push can also receive a test push event through the documented API.

A ping checks that delivery reaches the endpoint, but it does not exercise an order-change handler. Follow it with a representative event for the workflow being tested.

A handcrafted request can help explore parsing, but label it as a local fixture. It does not establish that the real sender produced the same headers, signature or payload. GitHub's signature is derived from the configured secret and payload contents.

Use the chosen sender's verification method when checking an authenticated delivery.

Inspect delivery, decision and effect

Check the sender's record for the event type, sent request, time and response. GitHub's recent delivery view exposes request headers and payload, send time and the server response for deliveries from the past three days, subject to access permissions.

Avoid copying sensitive payloads into a separate test log when a safe identifier and result will suffice.

Then inspect the receiver's signature result, recognised event, identifier, routing decision and later processing result. Finally, inspect the destination record or state.

A sender delivery record establishes an attempted request and its response; it does not establish that the downstream action succeeded.

Where the provider supports redelivery, repeat a delivery and compare the result with the first attempt. GitHub allows authorised redelivery of deliveries from the past three days. Another sender may identify repeats differently.

Also check that a genuinely new event can still produce a new action.

For each sample, record the expected decision, observed receiver response, observed downstream result and any difference. Investigate a missing sender delivery separately from a receiver rejection or later processing failure. Re-run a failed case after a change and record the new observation.

Webhook Testing Metrics (GitHub)

Delivery Visibility Window
Past 3 days
Redelivery Support
Yes, authorised users only
Payload Access in Logs
Available with permissions
Signature Validation Required
Yes, using configured secret

More from Observability