One calendar. Every schedule.
Merge every team’s schedule (TeamSnap, GameChanger, Spordle, even your own personal calendar) into one calendar that keeps itself up to date, with drive times, a leave-the-house alert and the weather on every event. Put it on the kitchen TV, and send each family a link that just works.
Add your schedules
Every schedule app can hand you a calendar link. Paste one link per team below, then keep going: add every kid’s team, your own personal calendar so family plans show up too, even a pro team like the Canucks for fun.
Pick where your schedule lives and we’ll show you exactly where the link is.
More detail and troubleshooting for every app
TeamSnap (do this on a computer, not the app)
- Log into TeamSnap on the web.
- Click your roster name to enter the team site.
- Open the Schedule tab → Settings → Sync Calendar / Export.
- Copy the calendar link (ends in
.ics). Paste it into a feed row below.
Tip: on multiple TeamSnap teams? There’s a combined link for all of them.
Backup: TeamSnap: Subscribe to a team schedule
GameChanger (do this in the mobile app)
- Open the GameChanger app, tap your team on the Home tab.
- Tap the gear icon (top right) → Schedule Sync → Sync Schedule to Your Calendar.
- Choose “Send Link and Instructions” to email yourself the link.
- Open the email, copy the URL, paste it into a feed row below.
Note: parent/guardian and staff accounts get games AND practices; “fan” accounts only get games.
Backup: GameChanger: Integrating your personal calendar
Spordle (needs Spordle Premium, the diamond badge on your team)
- Open the Spordle app and tap the Teams icon (jersey) at the bottom.
- Open your team’s Schedule.
- Tap the add / calendar icon in the top-right corner.
- Copy the subscription link it gives you and paste it into a feed row below.
This link updates automatically when games change, just like TeamSnap and GameChanger.
Note: to add a Spordle link to Google, use Google Calendar on the web, not the phone app.
No diamond badge? Free Spordle teams don’t offer a live calendar link, so this tool can’t keep that team updated automatically. If the same schedule is also in TeamSnap or GameChanger, use that link instead.
Backup: Spordle FAQ
Your own personal calendar (so family plans show up alongside hockey)
- Open Google Calendar settings (the ⚙ gear → Settings in Google Calendar).
- Under Settings for my calendars on the left, click your calendar to open its Settings and sharing.
- Scroll to the Integrate calendar section.
- Copy the Secret address in iCal format. Use the secret address, not the public one: personal calendars are usually private, and the public address only works if you make the whole calendar public (don’t).
- Paste it into a feed row below. A good “Whose schedule” label is just your name.
Then tick Personal calendar on that feed row. Personal events keep their own titles (Dentist, Piano recital) instead of being renamed to a name + team label.
Keep that address to yourself. Anyone who has it can read the calendar, so only paste it here (it stays in your browser) and into your own script.
A pro team’s schedule (a fun extra, like the Vancouver Canucks)
- Search the web for
<team name> schedule icalor look for “Add to calendar” / “Sync schedule” on the team’s official schedule page. - Copy the subscribe link. It’ll start with
webcal://or end in.ics. - Paste it into a feed row below with a label like
Canucksand its own colour.
Game nights land on the kitchen TV right next to practices. Highly recommended.
💡 The Short team label you give each feed matters later: it’s what powers per-team share links for your families: U9 families can get a U9-only link, and U11 families get theirs.
👀 What every event will look like
Paste your first schedule link above and a sample event will appear here.
Create the calendar it all goes into
Everything above gets merged into one new, empty Google calendar of its own. Making it takes about a minute, and it is the one bit of setup that makes everything later easy.
- Open Google Calendar settings on a computer.
- On the left, click Add calendar → Create new calendar.
- Name it something like
Family Sportsand click Create calendar. - Click your new calendar in the left list, scroll to Integrate calendar, and copy its Calendar ID (it looks like
abc123…@group.calendar.google.com).
In the same settings screen, under Access permissions for events, tick “Make available to public” and choose “See all event details.”
This is the trick that lets the TV display run with no Google sign-in at all: no popups, no passwords typed with a TV remote, nothing that expires. It is also what makes family share links possible. Heads up: public means anyone who has this calendar’s ID can view its events, including personal ones you added in Step 1. For a family schedule on the kitchen TV, that is usually exactly what you want. Prefer to keep it private? You can, the TV will just need a Google sign-in instead.
⚠ Use a new, empty calendar. Never pick a calendar you already added as a link in Step 1: the merger would copy events into the same calendar it reads from, and everything would show up twice. We check for this as you type.
Prefer to skip this and use your everyday Gmail calendar?
You can paste your own Gmail address here instead, and the merged events will land on your main calendar. Two trade-offs: the TV display will then need a Google sign-in on the TV (sign-in popups can be flaky on TV browsers), and family share links are not available, because those need a calendar that can safely be made public. And never use a calendar you also added as a link in Step 1.
Home base
So every event can tell you the drive time and exactly when to leave the house.
Timing & extras
How early do you like to be? We add this on top of the live drive time to set your leave-the-house alert. The defaults suit most families, so feel free to just move on.
Create your calendar
One click builds your personal sync script with your links baked in, and saves your setup so the Display page can find it. Then it’s a three-minute paste into your own Google account.
🔒 Your saved setup is private to your account and only visible to you.
🎉 Your calendar is ready
This script is yours alone, built right here in your browser with your links inside. Copy it, then follow the quick install below.
Install it (about 3 minutes)
- Go to script.google.com and click New project.
- Delete the sample code, then paste the script you copied.
- Click Save (the disk icon).
- In the function dropdown at the top, choose
mergeCalendars, then click Run. Google will ask you to authorize the script. Approve it. This is Google asking permission for your script to use your calendar on your account. Nothing is sent to DrillFlow. - You will probably see “Google hasn’t verified this app.” That is normal and expected. This is your own private script, not a published app; it only says “unverified” because you created it a minute ago. Click Advanced, then Go to Untitled project (unsafe), then Allow. Nobody else can see or run this script.
- Watch the log at the bottom: when it says Execution completed, open Google Calendar. Your merged events appear within a minute, each with drive time, a leave-the-house time and weather.
- Last step: choose
createSyncTriggerin the same dropdown and click Run once. From now on it re-syncs itself every 3 hours.
📅 Only upcoming events are added. Past games and practices won’t appear.
Now the fun part
Managing your calendar later
Adding or removing a team
Your feed links aren’t stored on DrillFlow (that keeps your private calendar links off our servers). To change teams you have two options:
- Easiest for one change: open your script at script.google.com and find the
CALENDARS_TO_MERGEsection near the top. Edit the line for that team to change the link, or delete the whole line to remove a team. Then save. - Or: come back here, fill out the form again with your full set of teams, and paste the new script over the old one.
When you remove a team, its events clear themselves off your calendar automatically over the next sync or two. You don’t have to delete them by hand.
My calendar stopped updating
Calendar links from TeamSnap and GameChanger can expire, or a team admin can reset them. When that happens the script emails you a heads-up. To fix it, get a fresh link from the app (see the walkthroughs in step 1) and update that one line in your script, or regenerate here and repaste.
Start fresh / clean everything out
If things ever look messy, open your script, choose wipeAllSyncedEvents from the function dropdown, and Run it. That removes only the events this tool created. Your own personal calendar events are never touched. Then run mergeCalendars to rebuild. Note: it clears in batches of 50, so a large calendar may need wipeAllSyncedEvents run a couple of times.
Other tweaks
To change how early you arrive, your home address, or which events get weather: regenerate here with new settings and repaste, or edit the CONFIG values at the top of your script. To pause syncing entirely, delete the trigger in your Apps Script (Triggers, the clock icon in the left sidebar).