Compare failed and successful webhooks

Guides / Analysis

When one invoice.paid fails and the next hundred succeed, the cause is usually in the data: a missing field, a different status, a number sent as a string. Spotting it by reading two large JSON payloads is slow.

Comparing a failed event with a successful oneField by field: the email is missing in the failed event, the subscription status differs, and the amount changed type.FieldFailed eventSuccessful eventcustomer.emailmissing[email protected]subscription.statuspast_dueactiveamount"1499" (string)1499 (integer)
Comparing a failed event with a successful one
hwcli diff evt_93df18ab evt_19ac44e1

Body
  customer.email         missing โ†’ "[email protected]"
  subscription.status    "past_due" โ†’ "active"
  amount                 type changed: string โ†’ integer
Headers
  user-agent             Stripe/1.0 (+https://stripe.com/docs/webhooks) (same)
3 differences ยท 4 volatile fields hidden (--all to show)

Webhook-aware

  • The most likely causes come first: missing fields, type changes, then changed values.
  • Fields that differ on every event, like IDs, timestamps, signatures and request IDs, are hidden by default. --all shows them.
  • --ignore data.object.metadata.* ignores more paths. Admins can set workspace-wide ignored fields.
  • Credential values are never shown in the diff, only whether they changed.

In the dashboard

A failed event's Diff tab finds the most similar successful event of the same type on the same endpoint and compares the two. You can also pick any two events from the request list.

Create an endpoint and capture your first webhook. No signup needed.

Start Free