Google Calendar - custom 'Reminders' integration

My workflow for adding events is okay but I cannot seem to add custom ‘reminders’.

This is an example of my prompt:-

“Personal, Test Event, today at 2pm for 2 hours, with a reminder 10 minutes before the event.”

I have added the option ‘Defined automatically by the model’ in the ‘Use Default Reminders’ box.

This is my AI Agent’s reply - where it appears to understand the request:-

“Your personal event “Test Event” has been created for today at 2pm, lasting 2 hours. You will receive a reminder 10 minutes before the event. A confirmation email has also been sent to you.”

What am I missing?

This is my AI Agent’s System Message:-

“You create events in Google Calendar for me. Use the “Date/Time” tool to get the current date/time. If the input message text starts with the word “Personal” then use the “Personal” tool to create a Google Calendar event and send an email confirmation using the “Gmail - Personal” tool, but if the message starts with the word “Business” then use the “Business” tool to create a Google Calendar event and send an email confirmation using the “Gmail - Business” tool.”

I notice from the official Google Documentation ( Reminders & notifications  |  Google Calendar  |  Google for Developers ) that if you want to add a custom event reminder then you need this syntax …

"reminders": {
  "useDefault": false,
  # Overrides can be set if and only if useDefault is false.
  "overrides": [
      {
        "method": "reminderMethod",
        "minutes": "reminderMinutes"
      },
      # ...
  ]
}

… has anyone successfully used this in an n8n workflow please?

Hey @Paul_Littlefield hope all is good. Welcome to the community.

I believe custom reminders are only possible with an HTTP request to the Calendars API endpoint. “Defined automatically by the model” will only decide whether to add or not the default reminder, but if you want to specify your own reminder schedule - this will have to be through API.

Thanks for the welcome and quick reply :slight_smile:

Interesting.

The JSON sent from the n8n AI Agent (in my case with ChatGPT 4.1 Mini) to Google is the exact same as their example but only missing the “overrides” part.

Surely it’s not too much more work to get the extra parameters …

… or am I missing the point?

Have I misread or misunderstood their Google documentation (listed in my OP) ?!

I have possibly got a little further with this.

I have now edited my prompt and added a code example for the AI Agent.

My prompt now read like this …

You create events in Google Calendar for me.

Use the "Date/Time" tool to get the current date/time.

If the input message text starts with the word "Personal" then use the "Personal" tool to create a Google Calendar event and send an email confirmation using the "Gmail - Personal" tool, but if the message starts with the word "Business" then use the "Business" tool to create a Google Calendar event and send an email confirmation using the "Gmail - Business" tool.

Any mention of "Reminder" or "Reminders" will be used to override the default Reminder by using this code example:-

"reminders": {
  "useDefault": false,
  # Overrides can be set if and only if useDefault is false.
  "overrides": [
      {
        "method": "reminderMethod",
        "minutes": "reminderMinutes"
      },
      # ...
  ]
}

... to set the actual reminder in either the "Personal" or "Business" calendar.

… and I believe it understood it to produce this input for Google Calendar - …

[
  {
    "Start": "2025-08-11T08:00:00",
    "End": "2025-08-11T10:00:00",
    "Summary": "Test Event",
    "Reminders": "{\"useDefault\":false,\"overrides\":[{\"method\":\"popup\",\"minutes\":30}]}"
  }
]

which alas failed.

BUT, we are getting closer I believe :slight_smile:

If anyone can chime in and make suggestions to get this working, I am confident it would be useful for anyone.

I look forward to your replies!

Paully

You can substitute this with

Current date and time is {{ $now }}.

As for adding custom reminders, I don’t think you will be able to pull this off with the default google calendar tool node. I am not encouraging you stop trying though, but having an http request tool node with an API call could get you the result you want quicker for sure.

Thanks for the date/time tip.

interesting … can you point me in the right direction for that with an example please?

Sure thing. Here is an example of an http request node, which creates an event with custom reminders:

In your case - you would need to instruct an AI Agent to compile a JSON with required fields, then pass this to the HTTP Request tool node.

Thanks for the tip.

I’m getting there (this is exciting!)

I have made a new workflow “Calendar Agent version 2” with a Chat Message and Telegram Trigger that accepts instructions and outputs the exact JSON I needed for the custom Reminder.

Good.

However, when I tried adding the ‘HTTP Request’ node with the credentials etc. it errors, but I think I know why …

… I now need to plumb in some of my version 1 workflow that creates the event in the correct calendar, either “Business” or “Personal”.

