I’ve setup a simple Notion Database and a simple Make Scenario that is triggered using “Watch Database Items”. I would expect that the scenario is triggered for ANY change on the Notion Database. However I’ve noticed that when update a database item, within the same minute, the Watch Database item - module is only triggered for the first change.
Example:
(1) - update item X at 10:05:23 → Module is triggered
(2) - update item X at 10:07:23 → Module is triggered
(3) - update item X at 10:07:43 → Module is NOT triggered
In short: update (3) is not detected by Make. This causes serious problem at my customer since this is “business critical”.
This could be caused by Notion API (which does not update Last Edited Date, within the same minute). My main question: how to resolve or workaround?
Many thanks
Dirk
Welcome to the Make community!
I recommend setting the Limit of returned results to a higher limit instead of 1
2 Likes
Thx for the tip. Unfortunately this doesn’t resolve the problem.
I can reproduce with just 1 item that is updated multiple times within one minute.
I have noticed this same issue. As you point out, the limitation of the Notion API is the culprit here. Not sure how else to tackle it
2 Likes
Hi Tim,
Thanks for your reaction!
I’ve thought and experimented a lot to find a solution last weeks. My goal is to synch an activities database in Notion to Google Calendar’s from different team members. Since all known existing “integrations” (Notion Cafe, Notion Automations, Cron, NotionToCalendar) seemed not to function well for all use cases (created, update, delete), it became clear I had to develop something myself.
Key is to detect all new or updated Activity pages in Notion, in order to synch them to one or more specfic Google Calendar(s). Since the Notion Watch Module seems unreliable to catch all changes, I’ve considered following alternatives:
Alternative 1 - Daily full database synch (via Notion Search module)
Pro: this works correctly and seems very robust.
Con: - it’s “heavy” - it’s very costly since this requires a lot of Make operations (“ops”) each day. Moreover the scenario gets very complex as the number of team members grows.
Alternative 2 - Incremental synch (via Notion Watch module)
Concept: find eg. each hour all changes (creates, updates) of last 2 hours and synch them to appropriate Calendars
Pro: much lighter
Con: I was not able to get concept working correctly. Since the Make trigger frequency (eg. each 60 min.) is not very accurate, we should foresee an overlap (last 2 hour changes) in order to not miss any updates. However due to this required overlap, the scenario always handles the same updated activities. Which makes no sense evidently
In short, we’ve opted for the costly alternative 1 - full synch. I really hope (and expect) that Notion will soon provide a solid Cron synch.
1 Like
As explained above the full synch solution works, but is very costly.
I’m still looking for a better way. In the meantie I’ve come around some articles stating that 2y ago Notion decided to round last edit times to the nearest minute. See eg. Notion API - Precision of last_edited_time and created_time - Stack Overflow. See also Reddit - Dive into anything
But… I believe Notion Automations might resolve the original problem:
- create a check-box property “changed”
- create an automation: when one of the relevant event properties is edited then set the Changed property
- in Make search for records with Changed property set, updated corresponding events in Google Calender + uncheck Changed property.
Will try this one soon.
Hi @Dirk_Diddens ,
I have a suggestion to tweak your full sync to convert it into an incremental sync:
Store the exact date and time the scenario ran within Make, and then on the next run, search only for changes after that datetime. You can store this datetime in a Data Store.
This would solve the problem of overlapping requests in your incremental sync.
3 Likes
I’ve got several builds syncing Notion databases to Google Calendar but I’m never trying to sync both ways. I’m interested to hear how your Database Automations work around goes. Has that resolved the issue for you?