OpenAI + Google Calendar: scheduling from chat
You book something “real quick,” then forget to add it to your calendar. Or you add it twice. Or you spend ten messages confirming times that should have taken ten seconds.
Executive assistants feel this all day. Consultants do too, especially when meetings pile up across clients. And busy founders get hit hardest when OpenAI Calendar automation is the difference between a clean schedule and constant rescheduling.
This n8n workflow lets you request calendar changes in chat, then has an AI agent create, list, or delete Google Calendar events for you. You’ll see how it works, what you need, and where teams usually trip up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: OpenAI + Google Calendar: scheduling from chat
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n4@{ icon: "mdi:wrench", form: "rounded", label: "sub_agent_cal", pos: "b", h: 48 }
n3 -.-> n1
n4 -.-> n1
n2 -.-> n1
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1 ai
class n2 aiModel
class n4 ai
class n3 ai
The Problem: Calendar Changes Live in Too Many Places
Scheduling sounds simple until it’s not. A meeting request comes in via chat, you answer it, then you still have to open Google Calendar, hunt for the right day, pick the right timezone, and type the details. Later, someone asks “what’s on my calendar this week?” and you’re scrolling, screenshotting, or copy-pasting. Deleting is worse. You remember the appointment name, but not the exact date, so you search, second-guess, and hope you’re not removing the wrong event.
It adds up fast, especially when your calendar is basically your operating system.
- Simple meeting requests turn into 10+ clicks, which means you postpone doing it “until later.”
- Small mistakes happen constantly, like missing a timezone detail or forgetting to include a video link.
- When plans change, deleting or updating an event takes long enough that people stop doing it reliably.
- There’s no consistent way to ask for a calendar action, so every person uses a different format.
The Solution: Chat-Driven Calendar Actions With a Parent + Sub-Agent
This workflow gives you a single “front door” for scheduling: you send a request in chat, and an AI agent (named Albert in the template) interprets what you meant. If it’s a calendar task, the parent agent delegates the work to a separate sub-agent workflow that holds the Google Calendar tools. That separation matters more than it sounds. The parent keeps the conversation style and short-term memory, while the sub-agent focuses on safely executing calendar actions like Get, Create, and Delete. Finally, the agent replies back in chat with a confirmation or a list of upcoming events, so you don’t have to open your calendar just to answer basic questions.
The workflow starts with an incoming chat trigger in n8n. OpenAI turns your message into a structured intent, then the Calendar Tool Runner executes the companion “Sub-Agent” workflow against Google Calendar. You get a clean response back to the same conversation, which keeps scheduling from spilling into a dozen tabs.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you handle scheduling for a small team and you process 8 calendar requests a day (create, delete, or “what’s on my calendar?”). Manually, even a quick request is maybe 5 minutes: open Calendar, search, check conflicts, type details, confirm. That’s about 40 minutes daily, and it’s usually broken into annoying little chunks. With this workflow, you send a chat message in under a minute, wait a moment for processing, and you’re done. You get roughly 30 minutes back per day, and your calendar stays accurate.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- OpenAI for understanding chat requests and intent.
- Google Calendar to create, list, and delete events.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Intermediate. You’ll mainly be connecting credentials and selecting the companion Sub-Agent workflow in the right node.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A chat message triggers the run. The Incoming Chat Trigger fires when someone sends a scheduling request (for example, “Create a meeting tomorrow 3–4pm called Product Sync”).
The orchestrator decides what to do. The Conversation Orchestrator agent reads the message, uses the OpenAI Chat Model to interpret it, and keeps context in the Buffer Memory Store so follow-up messages still make sense.
A dedicated sub-agent performs the calendar action. The Calendar Tool Runner hands off to a separate workflow (the companion Sub-Agent template) that contains the actual Google Calendar tools for getting events, creating new ones, and deleting the right entry.
You get a clear response back in the conversation. The agent confirms what it changed, or it lists events when you ask what’s coming up. No tab switching. Honestly, that’s the whole win.
You can easily modify the agent’s “persona” and the memory window to match how your team communicates. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Chat Trigger
Set up the entry point so incoming chat messages can start the automation.
- Add the Incoming Chat Trigger node to your canvas.
- Keep default settings (no required fields are configured in this workflow).
- Verify the connection from Incoming Chat Trigger to Conversation Orchestrator.
Step 2: Set Up the AI Orchestrator
Configure the agent that coordinates the assistant’s behavior and uses tools and memory.
- Add the Conversation Orchestrator node and connect it to Incoming Chat Trigger.
- Set the System Message to
You are Albert, a helpful google calendar assistant. You are to use the "sub_agent_cal" to get calendar events, create calendar events, and delete calendar events. - Attach OpenAI Chat Engine as the language model connection, Buffer Memory Store as the memory connection, and Calendar Tool Runner (Configure Required) as the tool connection.
Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine. This is the language model used by Conversation Orchestrator.
Step 3: Configure the OpenAI Model
Define which OpenAI model powers the assistant’s responses.
- Open the OpenAI Chat Engine node.
- Set the Model to
gpt-4o-mini. - Leave Options empty unless you need advanced settings.
Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
Step 4: Configure the Calendar Tool Workflow
Point the tool node to the workflow that manages Google Calendar actions.
- Open the Calendar Tool Runner (Configure Required) node.
- Set the Workflow ID to the ID of your calendar sub-workflow (currently empty).
- Set the Description to
=This workflow helps to manager Google calendar events. - In Workflow Inputs, set text to
{{ $json.chatInput }}and session_id to{{ $json.sessionId }}.
⚠️ Common Pitfall: If Workflow ID is left blank, the assistant will not be able to call the calendar tool. Make sure the referenced sub-workflow exists and has its own required credentials configured.
Step 5: Test and Activate Your Workflow
Validate that the assistant responds correctly and can trigger calendar actions.
- Click Execute Workflow and send a test chat message into Incoming Chat Trigger.
- Confirm Conversation Orchestrator returns a response and references the calendar tool when appropriate.
- Verify the calendar sub-workflow runs when Calendar Tool Runner (Configure Required) is called.
- When satisfied, toggle Active to enable the workflow for production use.
Common Gotchas
- Google Calendar credentials can expire or need specific permissions. If things break, check the connected account in n8n Credentials and confirm it still has calendar access.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 15 minutes if you already have credentials ready.
No. You will connect accounts and select the Sub-Agent workflow in one node.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage costs based on how chatty your agent is.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll swap the entry point. Replace the Incoming Chat Trigger with your preferred channel trigger, then keep the same Conversation Orchestrator and Calendar Tool Runner so the agent still delegates to the Sub-Agent correctly. Common tweaks include changing the agent’s tone (“more formal”), tightening what it’s allowed to delete (“only events I created”), and adding confirmation prompts for risky actions.
Usually it’s expired credentials or the wrong Google account. Reconnect Google Calendar in n8n Credentials, then confirm the calendar scope/permissions are still granted. Also check that the Sub-Agent workflow is the one selected in the Calendar Tool Runner node, because a missing selection can look like a “Calendar” failure.
On a typical n8n Cloud plan, it can handle hundreds to thousands of chat-triggered runs per month, depending on your plan and usage. If you self-host, there’s no execution limit, and capacity mainly depends on your server and OpenAI rate limits. In practice, most small teams run this comfortably all day because each request is just one chat message plus a short tool call.
If you want an AI agent that can interpret messy human requests (“delete my dentist thing next week”) and keep conversation context, n8n is usually a better fit. You get more control over memory, branching logic, and delegation to sub-workflows, which makes this style of automation easier to maintain. Zapier and Make are solid for strict, form-like inputs, but they can feel brittle once people start typing naturally. Also, the parent + sub-agent split is a big deal for long-term maintenance, because you can upgrade calendar tools without rewriting the whole chat experience. If you’re unsure which way to go, Talk to an automation expert and you’ll get a straight recommendation.
Once this is running, calendar admin stops being a daily chore. Set it up, use chat like you already do, and let the workflow keep Google Calendar honest.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.