screen size not supported

Webhook payload JSON example

Last updated 2026-05-20

When to use this

Use this for a webhook envelope you would receive from your own platform — event type, id, created timestamp, the payload object, and signature header context for verification.

Example JSON

A canonical webhook envelope, similar to what Stripe and GitHub use.
{
  "id": "evt_2N0a8c4Q8XzCQ9Wb1aB2c3D4",
  "type": "order.created",
  "apiVersion": "2026-05-01",
  "created": 1737984130,
  "livemode": false,
  "data": {
    "object": {
      "id": "order_01HQ9YV1XBC8WJ5KZ7TFX1H2BR",
      "status": "created",
      "total": 4499,
      "currency": "usd",
      "customer": {
        "id": 1,
        "email": "emily.johnson@x.example"
      },
      "items": [
        {
          "productId": 1,
          "quantity": 1,
          "price": 4499
        }
      ]
    }
  },
  "request": {
    "idempotencyKey": "0a23b1cd-e5f6-4a7b-9c8d-2e1f3a4b5c6d"
  }
}

Request examples

app.post('/webhooks/jsonexamples', express.json(), (req, res) => {
  const evt = req.body;
  if (evt.type === 'order.created') {
    saveOrder(evt.data.object);
  }
  res.status(204).end();
});

Common variations

order.refunded event
{
  "id": "evt_2N0a8c4Q8YyDR0Yc2bC3d4E5",
  "type": "order.refunded",
  "created": 1737984530,
  "data": {
    "object": {
      "id": "order_01HQ9YV1XBC8WJ5KZ7TFX1H2BR",
      "status": "refunded",
      "refundedAmount": 4499
    }
  }
}
Batch (multiple events in one delivery)
{
  "events": [
    {
      "id": "evt_1",
      "type": "order.created"
    },
    {
      "id": "evt_2",
      "type": "order.paid"
    }
  ],
  "deliveryId": "wh_del_01HQ9ZAJW3Y8KD2X5RTFV2H3CS"
}

Convert this JSON

Generated starting points for TypeScript, JSON Schema, and Zod. Refine before shipping to production.

export interface WebhookPayload {
  "id": string;
  "type": string;
  "apiVersion": string;
  "created": number;
  "livemode": boolean;
  "data": {
    "object": {
      "id": string;
      "status": string;
      "total": number;
      "currency": string;
      "customer": {
        "id": number;
        "email": string;
      };
      "items": {
        "productId": number;
        "quantity": number;
        "price": number;
      }[];
    };
  };
  "request": {
    "idempotencyKey": string;
  };
}

Note. Webhook receivers should also verify the X-Signature header. JsonExamples does not send live webhooks; this page is a copy/download reference shape only.