Do you think I need take some of the (working) output from version 1 workflow (with the official Google Calendar node) to build the complete JSON data needed for the ‘HTTP Request’ ?

e.g.

"organizer": {
  "email": "[email protected]",
  "displayName": "Personal",
  "self": true
}

Nearly there!

Paully

Sorry, I am not sure what you are asking. To create the even in the correct calendar you change the calendar from primary to whatever other calendar you need to populate in the URL of the HTTP Request.

Ah, I used your example workflow URL verbatim …

https://www.googleapis.com/calendar/v3/calendars/primary/events

… which I now see is the API URL for the ‘Primary’ calendar :slight_smile:

So, I guess if I change that to my ‘Personal’ Calendar ID …

[email protected]

in the ‘HTTP Request’ then it will work?

Let’s see …

Personal, Test Event, 9pm for 1 hour with a reminder 30 mins before.

Dammit, another error …

“Bad request - please check your parameters
Missing end time.”

The JSON looks like this:-

[{
  "summary": "Test Event",
  "start": {
    "dateTime": "2025-08-12T21:00:00+01:00",
    "timeZone": "Europe/London"
  },
  "end": {
    "dateTime": "2025-08-12T22:00:00+01:00",
    "timeZone": "Europe/London"
  },
  "reminders": {
    "useDefault": false,
    "overrides": [
      {
        "method": "popup",
        "minutes": 30
      }
    ]
  }
}]

… which shows an end dateTime.

Ugh, so close. I’m out of my depth now. Can anyone help?

Remove square brackets in the beginning and at the end.

Yes!

I added this to the AI Agent’s prompt …

Do not wrap the array in square brackets [].

… and sent this …

Personal, Test Event, 9pm for 1 hour with a reminder 30 mins before.

… and we have an (almost) winning result with the custom ‘Reminder’ :folded_hands:

So, now … I just need to get the AI Agent to route use the correct HTTP Request node.

This is my Agent prompt …

If the input message text starts with the word "Personal" then send the output to "Add to Personal", but if the message starts with the word "Business" then send the output to "Add to Business".

which are these nodes …

I know this is outside of the OP but any tips to get the AI Agent to route correctly?

Thanks so much,

Paul

Don’t connect HTTP Requests to the output, connect them to tools instead. In fact you will only need one, the calendar to use could be chosen by the agent. So add one http request node to the tools, call it “Create Event”, instruct the agent to use the tool Create Event and pass whether it is personal or other calendar as well as the json to use.

1 Like

OK, I have tried my best but it is still coming up with an error and that is because the new “Create” tool as you suggested is not passing Google all the JSON.

So …

It’s got the URL parameter from my new Agent message …

Use the "Create" tool to add an event in Google Calendar.

If the message starts with the word "Personal" then remove "Personal, " from the output and set the URL parameter for the "Create" HTTP Request tool as 'https://www.googleapis.com/calendar/v3/calendars/[email protected]/events' and proceed to the "Create" tool with your JSON output.

This is my flow …

This was the chat message …

Personal, today at 10am for 1 hour with a reminder 30 minutes before.

The Agent generates the JSON correctly …

{
  "summary": "Event",
  "start": {
    "dateTime": "2025-08-13T10:00:00+01:00",
    "timeZone": "Europe/London"
  },
  "end": {
    "dateTime": "2025-08-13T11:00:00+01:00",
    "timeZone": "Europe/London"
  },
  "reminders": {
    "useDefault": false,
    "overrides": [
      {
        "method": "popup",
        "minutes": 30
      }
    ]
  }
}

But when using the HTTP Request “Create” tool seems to lose the main JSON data …

… which ofcourse ends with an Error from Google.

What am I missing in the node or instructions to the Agent to get the Calendar data AND the calendar URL ?

Thanks in advance for your help.

( this has been a steep learning curve for me and really appreciate everyone )

Paul

The body field should as well either have fromAI() or be marked for filling by AI using the button. That is instead of {{ json.output }}

1 Like

Yes, we have success!

Personal, Test Event, 5pm with a reminder of 45 mins.
Business, Test Event, Friday at 4pm.

I cannot thank you enough.

This has been an excellent learning experience and confirms my faith in AI and Humans :slight_smile:

Regards,

Paul

PS: I just wish the normal ‘Google Calendar’ create event node would do the ‘custom reminders’ but perhaps this will help the developers or at the least someone like me with fussy requirements :slight_smile:

1 Like

I am glad we succeeded :slight_smile:

If this was helpful, kindly mark the answer which helped you the most as “Solution”. Thank you.

Cheers!

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.