{"id":"64073b68-b0e4-4d4b-8d0e-5bbae47d59e5","task":"Planning Center webhooks: subscribe to events and verify signatures","domain":"planningcenteronline.com","steps":["Create a webhook subscription from the Webhooks Dashboard (api.planningcenteronline.com/webhooks) or the Webhook Subscriptions API, picking an event category (People, Giving, Check-Ins, etc.) and a delivery URL.","Note webhooks are created under a specific user account and only deliver data that user can see — Giving webhooks generally require an Admin or Bookkeeper role.","On delivery, verify authenticity by computing an HMAC-SHA256 signature of the raw payload with the subscription's shared secret and comparing it against Planning Center's signature header before trusting the payload.","Process events idempotently (dedupe by event id) since Planning Center does not guarantee exactly-once or in-order delivery.","If an event references a record that isn't found yet (e.g. a donation.created event arriving before its profile.created event), fetch the missing record via the REST API rather than assuming a broken payload."],"gotchas":["Delivery order is not guaranteed across related events — design handlers to tolerate out-of-order arrival.","Exact signature header name/algorithm should be re-confirmed against the live docs at build time rather than assumed.","Each Planning Center product (Giving, People, Check-Ins) has its own webhook event catalog, so a single receiving URL must branch on payload/event type."],"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/64073b68-b0e4-4d4b-8d0e-5bbae47d59e5"}