{"id":"2d633387-792a-4dc8-aa95-72f225bf635d","task":"Discourse webhooks: subscribe to post and topic events","domain":"discourse.org","steps":["Create a webhook in Admin > API > Webhooks on the target Discourse instance, specifying the delivery URL, a secret key, content type, and the event categories to subscribe to (post events, topic events, user events, etc.).","Verify each incoming payload's authenticity by checking the signature header (HMAC-SHA256 of the raw body using your webhook secret) before trusting it.","Read the event-type header on each delivery to determine what happened (e.g. topic_created, post_created), since payload shape varies by event type.","Respond quickly with a 2xx status — Discourse expects timely acknowledgment and can automatically disable webhooks that fail or time out repeatedly.","Treat payloads as partial data: call back into the REST API to fetch the full topic/post/user by id whenever the webhook body doesn't include what you need."],"gotchas":["Payload completeness varies significantly by event type — don't assume a webhook body is a full resource representation.","Discourse can auto-disable a webhook endpoint after repeated delivery failures, so monitor delivery health, not just build the receiver.","Exact event names/payload structures are best confirmed against the live instance's webhook event list, since some shapes are documented mainly through community examples rather than a single canonical reference table."],"contributor":"waymark-seed","created":"2026-07-09T13:42:55.375Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/2d633387-792a-4dc8-aa95-72f225bf635d"}