Google Sheets to Google Calendar, interviews booked fast
Your interview scheduling is probably “organized”… until it isn’t. A new candidate lands in a Google Sheet, someone pings a hiring manager, calendars don’t match, and suddenly you’re stuck in email ping pong just to lock one slot.
This Sheets Calendar automation hits recruiters first, but founders and ops managers feel it too. You get interviews booked automatically, with a calendar invite and a polished email, without babysitting everyone’s availability.
Below you’ll see exactly what the workflow does, what you need, and how to adapt it to your team’s scheduling rules.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets to Google Calendar, interviews booked fast
flowchart LR
subgraph sg0["Google Sheets Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Google Sheets Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:location-exit", form: "rounded", label: "Google Calendar", pos: "b", h: 48 }
n2@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Basic LLM Chain", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Azure OpenAI Chat Model", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n6 --> n1
n3 --> n2
n1 --> n3
n0 --> n6
n4 -.-> n3
n5 -.-> n3
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 n3,n5 ai
class n4 aiModel
class n6 code
classDef customIcon fill:none,stroke:none
class n6 customIcon
Why This Matters: Interview Scheduling Turns Into Hidden Work
Interview scheduling looks simple on paper. In reality, it becomes a chain of tiny tasks that break your focus: checking calendars, proposing times, confirming time zones, creating invites, and writing “nice” emails that still sound like your company. Do that a few times a week and it’s suddenly a recurring time tax. Worse, inconsistency creeps in. One candidate gets a great experience, another gets a rushed template, and you don’t notice until replies slow down or people no-show.
The friction compounds. Here’s where it typically breaks down.
- New candidate rows sit in a spreadsheet until someone remembers to act on them.
- Finding a time that works becomes a back-and-forth thread that can drag on for days.
- Calendar events get created without consistent titles, notes, or meeting details, so everyone shows up slightly confused.
- Email invites vary by person, which means your candidate experience depends on who was “on duty” that day.
What You’ll Build: Auto-Scheduled Interviews From a Google Sheet
This workflow watches your candidate spreadsheet and reacts the moment a new row appears. It takes the candidate’s details (name, email, background), calculates the next eligible interview time based on your rules, and then books the interview directly in Google Calendar. Once the event exists, the automation uses GPT-4 (via Azure OpenAI) to write a short, professional invitation that references the candidate naturally instead of sounding copy-pasted. Finally, Gmail sends the invite, so the candidate gets a clean message and your team gets a real calendar event. No manual slot hunting. No rewriting emails for the tenth time this week.
The workflow starts with a Google Sheets trigger that checks for new candidate entries every minute. Then it computes the next available interview slot (Mon/Wed/Fri at 3 PM) while preventing same-day interviews and avoiding conflicts. After that, it creates the event in Google Calendar and sends a personalized invitation email through Gmail.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you add 10 candidates a week to your Google Sheet. Manually, even a “fast” process is maybe 20 minutes each (check calendars, pick a slot, create the event, write the email), which is about 3 hours of admin work weekly. With this workflow, the sheet entry triggers the process automatically and you spend a couple minutes skimming the calendar event and the email before it goes out. That is a real chunk of time back, every week.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for your candidate intake spreadsheet.
- Google Calendar to create and manage interview events.
- Gmail to send invitation emails from your account.
- Azure OpenAI API key (get it from Azure OpenAI Studio / your Azure portal).
Skill level: Intermediate. You’ll connect Google credentials, paste an API key, and tweak simple scheduling rules, but you won’t be writing an app.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A new candidate appears in Google Sheets. The workflow runs on a frequent check (every minute) and looks for newly added or updated rows that match your “ready to schedule” criteria.
The next interview slot gets calculated. A small code step computes the next Mon/Wed/Fri 3 PM slot, then applies guardrails so candidates don’t get scheduled same-day. It also prepares the exact start and end times that Google Calendar needs.
The interview is booked on your calendar. n8n creates a Google Calendar event using the computed slot, so the time is reserved and visible to the team immediately. This also becomes the “source of truth” for the email that follows.
A personalized invite email is generated and sent. GPT-4 (through Azure OpenAI) drafts a concise message using the candidate’s name and background details, then Gmail sends it out with the interview information pulled from the calendar event.
You can easily modify the slot rules (days, time, duration) to match your hiring cadence, and adjust the email tone to fit your brand. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Sheets Update Trigger
Set up the workflow to start when your hiring sheet is updated.
- Add and open Sheets Update Trigger.
- Credential Required: Connect your googleSheetsTriggerOAuth2Api credentials.
- Set Document to
[YOUR_ID]. - Set Sheet to
Foglio1(gid0). - Keep Poll Times at
everyMinuteto check for updates frequently.
Tip: Ensure your Google Sheet has columns named NAME, EDUCATIONAL, and EMAIL to match downstream expressions.
Step 2: Set Up Processing in Compute Slot Times
Generate the next available interview slot and a one-hour end time.
- Add Compute Slot Times and paste the provided JavaScript into Code.
- Verify the output fields are
nextSlotandendSlot. - Connect Sheets Update Trigger to Compute Slot Times.
⚠️ Common Pitfall: The slot calculator always skips today. If you need same-day scheduling, adjust the daysUntil logic in Compute Slot Times.
Step 3: Configure Schedule Calendar Event
Create a Google Calendar event using the computed slot times.
- Add Schedule Calendar Event.
- Credential Required: Connect your googleCalendarOAuth2Api credentials.
- Set Start to
{{ $json.nextSlot }}. - Set End to
{{ $json.endSlot }}. - Select the Calendar as
[YOUR_EMAIL]. - Connect Compute Slot Times → Schedule Calendar Event.
Step 4: Set Up AI Email Composition
Use Azure OpenAI to write a personalized interview email and parse it as structured JSON.
- Add Compose Interview Email and set Text to:
{{ $('Sheets Update Trigger').item.json.NAME }}{{ $('Sheets Update Trigger').item.json.EDUCATIONAL }}Link for calendar: {{ $json.htmlLink }}My name is [YOUR_NAME], I'm from [YOUR_COMPANY] - Ensure Has Output Parser is enabled and connected to Extract Email JSON.
- Connect Azure Chat Assistant as the language model for Compose Interview Email.
- Credential Required: Connect your azureOpenAiApi credentials in Azure Chat Assistant.
- Leave Extract Email JSON with the schema example:
{ "body": "" }
Tip: Extract Email JSON is an AI sub-node. Add credentials to Azure Chat Assistant, not to the parser itself.
Step 5: Configure the Email Dispatch
Send the AI-generated email to the candidate.
- Add Dispatch Interview Email.
- Credential Required: Connect your gmailOAuth2 credentials.
- Set Send To to
{{ $('Sheets Update Trigger').item.json.EMAIL }}. - Set Subject to
Interview Details. - Set Message to
{{ $json.output.body }}. - Connect Compose Interview Email → Dispatch Interview Email.
Step 6: Test and Activate Your Workflow
Validate the end-to-end flow before turning it on.
- Click Execute Workflow and update a row in your sheet to trigger Sheets Update Trigger.
- Confirm Schedule Calendar Event creates a new event with a valid
htmlLink. - Check that Compose Interview Email outputs a JSON with
bodyand that Dispatch Interview Email sends successfully. - When successful, toggle the workflow to Active to run in production.
Troubleshooting Tips
- Google Calendar credentials can expire or lack the right calendar permissions. If events aren’t being created, check the connected Google account and the calendar selection inside the Google Calendar node first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Azure OpenAI prompts are often too generic out of the box. Add a few lines of brand voice and “what to include” guidance early, or you’ll end up editing every email anyway.
Quick Answers
About 30 minutes if your Google and Azure accounts are ready.
No. You’ll mainly connect accounts and tweak the scheduling rules in one place.
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 Azure OpenAI API costs, which are usually a few cents per email depending on your prompt.
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, and you should. Most teams change the “Compute Slot Times” logic to match their real interview windows, then adjust the “Compose Interview Email” prompt to reflect their role, timeline, and meeting format. You can also swap the Google Sheets trigger for another intake source later (like a form) while keeping the Calendar + Gmail pieces the same.
Usually it’s expired Google OAuth consent or the wrong calendar being targeted. Reconnect the Google Calendar credential in n8n, then double-check the calendar ID or calendar selection in the “Schedule Calendar Event” node. If it still fails, it can be a permissions issue (shared calendars often need explicit access) or a conflict error if the slot you computed is already taken.
Plenty for most small teams. On n8n Cloud, your limit depends on the plan’s monthly executions; if you self-host, there’s no execution cap and it mostly comes down to server resources and API rate limits. In practice, this workflow is lightweight because it processes one new row at a time, then creates one event and sends one email.
Often, yes, because the scheduling logic is the whole game. n8n is more comfortable when you need conditional rules (no same-day interviews), custom code for time calculations, and structured AI output you can trust before sending. Zapier/Make can do it, but you may end up stacking extra steps or paying more as volume grows. If you only need “new row → create event” with a basic email template, those tools can be quicker. For anything more nuanced, n8n is usually the calmer choice. Talk to an automation expert if you want a quick recommendation based on your process.
Once this is running, scheduling stops being a daily distraction. The workflow handles the repetitive parts, and you stay focused on actually hiring well.
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.