Gcal Events on the Zeno Schedule with Make.com

A while back I posted this tutorial for adding beemergencies to Google Calendar using Make.com:

This approach worked well, but had a few limitations:

  • Only beemergencies within the next day were added.
  • Beemergencies were only added once per day, so new beemergencies would have to wait up to 24 hours to be added to your calendar.
  • Once a beemergency was added, it would not be removed once you dispatched it, or ever.

These limitations aren’t all bad–they result in having a kind of Beeminder history in your calendar, and also limit the number of Make.com operations that the scenario uses. However, if you’re going to rely on it to know what you still need to do and when, the solution isn’t ideal.

I’ve now figured out how to modify this previous scenario to remove these limitations. So let’s walk through it:

This new version relies on a custom webhook to be hit in order to fire. To set this up, you’ll need to create a custom webhook for Beeminder to hit on the zeno schedule. When you first add the new webhook, it will start listening to receive a request in order to determine the structure of the data it will be receiving:

Copy the provided address and then paste it into the webhook fields on your reminders page for all the goals you wish to sync with your calendar. I’ve set the webhook for all of my goals, and also set it as the default webhook for new goals I may create in the future.

Now we need to send the sample request. To do this, go to the settings tab for one of the goals you added the webhook to, and click the button “Update & Send a Test.”

Once you’ve done this, the webhook config back in Make.com should indicate that it’s successfully determined the shape of your incoming data:

The next module in the scenario searches your calendar of choice for any existing events for the specific goal that we’re processing. It’s important that we do this early in the scenario so that this won’t find any new events we’re about to create and don’t want to delete.

For the query, I’ve chosen to use the fully-differentiated username and goal name, surrounded by square brackets, to be extra sure that this doesn’t falsely match events for different goals. In addition, I’m using a calendar I created specifically for these events called Beemergencies.

At this point the scenario branches. In my example the upper branch handles processing the new reminder, and the lower branch deletes any stale events for that goal. This way we can do filtering on both branches without worrying about disturbing the other branch.

The lower branch will delete any pre-existing events associated with the current goal. To avoid this branch resulting in an error if no previous events exist, we filter the connection to exit out prematurely if our calendar query returned no results.

The scenario then proceeds to delete all matching events.

On the upper branch we create a new event for the current goal. Again, notice the verbose event name set to match what the search block is querying for.

As a bonus, you can add any other channels to the end of this branch where you wish to send zeno reminders. For example, I’ve configured my scenario to also notify me via Slack if the goal’s slug starts with tr-:

Once you’ve finished creating the scenario, you’ll need to exit out of edit mode and flip the switch to “On” at the top-right of the page to enable the scenario.

And that’s it! Make.com will now keep your Google calendar synced with your current beemergencies, updated on the zeno schedule.


You can make the scenario a bit more efficient by updating the existing event for each goal instead of deleting and re-creating it: