Recurring event webhooks for full calendar sync

I’m building a system where users sync their calendars. On the initial sync, I fetch and store all events in my database. I’m running into issues with recurring events.

When a user creates a recurring event, I only receive a single webhook. From that webhook, I can use the master event ID to fetch all occurrences, which works fine.

The problem is with updates. If a user changes the time of a single occurrence, I can see its ID in the list of occurrences. But if they update the series “from this day forward” or “from this point to the end”, I still only receive a single webhook. At that point, I can’t tell which specific occurrences in my database need to be updated or deleted.

My questions are:

  • How can I determine which occurrences to update or delete in my database?

  • Is it possible to receive webhooks for individual recurring event updates?

  • I used to get more granular updates when using the Google Calendar API directly – is this behaviour expected?

Hello,

Nylas intentionally consolidates recurring event updates into a single webhook for the master event, even when multiple occurrences are modified. This is by design to provide consistent behavior across providers (Google, Microsoft Graph, EWS). The recommended approach is to query the API for the authoritative state after receiving a webhook. When you receive an event.updated webhook for a recurring event, treat it as a signal to re-sync.

Many thanks,
Samuel R.
Support Engineer, Nylas

Do you mean query the API with the master_id to get all the child events for that master id. How about if some events were deleted. When the webhook comes in and i fetch the events. It would only return the new one.

Would i have to manually dedupe to remove the ones not in the new list. That might be hard to do because of pagination.

Hello. Our Support team has reached out to you via email to continue this investigation. Please check your mailbox for our message.