Logo StartupKit
EN
Scheduling & Interviews

Calendar Feeds (ICS)

Subscribe to any calendar via ICS link for conflict detection without granting OAuth access. Works with Google Calendar, Outlook, Apple Calendar, and more.

Why It Matters

Not everyone wants to grant OAuth access to their calendar. Calendar feeds let you connect any calendar for conflict detection by pasting a simple URL. No OAuth, no permissions dialog, no third-party app authorization.

This works with:

  • Google Calendar (personal or workspace)
  • Microsoft Outlook / Office 365
  • Apple Calendar (iCloud)
  • Any calendar app that offers an ICS/iCal export URL

Kit polls your calendar feed every 15 minutes and uses it to hide conflicting time slots when candidates book interviews, just like the Google Calendar integration.

What You Need

  • A Kit account with scheduling enabled
  • A calendar app that offers a secret ICS/iCal URL (most do)

Adding a Calendar Feed

  1. Navigate to Integrations > Calendar
  2. Click Add Calendar Feed
  3. Paste your calendar’s ICS URL (must start with https://)
  4. Optionally set a display name (Kit auto-detects it from the feed)
  5. Click Add Calendar Feed

Kit validates the URL, fetches the feed, and starts checking it for conflicts immediately.

Finding Your ICS URL

Google Calendar

  1. Open Google Calendar and click the gear icon (Settings)
  2. Click on the calendar name in the left sidebar
  3. Scroll to Secret address in iCal format
  4. Copy the URL

Important: Use the secret address, not the public one, unless your calendar is intentionally public. The secret URL includes a token that grants read access.

Microsoft Outlook / Office 365

  1. Open Outlook on the web and go to Settings > Calendar
  2. Click Shared calendars
  3. Under “Publish a calendar”, select the calendar you want
  4. Choose Can view all details and click Publish
  5. Copy the ICS link (not the HTML one)

Apple Calendar (iCloud)

  1. Open the Calendar app on your Mac
  2. Right-click the calendar you want to share
  3. Select Share Calendar…
  4. Check Public Calendar
  5. Copy the URL that appears

How It Works

Aspect Detail
Polling frequency Every 15 minutes
Data accessed Only event start/end times and busy/free status
Data stored Busy time windows only (no event content)
Time range Next 30 days
Recurring events Automatically expanded (daily, weekly, monthly)
All-day events Block the entire day

When a candidate views available interview slots, Kit subtracts your calendar’s busy times from your availability schedule, exactly the same way it works with Google Calendar.

Google Calendar Integration vs Calendar Feeds

Feature Google Calendar (OAuth) Calendar Feeds (ICS)
Conflict detection Real-time 15-minute delay
Event creation Yes (interview events on your calendar) No
Setup OAuth authorization Paste a URL
Works with Google Calendar only Any calendar provider
Privacy Requires calendar permissions URL-based, no account access
All-day events Supported Supported
Recurring events Handled by Google API Expanded from feed

Use Google Calendar if you want real-time conflict detection and automatic interview event creation.

Use Calendar Feeds if you prefer not to grant OAuth access, use a non-Google calendar, or want to add a secondary calendar from a different provider.

You can use both at the same time. Kit merges busy times from all connected sources.

Managing Calendar Feeds

Editing a Feed

Navigate to Integrations > Calendar, find your feed in the Calendar Feeds section, and click the pencil icon. You can change the display name and toggle conflict checking on or off.

Refreshing a Feed

Click the three-dot menu (⋮) next to a feed and select Refresh Now. Kit fetches the latest version immediately instead of waiting for the next 15-minute poll.

Removing a Feed

Click the three-dot menu (⋮) and select Remove Feed. Kit stops checking this calendar for conflicts. Your calendar itself is not affected.

Privacy and Security

Calendar feeds are designed with privacy in mind:

  • No event content stored – Kit reads event start/end times and busy/free status only. Event titles, descriptions, attendees, and locations are discarded immediately after parsing.
  • Encrypted storage – Your calendar URL is encrypted at rest. It’s never logged or exposed in API responses.
  • HTTPS only – Kit only accepts calendar URLs over HTTPS.
  • You control access – To revoke Kit’s access, regenerate your calendar’s secret URL in your calendar app (Google, Outlook, etc.). The old URL stops working immediately.

Revoking Access

Unlike OAuth (where you revoke from Kit or your Google account), calendar feed access is controlled by the URL itself:

  1. Go to your calendar app’s settings
  2. Find the published/shared calendar
  3. Click “Reset” or “Unpublish” to invalidate the old URL
  4. In Kit, remove the old feed and add the new URL if needed

Troubleshooting

Feed Not Updating

Possible causes:

  1. The calendar URL has been revoked or regenerated
  2. Your calendar provider is temporarily unavailable
  3. The feed is paused after repeated failures

Fix:

  • Check the feed status at Integrations > Calendar
  • Click Refresh Now to force an immediate update
  • If the URL was regenerated, remove the old feed and add the new URL

Events Missing from Conflict Check

Possible causes:

  1. The event is marked as “free” (transparent) in your calendar
  2. The event uses an unusual recurrence pattern Kit can’t expand
  3. The event is more than 30 days in the future

Fix:

  • Edit the event in your calendar and set the status to “busy”
  • For recurring events, check that they appear correctly in your calendar app first

Feed Shows “Error” or “Paused”

Kit pauses feeds after repeated fetch failures to avoid unnecessary requests.

  • Error (3+ failures): Kit is still trying. Check that your URL is valid.
  • Paused (extended failures): Kit has stopped polling. Remove the feed and re-add it with a fresh URL.

Quick Checklist

  • Navigate to Integrations > Calendar
  • Click Add Calendar Feed
  • Paste your calendar’s secret ICS URL
  • Verify the feed shows as “Active” after a few minutes
  • Test by viewing a candidate booking page and confirming conflicting slots are hidden
  • Optionally add feeds for additional calendars (personal, team, etc.)

Type to search...