Discourse webhook payload example (post_created)

Discourse · event: post (post_created) · content type: application/json

This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).

See it live, not frozen

One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:

Then paste the bin's URL into Discourse's webhook settings to capture a real delivery. No signup.

Headers

content-type: application/json
x-discourse-instance: https://forum.acme.dev
x-discourse-event-id: 241
x-discourse-event-type: post
x-discourse-event: post_created
x-discourse-event-signature: sha256=441dfc5a4c2adc109ff70f36ce0883cd1773f32e8dad178ebde8a4933344cdc7

Body

{
  "post": {
    "id": 4182,
    "name": "Ada Deveraux",
    "username": "ada",
    "avatar_template": "/user_avatar/forum.acme.dev/ada/{size}/42_2.png",
    "created_at": "2026-08-30T09:41:27.123Z",
    "cooked": "<p>Webhook deliveries stopped after our TLS cert renewal — anyone else?</p>",
    "post_number": 1,
    "post_type": 1,
    "updated_at": "2026-08-30T09:41:27.123Z",
    "reply_count": 0,
    "reply_to_post_number": null,
    "quote_count": 0,
    "incoming_link_count": 0,
    "reads": 0,
    "score": 0,
    "topic_id": 1287,
    "topic_slug": "webhook-deliveries-stopped-after-tls-cert-renewal",
    "topic_title": "Webhook deliveries stopped after TLS cert renewal",
    "category_id": 6,
    "category_slug": "support",
    "display_username": "Ada Deveraux",
    "primary_group_name": null,
    "version": 1,
    "user_title": null,
    "raw": "Webhook deliveries stopped after our TLS cert renewal — anyone else?",
    "moderator": false,
    "admin": false,
    "staff": false,
    "user_id": 87,
    "hidden": false,
    "trust_level": 2,
    "deleted_at": null,
    "user_deleted": false,
    "edit_reason": null,
    "wiki": false,
    "topic_posts_count": 1,
    "topic_filtered_posts_count": 1,
    "topic_archetype": "regular"
  }
}

Things that bite people

Send it yourself

Reproduce this delivery against any endpoint (your handler, a bin, staging):

$ curl -X POST https://your-endpoint.example/hook \
  -H 'content-type: application/json' \
  -H 'x-discourse-instance: https://forum.acme.dev' \
  -H 'x-discourse-event-id: 241' \
  -H 'x-discourse-event-type: post' \
  -H 'x-discourse-event: post_created' \
  -H 'x-discourse-event-signature: sha256=441dfc5a4c2adc109ff70f36ce0883cd1773f32e8dad178ebde8a4933344cdc7' \
 -d '{
  "post": {
    "id": 4182,
    "name": "Ada Deveraux",
    "username": "ada",
    "avatar_template": "/user_avatar/forum.acme.dev/ada/{size}/42_2.png",
    "created_at": "2026-08-30T09:41:27.123Z",
    "cooked": "<p>Webhook deliveries stopped after our TLS cert renewal — anyone else?</p>",
    "post_number": 1,
    "post_type": 1,
    "updated_at": "2026-08-30T09:41:27.123Z",
    "reply_count": 0,
    "reply_to_post_number": null,
    "quote_count": 0,
    "incoming_link_count": 0,
    "reads": 0,
    "score": 0,
    "topic_id": 1287,
    "topic_slug": "webhook-deliveries-stopped-after-tls-cert-renewal",
    "topic_title": "Webhook deliveries stopped after TLS cert renewal",
    "category_id": 6,
    "category_slug": "support",
    "display_username": "Ada Deveraux",
    "primary_group_name": null,
    "version": 1,
    "user_title": null,
    "raw": "Webhook deliveries stopped after our TLS cert renewal — anyone else?",
    "moderator": false,
    "admin": false,
    "staff": false,
    "user_id": 87,
    "hidden": false,
    "trust_level": 2,
    "deleted_at": null,
    "user_deleted": false,
    "edit_reason": null,
    "wiki": false,
    "topic_posts_count": 1,
    "topic_filtered_posts_count": 1,
    "topic_archetype": "regular"
  }
}'

← All payload examples · Signature debugger · Docs