Soccer parents mostly deal with one app. Hockey parents deal with whichever app the association chose — RAMP, SportsHeadz, GameSheet, TeamLinkt, TeamSnap, Crossbar, or SportsEngine — and often two at once, because the league schedule lives in one place and the tournament schedule in another. Every one of them publishes a live calendar link. Every one of them hides it somewhere different.
This page tells you which app you're actually looking at, where that app keeps its calendar link, and where to go for the full step-by-step. Two minutes to find your guide; a few more to get the season onto your phone.
Figure out which app your association actually uses. Hockey doesn't have one schedule app — it has half a dozen, and your association picked one of them. The tell is usually the app with the roster and the chat, or the logo in the footer of the association's website. The next section matches what you're looking at to the right guide.
Copy the calendar link — not the auto-add button. Every one of these apps publishes a live calendar feed, and most will offer to hand the schedule straight to your phone's calendar. Copying the actual link is more flexible: one address can go into Google Calendar, Apple Calendar, Outlook, or a family calendar app. Each platform guide below shows exactly where the link hides, because none of them put it in the same place.
Paste it into Schedule Caddie (or your calendar app). Paste the link and the team joins your merged family calendar — re-checked every hour, with an email that tells you exactly what changed when practice moves or a game gets rescheduled. Pasted into Google or Apple Calendar directly, the same link works too; the fine print below explains how slowly those refresh.
Repeat for every team, tournament, and sibling. One feed covers one team, and in hockey that's rarely the whole season. A tournament entry often gets its own schedule and its own link; a second kid in a different division is another link; a sibling on an association that runs a different platform is another guide entirely. Add each one and they merge into a single color-coded calendar that flags conflicts between the kids' schedules automatically.
Match what you see to one of these. If your family has kids in two associations, you may need two of them.
You're on RAMP if: the app with the roster, the chat, and RSVPs is the RAMP Team App, or your association's website address contains rampinteractive.com (or the footer says RAMP InterActive). RAMP runs a huge share of Canadian minor hockey, ringette, and lacrosse. In the Team App, the gear icon in the top-right corner opens a settings menu with Calendar Subscriptions — copy the link there rather than letting it auto-add. A real RAMP feed URL comes from rampinteractive.com. RAMP calendar link guide · RAMP in Google Calendar
You're on SportsHeadz if: the app with your team's schedule and notifications is branded SportsHeadz, paired with the association website you registered through. A lot of Canadian minor hockey and ball associations run on it. Stop looking in the app — SportsHeadz says plainly that you can't subscribe from there. The Subscribe link sits in the footer at the very bottom of your association's website. SportsHeadz calendar guide
You're on GameSheet if: your league's website shows scores and standings powered by GameSheet, or your kid's games are scored on a GameSheet scoresheet. There are two GameSheets: the public stats page has no calendar export at all. The feed lives in GameSheet Teams (teams.gamesheet.app), under Schedule → Actions → Subscribe to Team Schedule → Calendar URL. Generating it needs a login, but the link isn't personal — ask your team manager to copy it once and send it to the parents. GameSheet calendar guide · Google · Apple
You're on TeamLinkt if: the team app is TeamLinkt. The calendar link works differently on the app than on the web: in the app, open the Events tab, tap the 3 dots (top right), then Subscribe to Calendar. On a computer, pick your team from the dropdown in the top-right corner, then Schedules → Schedule → Subscribe → iCal. Either path ends with a per-team link. TeamLinkt calendar guide · Google · Apple
You're on TeamSnap if: the team app is TeamSnap. The calendar link only lives on the website, not in the app: sign in at teamsnap.com in a browser, click into the team, open the Schedule tab, click Settings, then Sync Calendar / Export. One link per team, on every plan including free. TeamSnap calendar guide · Google · Apple
You're on Crossbar if: your club has its own Crossbar login page, usually linked from the club's main website. Crossbar is built for club administration and already ships a per-family feed: log in, go to Family Calendar, click Calendar Feed (top-right), and copy the URL. It bundles every player you have registered at that club into one feed; if you want a single kid's schedule, the club can set up a player-only login. Crossbar calendar guide
You're on SportsEngine if: you registered through a SportsEngine site and have a MySE member account — many organizations run heavily customized SportsEngine sites, so the public page may not look like it. SportsEngine rewrote this flow in October 2025: sign in to MySE, open the Schedule tab, click Sync Schedule (top-right), choose Other Calendar, then Copy. An iCal link on the organization's website still works as a fallback. SportsEngine calendar guide
Tournaments are separate teams. On GameSheet, a tournament entry is its own team with its own schedule, so it gets its own calendar URL — the league feed doesn't include it. Subscribe to each one separately, or paste both in and let them merge.
Two kids means two links. Subscriptions are per-team on most of these apps — a second kid in a different division is another link, even inside the same association. Crossbar's Family Calendar is the exception within one club; it still can't see a sibling's team on another platform.
Associations don't all pick the same app. RAMP and SportsHeadz are separate platforms that serve a lot of the same Canadian associations, and plenty of families end up with one kid on each. The hockey kid on GameSheet through the league while a sibling's team runs on something else entirely is the common squeeze — and none of these apps can bring an outside feed into their own calendar.
None of this is a problem for one team on one phone. It becomes one at two kids on three teams: every team is another link, another subscription, another calendar color to manage by hand — and none of them warn you when a tournament game lands on top of a sibling's practice. Schedule Caddie takes the same links (and feeds a Skylight or other wall calendar from the merged result) so every team lands on one color-coded calendar with conflict detection across all of it.
Subscribing puts the schedule in Google or Apple Calendar, but both refresh subscribed feeds on their own cycle — roughly every 12 to 24 hours — and neither notifies you when an event changes. A practice the convenor moved this morning can still show the old time at dinner, and when the new time finally lands it just quietly replaces the old one. Nothing speeds that cycle up, including us. What Schedule Caddie does instead is read the same feed every hour and email you exactly what changed — old time, new time, which team. More on the refresh cycle in why subscribed calendars update slowly.
My calendar app rejected a RAMP link with a format error
Some RAMP feeds are formatted in a way that stricter calendar apps refuse — a quirk in how the feed describes its timezone. First try swapping webcal:// for https:// at the front of the address. If the calendar app still won't take it, that's the quirk, and it isn't something you can fix from the RAMP side. Schedule Caddie reads RAMP feeds natively, including that quirk, so you can paste the same link there and the events and times come through correctly.
The schedule changed but my phone still shows the old ice time
If you subscribed directly in Google or Apple Calendar, they re-read subscribed calendars on their own quiet cycle — roughly every 12 to 24 hours — with no notification when something changes. The feed is current; your phone's copy isn't. To tell slow from broken, open the feed URL in a browser (swap webcal:// for https:// first): if calendar text appears or a file downloads, the feed is alive and your app is just between refreshes. The one universal force-refresh is to remove the subscription and re-add the same link.
It's been days and the calendar is still empty
Three possibilities, in order: the season hasn't been published yet (jump your calendar forward a month or two and look); you're subscribed to last season's feed (compare your subscribed URL against a freshly-copied one from the team app); or the feed URL changed when the association regenerated its season. All three end the same way: copy the current link from the source app and re-subscribe.
There isn't one. RAMP, SportsHeadz, GameSheet, TeamLinkt, TeamSnap, Crossbar, and SportsEngine all run hockey schedules, and which one you have depends on the association — not the league, not the province or state. Look at the app with your kid's roster and chat, or the footer of the association's website, and match it against the list on this page. Plenty of families have one kid on each of two platforms.
Not by your calendar app. When you subscribe to a feed in Google, Apple, or Cozi, you get a mirror: whatever the source says now, your calendar shows. If Saturday's game moves from 9:00 to 8:00, the entry just changes — nothing notifies you, nothing marks it as changed, and the old time is simply gone. If you want an actual heads-up, Schedule Caddie re-checks the same feed every hour and emails you exactly what changed: old time, new time, which kid, which team. No change, no email.
Depends on the platform. GameSheet needs a GameSheet Teams login to generate the link — but the link itself isn't personal, so a manager or coach can copy it once and text it to the whole team. TeamSnap's link only exists on the website, so you sign in at teamsnap.com in a browser. RAMP hands it out inside the Team App once you're signed in with a team selected. SportsHeadz is the odd one: no login at all, because the Subscribe link sits at the bottom of the association's public website rather than in the app.
Two, almost always. Calendar subscriptions are per-team on RAMP, GameSheet, TeamLinkt, and TeamSnap. The exceptions run the other way: Crossbar's Family Calendar bundles every player you've registered at that club into a single feed, and some SportsHeadz associations publish one association-wide calendar instead of per-team links. Whatever you end up with, paste each link into Schedule Caddie and they merge into one calendar, color-coded per kid, with conflicts flagged when two ice times collide.
Upload it. Schedule Caddie reads PDFs, screenshots, and phone photos of a schedule, pulls out every dated entry, and shows you a checklist to review before anything lands on the calendar. When the organizer issues a revised version, upload that and you'll see exactly what changed before approving it. If the tournament runs on GameSheet instead, it's treated as its own team with its own calendar URL — ask the manager for that link rather than retyping the bracket.
Yes. Every schedule in Schedule Caddie can become a public share page: a link anyone can open or subscribe to on their own phone, no app or account needed — just that one schedule, nothing else from your account. That matters on platforms like Crossbar, where the calendar feed itself requires a club login.
Today, yes — the merged calendar, uploads with review, share pages, and change alerts. No ads, no credit card.
Every kid, every schedule, every app — merged, color-coded, and watched for changes.
Get Started FreeWant to see it first? Explore a real family's calendar — no account needed.
Prefer an interactive walkthrough? Try the guided wizard
Team apps, school calendars, and paper schedules — merged, color-coded, change-alerted.