Understanding Notion webhook event data structure and implementation

I’m working on a side project that uses the Notion API. I want to set up webhooks to get notified when database entries are added or removed.

The main thing I’m confused about is what data actually gets sent in these webhook events. I looked at the official docs but the sample payloads don’t give me enough detail about what’s included.

Specifically for the page.created event, I need to know if it sends all the page data like the title and custom properties, or if it only sends basic info like the page ID and parent database ID.

Has anyone here actually worked with Notion webhooks before? I can’t test this myself right now because I would need to deploy an endpoint to receive the events and my project isn’t ready for that yet.

I’m hoping someone who has experience with these webhooks can tell me exactly what kind of data gets included when a new page is created in a database.

I implemented Notion webhooks last year and ran into this exact issue. The payload is intentionally bare-bones - you only get the page ID, parent database ID, event metadata, and timestamp. No actual content or property data.

Makes sense though. Some pages are huge and would make webhook payloads ridiculous to handle.

The tricky part isn’t the follow-up API call itself - it’s the timing. Sometimes the webhook fires before Notion’s backend finishes saving the page data. So when you immediately call the API for full details, you get incomplete info.

I fixed this by adding a 2-3 second delay before the follow-up request. Completely eliminated those edge cases.

Been using Notion webhooks for 6 months - SpinningGalaxy’s right about the limitations. The page.created payload is bare bones - just page ID, parent database ID, timestamp, and basic metadata. No actual content or property values, which was annoying at first.

My workaround: set up a queue system where the webhook triggers an API call to grab full page details using that page ID. Extra step, but it’s reliable.

Couple gotchas - if you’re creating pages rapidly, you’ll hit rate limits on those follow-up API calls. And webhook delivery can be slow, I’ve seen 30-second delays sometimes.