Google Calendar Trigger: upcoming event?

I’m using the Google Calendar Trigger to spot calls with Google Meet links to connect them to a Vexa.ai bot (to get a transcript of the meeting). The Calendar trigger is supposed to read my calendar and trigger on the next available meeting with a google meet link.
It works once, if I give the call a code or something else to filter on, but after that call, moving in time, it only finds the first call again. It doesn’t ‘ignore’ history.
So I can only get it to work if I delete each calendar event after it happened.

Not an elegant solution. :frowning:

The Google Calendar Trigger node doesn’t seem to have any other settings, so I cannot tell it to only look ‘ahead’.

Do I miss something? Anyone has an idea?

In the n8n catalogue of workflows are 3 workflows for Vexa that do the same thing: using the Google Calendar Trigger node…. so that would indicate that it should work… but I can’t seem to find out how… Anyone a good idea?

Hi @Nasnl

Hope you’re doing well.

You’re not missing a setting :slightly_smiling_face:

The Google Calendar Trigger does not keep state or track which events were already processed. It simply polls the calendar and returns events that still exist and match the filter, even if they already happened. Because of that, there’s currently no way to tell the trigger to “only look ahead” or automatically ignore past events. If an event remains in the calendar, it can be returned again on later executions.

The recommended approach is to store processed event IDs externally and skip them on subsequent executions.

possibilities

Solution 1 – Store processed events (recommended)
Save the event.id externally (Data Store, database, etc.).
Before processing, check if the ID already exists.
If it exists, ignore the event.
If it does not exist, process it and store the ID.

Solution 2 – Mark the event in Google Calendar
After processing, update the event (description, color, or attendee).
Use the trigger search query to exclude marked events.
Be aware that editing the event may cause it to trigger again.

Solution 3 – Filter by date
Add an IF node after the trigger.
Compare the event start time with the current time.
This helps, but does not fully prevent reprocessing.

1 Like

Hi @tamy.santos ,

First of all; thanks for your fast response and for the confirmation. It always helps a lot to know you can stop looking for something that isn’t there. It makes me wonder why people put those workflows in the catalogue, but well, that’s another topic….

Your suggested solutions help a lot. What I’ll try tomorrow (it’s late now) is to edit the event afterwards, like your solution 2, so it can’t be found anymore by the filter. That’s a really smart way. I’ll have to figure out how to do that, but it’s a viable way forward. Great, thanks for the inspiration as well!

1 Like

The way I solved it in the end is by using 3 Google Calendar nodes:

  • The first one as a trigger (as described above) that responds to events marked with [[WB]] (‘with bot’, but you can choose any tag that would work for you)
  • The 2nd node right after that one, updating the calendar event title tag from [[WB]] to [[LOCKED]], so the event will not be chosen by the trigger the next run
  • The 3rd node at the end, updating the event title tag from [[LOCKED]] to [[DONE]], allowing to establish if the whole workflow actually completed for that event.

This works nicely. I’m not sure how the current workflows in the n8n workflow category were supposed to work, but I think this is the only way to make it really work with Vexa.ai (or any other transcription service, for that matter).

1 Like

great news! :hand_with_index_finger_and_thumb_crossed: