resellerhq

Webhook payload example generator

Pick one of our documented events and get a sample payload, plus the signed headers a delivery of it would carry, ready to send to a local receiver.

One of our documented event types. Only number.message.received has a worked example in our guide.

Starts with "whsec_" — given one, the matching signed headers are shown too.

Result

Sample payload ready

This is the exact worked example our webhooks guide gives for "number.message.received".

Sample payload

{ "id": "evt_01JABCDEFG1234567890ABCD", "type": "number.message.received", "timestamp": "2026-10-07T11:04:31.454Z", "data": { "messageId": "msg_01JABCDEFG1234567890ABCD", "rentalId": "num_01JABCDEFG1234567890ABCD", "number": "15550100002", "sender": "WhatsApp", "body": "Your code is 428-113", "receivedAt": "2026-10-07T11:04:31.000Z" } }

Our webhooks guide's own worked example for this event.

Headers

webhook-id: evt_01JABCDEFG1234567890ABCD webhook-timestamp: 1791371071 webhook-signature: v1,knysxLjBsQB/xLG2nMUUhQtEY06u/S4Hdq94hfgGmcw=

Signed over this exact sample payload, so both can be sent together to a local receiver.

  • This makes no request of its own — it only shows what a delivery of this event, and its headers, would look like, for pasting into a local test.
  • This event's data shape is the guide's own worked example, not inferred.

What this is

This webhook payload example generator builds a sample payload for any of our documented webhook event types, plus the three signed headers a real delivery of it would carry, so a local receiver can be tested end to end without waiting for a real event to fire.

Every event this page lists comes straight from the table at `apps/web/content/docs/(guides)/webhooks.mdx:27-62` — the same 38 events our webhooks guide documents, with nothing added. Only one of them, `number.message.received`, has a full worked example in that guide (`webhooks.mdx:66-80`); every other event's sample "data" here is inferred from its own name alone, which the result says plainly rather than presenting as documented fact.

How to read the result

"Sample payload" is the whole envelope — id, type, timestamp and data — exactly as a real delivery is shaped. For the one event with a worked example, its "data" is that example verbatim (with full-length ids in place of the guide's own shortened ones); for every other event, "data" carries one plausible id field named from the event's own prefix, which the summary above calls out as inferred rather than something this page actually knows. "Headers" signs that exact sample payload the same way a real delivery is signed, so both can be sent together to a receiver under test.

Common mistakes

  • Treating an inferred "data" shape as the documented one — Only number.message.received has a worked example in our guide — every other event's sample "data" here is a guess built from its name, not the shape our API actually sends. Check the webhooks guide's own event table before writing code against a field this page invented.
  • Expecting the signed headers without a secret typed in — The headers are signed over the sample payload with whatever secret is in the "Signing secret" field — leave it blank or mistyped and only the payload itself is shown, with a note explaining why there are no headers to go with it.

Questions

Where does the list of events this page offers come from?

Every one of the 38 events is read from the table in our own webhooks guide (`apps/web/content/docs/(guides)/webhooks.mdx:27-62`) — an event added there and not reflected here fails this page's own drift test, the same guarantee `api-error-code-explainer` holds for documented error codes.

Why does number.message.received look different from every other event?

It is the one event our webhooks guide gives a full worked example for (`webhooks.mdx:66-80`), so its sample "data" here is that exact example, not a guess — every other event has no such example, so its "data" is inferred from its own name alone and marked as such.

Can I trust the field names this page invents for an event with no worked example?

No — treat them as a plausible guess, not documentation. This page infers one id field from the event's own name so a local receiver has something realistic to parse, but the real event may carry different or additional fields that only our own services know about.

Will a real endpoint actually accept the headers this page generates?

Yes, for the exact sample payload shown next to them — the headers are computed by the same signing arithmetic (`packages/events/src/signing.ts`) a real delivery uses, over the secret typed into the field above, so a receiver built to verify a real delivery can be tested against this pair without any special-casing.

Build on the same API this tool is part of: numbers, domains and mailboxes, one key.

Read the API

API example

Example request
curl -X POST https://163-123-236-68.sslip.io/api/tools/webhook-payload-example-generator \
  -H "Content-Type: application/json" \
  -d '{"event":"number.message.received"}'
Example response
{
  "tool": "webhook-payload-example-generator",
  "input": {
    "event": "number.message.received",
    "secret": "whsec_GBAa/MjfYOnqrI7OlnVtVh2XZeKLGILY"
  },
  "result": {
    "verdict": {
      "tone": "neutral",
      "headline": "Sample payload ready",
      "summary": "This is the exact worked example our webhooks guide gives for \"number.message.received\"."
    },
    "findings": [],
    "parts": [
      {
        "kind": "record",
        "title": "Sample payload",
        "value": "{\n  \"id\": \"evt_01JABCDEFG1234567890ABCD\",\n  \"type\": \"number.message.received\",\n  \"timestamp\": \"2026-10-07T11:04:31.454Z\",\n  \"data\": {\n    \"messageId\": \"msg_01JABCDEFG1234567890ABCD\",\n    \"rentalId\": \"num_01JABCDEFG1234567890ABCD\",\n    \"number\": \"15550100002\",\n    \"sender\": \"WhatsApp\",\n    \"body\": \"Your code is 428-113\",\n    \"receivedAt\": \"2026-10-07T11:04:31.000Z\"\n  }\n}",
        "note": "Our webhooks guide's own worked example for this event.",
        "copyLabel": "Copy payload"
      },
      {
        "kind": "record",
        "title": "Headers",
        "value": "webhook-id: evt_01JABCDEFG1234567890ABCD\nwebhook-timestamp: 1791371071\nwebhook-signature: v1,knysxLjBsQB/xLG2nMUUhQtEY06u/S4Hdq94hfgGmcw=",
        "note": "Signed over this exact sample payload, so both can be sent together to a local receiver.",
        "copyLabel": "Copy headers"
      }
    ],
    "limits": [
      "This makes no request of its own — it only shows what a delivery of this event, and its headers, would look like, for pasting into a local test.",
      "This event's data shape is the guide's own worked example, not inferred."
    ]
  }
}

Related tools

For developers

Standard Webhooks payload signer

Type an id, a timestamp and a raw body, give a whsec_ secret, and get the exact webhook-id, webhook-timestamp and webhook-signature headers for it.

For developers

Webhook signature verifier

Paste the three webhook headers, the raw body and the secret, and see whether the recomputed signature matches — and whether the timestamp is still inside the tolerance window.