ChatGPTCreativeWritingAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

Handle meeting no-shows via Gmail, Google Calendar, and OpenAI in n8n

Embed three buttons in reminder emails so attendees can confirm, reschedule, or cancel with one click

Some experienceStepsWorkflowPromptTip
Who
Operators or admins who want to reduce no-shows and let attendees self-manage meetings
You get
Attendees click a button to confirm, reschedule, or cancel; the calendar updates automatically and a notification email is sent
You need
n8n · webhook · gmail · google-calendar · openai

Constraints

Requires an n8n instance; Google Calendar OAuth2 credentials (access to the target calendar), Gmail send permissions, and an OpenAI API key. Replace YOUR_CALENDAR_ID in all Google Calendar nodes and YOUR_TIMEZONE in the agent prompt and event-creation tool description (e.g., Europe/London). Not tested by this site.

What they did

incrementors published an n8n template that lets meeting-reminder senders embed three buttons (confirm, reschedule, cancel) in emails. When an attendee clicks, the request hits a single webhook; a Switch node routes by action to three branches. The confirm branch fetches a Google Calendar event and sends a confirmation email. The cancel branch deletes the event and sends a cancellation email. The reschedule branch calls a gpt-4o-mini AI Agent with two Google Calendar tool nodes to create a new event with Google Meet and then delete the old one, before emailing the new details.

How it went

The source reports this template reduces no-shows without chasing replies (author_report). This site has not tested execution success rates or email deliverability.

Worth knowing

1. Email button HTML must be built by you; no ready-made template is provided. 2. The AI Agent relies on correct time parsing; use a standard format like '06:00 PM – 07:00 PM' with an explicit timezone. 3. The delete-old-event tool has a safety constraint to delete only after the new event is created, but agent execution order should still be reviewed for critical meetings. 4. Gmail nodes use HTML message bodies that can be edited for branding. 5. Credential IDs in workflow.json are the author's test credentials and must be replaced with your own.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • Get the event (confirm) node: connect Google Calendar OAuth2 credentials.
  • Get the event (reschedule) node: connect Google Calendar OAuth2 credentials.
  • Chat model node: connect OpenAI API credentials.
  • Delete old event tool node: connect Google Calendar OAuth2 credentials.
  • Create new event tool node: connect Google Calendar OAuth2 credentials.
  • Get the event (cancel) node: connect Google Calendar OAuth2 credentials.
  • Cancel the event node: connect Google Calendar OAuth2 credentials.

Configuration to replace

  • Source template is n8n public workflow #19368 (~24 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-24

Steps

  1. Receive and route the request

    Configure a Webhook node in n8n (path: meeting-reschedule) to receive GET requests from reminder-email buttons. Links must include query parameters: action (confirm/reschedule/cancel), email, eventId, and newDateTime for reschedules. Use a Switch node to route to one of three branches based on the action value.

  2. Configure credentials and global replacements

    Add credentials in n8n: Google Calendar OAuth2 (with access to the target calendar), Gmail (send permission), and OpenAI API. Then replace every YOUR_CALENDAR_ID in all Google Calendar nodes with your target calendar ID, and replace YOUR_TIMEZONE in the AI Agent node and the Create new event tool description with your timezone (e.g., Europe/London).

  3. Confirm or cancel a meeting

    Confirm branch: use a Google Calendar node to get the event by eventId, extract the attendee email and hangoutLink (Google Meet), then send a confirmation email via Gmail. Cancel branch: get the event, delete it from the calendar, then send a cancellation email. Edit email bodies in the respective Gmail nodes to match your branding.

  4. Reschedule a meeting

    Reschedule branch: read newDateTime from the request, fetch the original event details, then pass to an AI Agent. The agent uses gpt-4o-mini and connects to two Google Calendar tool nodes: Create new event tool creates a replacement event with Google Meet enabled, and Delete old event tool removes the original only after successful creation. Finally, send a reschedule notification via Gmail with the new time and meeting link.

    Execution prompt · Source text。AI Agent node (Move the meeting) text/prompt field

    You are a smart meeting assistant connected to Google Calendar.
    
    A user has requested to reschedule their meeting. Use the provided input to:
    - First create the new event
    - Then delete the old one using eventId
    
    ---
    
    ### Input (Dynamic JSON from user):
    ```json
    {{ $json }}
    Your Tasks:
    Extract the following from the input:
    
    email: the attendee's email
    
    eventId: the ID of the old event to delete
    
    newDateTime: time range (e.g. "06:00 PM – 07:00 PM")
    
    meetingDate: the date for the rescheduled event (format: YYYY-MM-DD)
    
    If meetingDate is not provided, use today’s date.
    
    Parse the newDateTime:
    
    Format: "hh:mm AM/PM – hh:mm AM/PM"
    
    Combine with meetingDate
    
    Time zone: YOUR_TIMEZONE
    
    Convert both start and end to UTC ISO 8601
    
    Create a new calendar event:
    
    Summary: "Rescheduled Meeting"
    
    Attendee: use the provided email
    
    Start and End time: use the parsed UTC values
    
    Enable Google Meet (hangoutLink)
    
     After the new event is successfully created, delete the old event using:
    
    calendar.deleteEvent
    
    Use the original eventId from the input
  5. Build email links and activate

    Copy the production webhook URL and build three button links in your reminder email template: action=confirm, action=reschedule (with newDateTime), and action=cancel, all including email and eventId. Activate the workflow, then test each branch to verify calendar updates and email delivery. [First-test safety] Before the first test, disconnect the Gmail send and Google Calendar delete nodes, or use a test calendar and test inbox; reconnect only after branch logic looks correct.

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and permissions first

This block is the prompt. Ads are never placed here.

Please set up the n8n workflow as follows:
1. Import the template or rebuild the node structure from workflow.json;
2. Configure the Webhook path as meeting-reschedule with responseMode lastNode;
3. Add Google Calendar OAuth2, Gmail, and OpenAI API credentials;
4. Globally replace YOUR_CALENDAR_ID and YOUR_TIMEZONE;
5. Configure Set field mappings and Switch branch conditions per the source node parameters;
6. Paste the above English prompt into the AI Agent node (do not change variable names);
7. Test all three query-parameter combinations: confirm, reschedule, and cancel.

The AI Agent prompt is in English with variables like {{ $json }} and YOUR_TIMEZONE kept as-is; replace the timezone and test with sample data before going live.

Source

Handle meeting no-shows via Gmail, Google Calendar, and OpenAI · incrementors · n8n.io · 2026-09-08

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related