Turn any spreadsheet into a subscribable calendar

If your schedule lives in rows and columns, CalRelay can turn it into a calendar feed that anyone can subscribe to on Apple Calendar, Google Calendar, or Outlook. The spreadsheet stays the source of truth. The calendar is just a view of it.

Bring the schedule however it exists. Paste a Google Sheets share link, point at any CSV URL, or copy the table and paste it straight in. You get the same wizard, the same feed, and the same subscribe page either way.

Free plan, no credit card. No account needed to see your events.

1

Bring your table, whatever it's in

Paste a Google Sheets share link or a CSV URL and CalRelay will keep re-reading it as the schedule changes. If you're working in something else, select the table, copy it, and paste it in. Pasted tables are a supported source too.

2

Map your columns and preview every event

CalRelay reads your header row, suggests which columns are the title, date, time, and location, and shows everything it found. Rows it couldn't parse are listed with their raw values, so nothing is guessed or silently dropped.

3

Share one link with everyone

You get a hosted subscribe page with one-click buttons for Apple, Google, and Outlook. Subscribers tap once and their calendar stays in sync after that, no account needed.

It doesn't matter which spreadsheet app you use

CalRelay works on the table, not the tool. Today it reads three kinds of source: Google Sheet share links, CSV URLs, and pasted tables. Everything after that point is identical, with the same parsing, the same feed, and the same subscribe page. More source types are on the roadmap, but between a link, a URL, and a paste, nearly any spreadsheet can get in right now.

That covers Excel and Numbers too. Copy the table and paste it, or save as CSV. There's no add-on to install and no scripting.

What your spreadsheet needs to look like

One row per event, with a header row. At minimum you need a title column and a date column. Time, end time, location, and description are optional. Everyday date formats work (3/4/26, Mar 4, 2026-03-04 7pm), and you pick your locale so day-first and month-first dates are never guessed.

For recurring schedules, use one row per occurrence: a row for the meeting on the 5th, another for the 12th. Exceptions stay simple. Skip a week by deleting the row, or move one occurrence without touching the rest.

Live sources vs. pasted tables

A Google Sheets link or CSV URL is a live source. CalRelay polls it (hourly on the free plan, every 15 minutes on Pro) and regenerates the feed when something changes, so editing the spreadsheet is all you ever do. A pasted table is a snapshot. When the schedule changes, paste the new version into the same feed.

Either way the subscribe link never changes, and edits update existing events in subscribers' calendars rather than duplicating them. If a live source breaks, say a column gets renamed or access is revoked, the feed freezes at its last good state and you get an email. Subscribers keep the last valid calendar in the meantime.

Questions

Which spreadsheet apps work?
Any app whose table you can share as a Google Sheets link, publish at a CSV URL, or copy and paste. Google Sheets links and CSV URLs stay in sync automatically. A pasted table (from Excel, Numbers, or anywhere else) is a snapshot you update by re-pasting.
Do I have to reformat my spreadsheet first?
Usually not. As long as there's a header row and one row per event, CalRelay suggests the column mapping and handles messy real-world dates and times. Anything it can't confidently parse is shown to you with the raw values rather than guessed.
How do recurring events work?
One row per occurrence. There's no recurrence-rule support. For schedules that live in spreadsheets this tends to work out fine, because real seasons and terms have plenty of exceptions, and a row per date makes every exception a normal edit.
How quickly do subscribers see changes?
Live sources are re-read hourly on the free plan and every 15 minutes on Pro, and Apple Calendar and Outlook typically pick up changes shortly after. Google Calendar refetches external feeds on its own schedule and can take up to 24 hours. That's a Google-side limit no feed provider can get around.
What does it cost?
The free plan is one feed with up to 50 events, refreshed hourly, free forever. Pro is $12/mo or $99/yr for 10 feeds, unlimited events, and 15-minute refresh.

Your schedule already exists.

Turn it into a calendar your whole roster can subscribe to. Takes about three minutes.

Create your free feed