Book interviews without the back-and-forth
Finding a slot that works for a candidate and a whole interview panel usually means an email thread that goes back and forth for days. Below is the workflow I built: it polls a candidate tracker, pulls every interviewer's real free/busy, offers the candidate a short list, and only books once it's re-checked the panel is still free.
The question
this build answers
How do I schedule interviews against a whole panel's availability by email, without the back-and-forth to find a slot?
From the first trigger
to the finished job.
The working version, step by step.
Poll the tracker for candidates ready to schedule
A schedule reads the tracker for candidates that just hit your chosen stage, then pulls the real free/busy of every interviewer on the panel in one single call covering the whole panel.
Offer slots inside your working hours
The workflow works out slots inside your working hours, with a buffer around existing meetings and a minimum notice period I set in Settings. If there aren't enough shared slots, it tells the recruiter honestly and names exactly which interviewer is the tight one.
Email the candidate a short list
A short numbered list goes to the candidate asking for a pick. That email ships as a Gmail draft by default, so a person checks it before it goes out.
Never trust yesterday's availability
When the candidate replies, I never take the number they typed on trust alone. The workflow re-checks every interviewer's calendar again before booking, because the original offer can go stale in the time it takes someone to reply.
Prove the booking, don't just claim it
After creating the event, the workflow reads it back from Google Calendar, because a 200 response on its own doesn't prove the booking actually happened. I built it that way deliberately: a duplicate reply for an already-booked slot gets skipped, and every outcome, including the boring ones, earns a row in the log table.
Going through n8n's review
Schedule interviews over email with conflict checking and Google Calendar
This one is going through n8n's review. My creator page lists every template of mine that's already live, so you can see what else is available while this one clears.
See my templates on n8nWho this is for
I built this for recruiters and hiring coordinators running more than a couple of interviews a week who are tired of the "what times work for you" thread. If you already have a tracker with candidate stages and a panel of interviewers, this replaces that thread.
What happens when a slot goes stale
A reply just picks a number, and I treat that offer as perishable: it can go stale in the time it takes someone to reply. If the re-check finds the slot's gone busy, the candidate gets an apology and the rest of the list.
What it costs to run
I count one free/busy call per scheduling attempt across the whole panel, on top of whatever your Google Calendar and Gmail accounts already cost. Two n8n Data Tables hold the candidate tracker and the scheduling log, both free and already built into n8n.
Before you spend anything
The fit matters.
Who should not build this
If you're scheduling one or two interviews a month, an email thread is genuinely fine and this is overhead for a problem you don't have yet.
If your interviewers' calendars aren't visible to whichever account runs this, either directly or through a free/busy delegate, the panel-availability check has nothing to read.
Yours to keep
What lands
on your desk.
- The workflow set up in your own n8n, on your own Google Calendar and Gmail
- Your trigger stage, your interviewers per role, your working hours and notice period written into one Settings node
- Candidate emails shipping as Gmail drafts until you switch sendInvitesAutomatically on
- A scheduling log with a row for every outcome, including the boring ones
See the work
Open the proof.
Published case studies of running systems. Each links to the thing itself.
A few useful
answers.
Does it check one interviewer's calendar or the whole panel's?
The whole panel's, in one call, so it only offers a slot where everyone on the panel is actually free.
What happens if the candidate's chosen slot has gone busy?
The workflow re-checks the panel's calendars before booking, and if the slot's gone busy the candidate gets an apology and the rest of the list.
Does it email candidates automatically?
sendInvitesAutomatically ships false, so every offer starts as a Gmail draft for a person to check.
How do I know a booking actually happened?
The workflow reads the event back from Google Calendar after creating it, since a successful API response on its own is a weak kind of proof. I built a failed read to send the recruiter a dead letter, which is a clearer signal than a confirmation that might be wrong.
Make this work for you
Your tools.
Your working version.
Want this built and handed over working? Tell me what your version needs to do. One line is enough to start.
Start a brief

