Calendar Integration
Connect Google Calendar to prevent double-booking, detect scheduling conflicts automatically, and optionally put booked interviews straight onto each interviewer's own calendar.
Why It Matters
Without calendar integration, you’d manually block out every meeting in your availability schedule. Connect Google Calendar once, and Kit automatically:
- Hides time slots when you have conflicting meetings
- Checks calendar availability whenever available slots are requested
- Sends a calendar invite (
.icsfile) by email when a candidate books, which participants can add to their calendars - Sends an updated or cancellation invite by email when an interview is rescheduled or cancelled
- Puts the interview directly on the Google Calendar of each interviewer booked on it, but only on calendars where they switched on Allow creating events in this calendar
Don’t use Google Calendar? You can fetch busy windows from calendars such as Outlook, Apple, or Proton via an ICS link. These feeds do not yet block candidate booking slots. See Calendar Feeds (ICS).
Connecting Google Calendar
Navigate to Integrations > Google Calendar and click Connect Google Calendar.
Authorization Flow
- Select your Google account (or sign in)
- Grant Kit permission to your Google Calendar. Kit uses it to read your availability, and to manage interview events on the calendars you explicitly allow
- Kit lists all calendars associated with your account
- You choose which calendars to sync, and what Kit may do with each one
Permissions
Kit requests a single Google Calendar scope:
| Scope | What It Grants |
|---|---|
calendar |
Google’s full read/write calendar scope. Kit uses it to list your calendars, to read free/busy windows for conflict detection, and, only on calendars where you switched on Allow creating events in this calendar, to create, update, and delete the calendar entry for an interview you’re booked on. |
What Kit reads. Kit reads the list of calendars on your account (name, time zone, colour, access level) and the start time, end time, and busy status of the events on the calendars you enabled for conflict detection. Event titles, descriptions, and attendee lists are not read. This protects privacy for personal events.
What Kit writes. Kit writes exactly one kind of event: the calendar entry for an interview you’re booked on, and only on a calendar where you switched Allow creating events in this calendar on. Kit only ever updates or deletes the events it created itself; it never modifies, moves, or deletes anything else on your calendar. If you leave that switch off, Kit never writes to your Google Calendar and interview invites reach you only as emailed .ics attachments. See What Kit Writes to Your Calendar.
Choosing What Kit May Do With Each Calendar
After connecting, you’ll see all your Google Calendars on the Google Calendar Settings page.
Primary vs. Secondary Calendars
- Primary calendar: Your main Google Calendar (usually your email address)
- Secondary calendars: Additional calendars you’ve created or subscribed to (team calendars, shared calendars, etc.)
The Two Per-Calendar Switches
Every synced calendar carries two independent switches:
| Switch | Default | What It Does |
|---|---|---|
| Check for scheduling conflicts | On | Kit queries this calendar’s free/busy windows whenever someone views your bookable slots, and hides slots that overlap a busy event. |
| Allow creating events in this calendar | Off | Lets Kit create, update, and delete the interview entry on this calendar for the interviews you’re booked on. Only offered for calendars where your Google access level is Owner or Writer; Kit can’t write to a calendar you can only read. |
Setting them during the connect flow. On the Select Google Calendars page, expand Calendar options under a calendar. Conflict checking is pre-ticked; event creation is not; you have to tick it yourself.
Changing them later.
- Navigate to Integrations > Google Calendar
- Find the calendar in the list and click the pencil (Edit calendar) icon
- Tick or untick Check for scheduling conflicts and Allow creating events in this calendar
- Click Save Changes
The calendar list shows a Conflict checking enabled badge and a Can create events badge so you can see at a glance which switches are on.
Kit checks every synced calendar that has conflict checking switched on, not only your primary one. If any of them has a conflicting event, that time slot is hidden from candidates.
Common Setup
| Scenario | Which Calendars to Check for Conflicts |
|---|---|
| Solo employee with one calendar | Primary calendar only |
| Employee with work + personal calendars | Both; prevent candidates from booking during personal appointments |
| Manager with team calendar | Primary + team calendar; avoid conflicts with team meetings |
| Part-time consultant | Work calendar + client-specific calendar; block out all commitments |
| Do This | Don’t Do This |
|---|---|
| Check every calendar where you have genuine conflicts | Check holiday calendars or read-only calendars you don’t attend |
| Keep personal calendar connected to avoid work/life conflicts | Manually add date overrides every time you have a personal appointment |
| Allow event creation on the one work calendar you live in | Allow event creation on a shared team calendar you don’t want interview entries on |
How Interview Invites Are Sent
When a candidate books an interview, Kit emails a standard calendar invite (a .ics file attachment) to the candidate and to every interviewer booked on it. Your email client (Gmail, Outlook, Apple Mail, etc.) recognizes the attachment and offers to add it to your calendar. When the interview is rescheduled or cancelled, Kit emails an updated or cancellation invite the same way.
This email path always runs, whatever calendar app you use, and it is the only thing that reaches the candidate.
Invite Details
Each .ics invite includes:
- Title: “Interview: [Job Title] at [Company]”
- Time: The slot the candidate selected, in the recipient’s time zone
- Description: The job title, company, and duration; plus the meeting URL if one is configured. The interviewer copy also lists the candidate’s name
- Attendees: The recipient (candidate or interviewer)
If the interview includes a meeting URL, Kit adds it to the invite’s join link automatically.
What Kit Writes to Your Calendar
Every interviewer booked on the interview who has a Google calendar with Allow creating events in this calendar switched on also gets the interview on that calendar directly, so it’s there without them having to accept the emailed attachment:
| When | What Kit Does |
|---|---|
| A candidate books the interview | Creates one event on each booked interviewer’s event-enabled calendar |
| The interview is rescheduled, or a meeting link is added | Updates those same events |
| The interview is cancelled | Deletes those events |
The event Kit creates contains the interview title (“Interview: [Candidate name] — [Job title]”), the stage name and job title as its description, the start and end time, and the meeting link as its location.
The Limits: Read These
-
Interviewers only, and only those booked. Kit writes one event per interviewer booked on the interview, each on their own calendar. Assigned interviewers Kit didn’t seat get nothing, and the candidate never gets a calendar write, only the emailed
.ics. -
Opt-in, per person and per calendar. Nothing is written for someone unless they switched Allow creating events in this calendar on for a calendar they own or can write to. For anyone who hasn’t, Kit writes nothing and the emailed
.icsremains their only delivery. - No attendees, no invitations from Google. The event Kit creates carries no attendee list and is sent with notifications suppressed, so Google itself emails nobody about it: not the candidate, not the interviewers. Kit’s own emails stay the only notifications anyone receives. The candidate doesn’t need a Google account, and nobody appears as an attendee on anyone else’s event; each entry stands alone on its owner’s calendar.
-
One entry, but only for the lead. The event Kit creates for the lead interviewer (or, with no lead named, the first interviewer it seated) carries the same unique ID as the emailed
.ics, so if they already accepted that invite by hand Google keeps a single entry and Kit leaves it alone; later changes reach them through the updated.icsemail. Every other seated interviewer gets a different ID: a shared ID is how Google links copies of one event, and reusing it across seats would collapse the whole panel into one entry. A co-interviewer who also accepts the emailed.icsby hand therefore ends up with two entries for that interview. - Only Kit’s own events. Kit updates or deletes only the events it created for that interview. It never edits, moves, or removes anything else on your calendar.
- Not retroactive. Switching event creation on doesn’t backfill interviews that were already booked. It applies to interviews booked or rescheduled afterwards.
- Google Calendar only. Calendar feeds added by ICS link are read-only by nature; Kit can never write to those, only read busy windows from them.
-
A failed write never breaks a booking. If Google rejects the write (permissions changed, calendar deleted, authorization expired), the interview is still booked and the
.icsemails still go out. Reconnect the calendar to restore event creation.
Which Calendar Kit Picks, and What Happens When There Isn’t One
If you allowed event creation on more than one calendar, Kit prefers a calendar it also checks for conflicts. Writing a hold to a calendar Kit never reads back would reserve the hour for nobody: the entry would sit there while Kit carried on offering that time to candidates. Only when none of your event-enabled calendars is conflict-checked does Kit fall back to the first one.
If you have no such calendar (nothing connected, or Allow creating events in this calendar switched off everywhere), Kit writes nothing for you, and the interview reaches you exactly as it always did: as the emailed .ics attachment.
The interview details page now says which of these happened, against each interviewer’s name, instead of leaving them to guess:
| What the interview page says | What it means |
|---|---|
| Kit added this interview to their Google Calendar (calendar name). | The event was written to that calendar |
| None of their calendars has “Allow creating events in this calendar” turned on, so nothing was added. | That person has no writable calendar; the emailed .ics is their only copy |
| Already on their Google Calendar, so Kit didn’t add a second entry. | The lead interviewer had already accepted the emailed invite by hand |
| Kit can’t add this interview to Google Calendar until the connection is reconnected. | Authorization expired; reconnect and Kit resumes |
| Google wouldn’t add this interview to the calendar, so it’s only in Kit. | Google rejected the write; the booking itself is unaffected |
How Conflict Detection Works
Every time a candidate views available slots, Kit:
- Fetches your weekly hours and date overrides from your availability schedule
- Queries every Google Calendar you enabled for conflict detection for busy windows in that date range
- Removes time slots that overlap with any calendar event marked as “busy”
- Applies buffers; saved meeting-count limits are not enforced yet
- Returns only the slots where you’re available
Real-Time Updates
Calendar checks happen on-demand, not on a schedule. After adding a meeting in Google Calendar, refresh the booking page to request availability again. The slot disappears when Google returns it as busy.
All-Day Events
All-day events marked “busy” (e.g., “Vacation” or “Conference”) block the entire day, even if weekly hours say you are available. Events marked “free” do not block slots.
Free vs. Busy Status
Google Calendar events can be marked as “free” or “busy”. Kit only blocks out “busy” events. If you create a tentative hold on your calendar and mark it as “free”, candidates will still see that time as available.
Multiple Interviewers
When an interview stage includes multiple interviewers, Kit checks all of their calendars. How the free time is combined depends on the stage’s Interviewers Required setting and, while that is 1, on the scheduling strategy in Hiring Settings:
- Maximize Availability (default): Kit checks conflicts individually and assigns each interview to an available interviewer. A slot is offered whenever any interviewer is free.
- Balanced Workload: Same as Maximize Availability, but prioritizes the least-loaded interviewers so interviews are distributed evenly across the team.
- Interviewers Required of 2 or more: Overrides both. Kit starts from the same set of slots, then hides every slot where fewer than the required number of interviewers are free.
What a conflict costs you depends on which of those applies. Under Maximize Availability or Balanced Workload, one interviewer’s 2 PM conflict costs nothing: the slot stays and goes to someone else who is free. On a stage that requires two or more interviewers, the same conflict can remove the slot entirely; it disappears as soon as the number of free interviewers falls below the requirement.
Conflict detection covers every assigned interviewer. Event creation follows whoever is booked: each of them gets an event on their own calendar if they allowed event creation there, and the emailed .ics invite otherwise.
Troubleshooting
Slots Still Showing Despite Conflicts
Possible causes:
- The conflicting event is on a calendar that doesn’t have Check for scheduling conflicts switched on
- The event is marked as “free” instead of “busy”
- Google has not yet returned the new event as busy, or the booking page needs refreshing
Fix:
- Check which calendars have conflict checking on at Integrations > Google Calendar
- Edit the conflicting event in Google Calendar and set status to “busy”
Disconnected Calendar
If you revoke Google permissions or change your password, Kit loses access to your calendar. You’ll see a warning banner at Integrations > Google Calendar. Click Reconnect to re-authorize. While access is missing, Kit can neither check for conflicts nor create, update, or remove interview events.
Interview Not Appearing on Your Calendar
Kit writes an event only for the interviewers booked on the interview, and only on a calendar where event creation was switched on. Everyone else receives the interview as an emailed .ics attachment that they (or their email client) need to accept.
Possible causes:
- You’re assigned to the stage but weren’t booked on this interview; Kit seats only as many interviewers as the stage requires
- Allow creating events in this calendar is off for all of your calendars
- Your access level on that calendar is Reader or Free/Busy Reader, so Kit can’t write to it
- The interview was booked before you switched event creation on; Kit doesn’t backfill
- Kit’s access to Google needs re-authorizing
- The invite email landed in spam, or your email client didn’t auto-add the
.icsattachment
Fix:
- Open the interview details page and read the line next to your name; it names which of the causes above applies to you
- Check the switches and access level at Integrations > Google Calendar, and reconnect if a warning banner is showing
- Search your inbox (and spam folder) for the interview invite email
- Open the email and accept the
.icsattachment, or import it into your calendar manually
Privacy and Security
Kit’s reads are limited to what scheduling needs:
- Event titles are not read: Only start/end times and busy status
- Attendees are not read: Kit doesn’t know who else is in your meetings
- Descriptions are not read: Personal notes remain private
Kit’s writes are narrower still. The only thing Kit ever writes to Google Calendar is the entry for an interview you’re booked on, on a calendar you explicitly allowed it to write to. It carries no attendee list, triggers no invitation email from Google, and Kit only ever updates or deletes the entries it created itself. Switch Allow creating events in this calendar off everywhere and Kit’s use of the calendar scope is read-only in practice.
Interview invites sent by email as .ics attachments include only what’s necessary: title, time, duration, and meeting link. The candidate’s name appears only on the copy sent to interviewers, and on those interviewers’ own calendar entries.
You can revoke access anytime at Integrations > Google Calendar. Kit then stops checking for conflicts and stops managing calendar entries. Invites you already accepted, and events Kit already created, stay on your calendar; Kit can no longer update or remove them, so delete any you don’t want by hand.
Quick Checklist
- Navigate to Integrations > Google Calendar
- Click Connect Google Calendar and authorize Kit
- Switch on Check for scheduling conflicts for every calendar where you have scheduling conflicts
-
Decide, per calendar, whether to switch on Allow creating events in this calendar; leave it off if you’d rather only receive the emailed
.ics - Check all calendars enabled for conflict detection, including secondary calendars
- Test by viewing a candidate booking page and confirming conflicting slots are hidden
- Revoke access anytime if you no longer want calendar integration