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.
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.
--allshows 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.