How to add a TeamSnap schedule to your family calendar
If your kid plays a sport, half your weekend is structured by TeamSnap. This guide walks you through pulling a TeamSnap schedule into a single unified calendar that's color-coded, filtered to just the games or practices you care about, and republished to Apple Calendar, Google Calendar, or Outlook so it shows up on every phone in the house.
Not on TeamSnap? These steps still work.
This guide uses TeamSnap, but the exact same approach works for any team, league, or activity platform that publishes a calendar feed, including LeagueApps, PlayMetrics, SportsEngine, Sports Connect, Crossbar, and Stack Sports. And it's not just sports: dance studios, scout troops, music schools, and theater programs increasingly publish schedules the same way. Look for an iCal, ICS, Subscribe, or Calendar sync link in your app, copy that feed URL, and follow along below.
Why pull your team's schedule into a separate calendar at all?
TeamSnap is great at being TeamSnap. It's where your coach posts changes, where the team chat lives, where your RSVP for tomorrow's practice lands. Where it's less great: living next to school calendars, your work schedule, your spouse's appointments, and the kid's pediatrician reminder.
The fix is aggregation: a single layer above TeamSnap, Google Calendar, your school's ICS feed, and anything else you subscribe to, where you can color-code by who's involved, exclude practices, prefix titles with the child's name, and publish the result back to whichever calendar app you actually look at on your phone.
That's what Tapestry does. Below is the path from "schedule lives in TeamSnap" to "everything shows up alongside everything else, the way I want it."
What you'll need
- A TeamSnap account with at least one team you're a member of (parent, player, or manager).
- A free Tapestry workspace.
- About five minutes.
Step-by-step
-
Grab the TeamSnap ICS URL
In TeamSnap, open Account → Settings → Calendar Sync (the exact label varies by TeamSnap version; on the web app you'll often find it under your profile menu as Settings → Calendar Sync or iCal feeds). For each team you belong to, TeamSnap exposes a "webcal://" or "https://" ICS subscription URL.
Copy the URL for the team you want to pull in. If it starts with
webcal://, change it tohttps://when you paste it into Tapestry. They're the same feed, but thewebcal://scheme only works in calendar apps.Multiple teams?
Each team has its own ICS URL. Add them as separate Sources so you can color them differently (kid #1's soccer in green, kid #2's hockey in blue) and pull them into different Views as needed.
-
Add the URL as a Source in Calendar
In Calendar, head to Sources in the sidebar. Under Add a source → ICS feed, paste the URL you copied from TeamSnap, give it a friendly name ("Mia — Soccer", "U10 White"), and pick a base color. Hit Add.
The first sync runs immediately. Open the calendar view and you'll see every game, practice, and tournament TeamSnap has published, in the color you picked.
-
Assign the source to a View
Sources are the raw feed. Views are how you compose them. Open the Views page, either edit an existing view ("Family", "Just the kids") or create a new one. Under Sources, check the new TeamSnap source. Save.
From now on, every event from that TeamSnap feed shows up in that view, alongside any other sources it includes.
-
Apply rules to clean up the noise
TeamSnap dumps everything: every practice, every game, every fundraiser, every "wear blue" reminder. Use Tapestry's rule engine to surgically reshape what shows up. Some recipes that work well:
- Color-code games versus practices. WHEN: source equals "Mia — Soccer" AND summary contains "Game". THEN: set color to a bold red. Add a sibling rule for practices in a softer green.
- Hide practices from the family view. WHEN: source equals TeamSnap AND summary contains "Practice" (case-insensitive). THEN: exclude from view. Practices stay in the kid-specific view, but disappear from the household whole-week glance.
- Prefix every event with the kid's name. WHEN: source equals "Mia — Soccer". THEN: prepend "Mia: ". When you're looking at four kids' worth of sports in one view, the prefix saves a click.
- Tag tournaments separately. Add a tag like "Travel" to tournament events so you can filter them in or out of "Just this weekend" views.
Rules run top-to-bottom on each event, and the live preview in the rule editor shows exactly what will and won't change before you save.
-
Publish the view back to your phone
Each View in Calendar has its own private ICS subscription URL. Copy it from the view's edit page, then add it as a subscription wherever you actually look at your calendar:
- Apple Calendar (Mac): File → New Calendar Subscription, paste the URL.
- Apple Calendar (iPhone): Settings → Calendar → Accounts → Add Account → Other → Add Subscribed Calendar.
- Google Calendar: Other calendars → + → From URL, paste, Add Calendar.
- Outlook: Add Calendar → Subscribe from web, paste, Import.
From this point on, every change you make to your rules, colors, or sources flows through to whichever phone calendar you set up. If you change the rule that hides practices, practices vanish from the published feed too. No app to reopen, no toggle to flip.
Common gotchas
"TeamSnap events aren't showing up after I added the URL"
Tapestry runs a sync every 15 minutes automatically and also on-demand when you hit the resync icon. If you don't see events right away, give it a minute or use the Resync button on the source row. If the source row shows an error chip, click it for the underlying message (usually a typo in the URL or a private feed that wasn't shared with you).
"The TeamSnap URL is a webcal:// link. Does that work?"
Yes, just change the webcal:// prefix to
https:// when pasting into Tapestry. The same
server serves both protocols.
"I have three kids on three teams. Three sources or one?"
Three sources. Each TeamSnap URL is one team's schedule. Separating them is what lets you color them independently and include only some in certain views (e.g. "Mia's grandparents" view: only Mia's soccer, not her brother's hockey).
"Can my partner see the same view?"
Yes. Invite them to your workspace via Settings → Invite, and the sources, views, and rules you've built are shared immediately. They can edit alongside you, and their own connected calendars (Google, work) can flow into the same views.
Where to go from here
- Compose a "Just the kids" view. Pull in all your kids' sources (school, sports, doctor) and exclude anything not labeled with their tags. The Kids' Activities walkthrough shows exactly how.
- Set per-event emoji + ages. Birthdays from Google Calendar can show "🎂 Mia's Birthday (8)" automatically once you set the start year. See the features overview.
-
Add school ICS feeds. Many districts publish
.icsURLs for early-release days, vacations, and event nights. Same drill as TeamSnap.
Ready to set this up? Open Tapestry and start with the Sources page. The first calendar you wire up is the hardest; the second is two minutes.