Privacy Policy
The short version. Sideline SideKick Tracker stores the account details of the people who sign in and the team information coaches enter, including a player roster, and, on a basketball team, the game stats entered by a scorer the coaches choose. That information is visible only to members of that team, and only to the extent the team's owner allows. It is never sold, never used for advertising, and never used to track anyone across other apps or websites. Other companies handle parts of it to run the service: Google (Firebase), which hosts it and runs sign-in, alerts and crash reports; Apple, which runs Sign in with Apple, alerts to your phone, map search, weather, Booth dictation and subscriptions; and Cloudflare, which runs our website and support email. The developer also gets private alerts in Discord, a chat service, when an account, a team, a game or a subscription changes, someone joins a team as a fan, or someone sends a suggestion; those alerts include team names and internal id numbers, the email address of a new account once the person signing up confirms they are 13 or older, the email address of a team's owner when the team is created or a game starts, the email address of a person who joins a team as a fan, and the words of a suggestion as its sender wrote them; they never add a person's name or a player's name from our records. The table below says when each one happens, where it goes and why. The app contains no advertising software and no third-party analytics software. About once a month it reports which scoreboard style it showed for each sport. That report is sent without any account or sign-in, and the server keeps only a count (section 12). Besides what people type in, it sends a crash and error report when something goes wrong, and a few things it needs to work, such as a token for game alerts; each is described below.
Sideline SideKick Tracker (shown on your device as "Sideline SideKick") is an iOS app for high school football coaching staffs. Coaches log plays during a game and get live stats and a postgame report. The app is developed and operated by Jeffrey Feely as an individual developer.
The app also keeps stats for basketball teams: someone on the bench taps each shot, rebound, foul and so on as it happens. Basketball is newer, and for now only accounts the developer has switched on can create a basketball team; anyone given a basketball team's code can join it. Everything on this page applies to both sports unless it says otherwise, and what is different for basketball is said where it comes up.
This policy explains what the app collects, why, and what you can do about it. The terms you agree to when you use the app are set out separately in the Terms of Service.
This policy covers the tracker only. Sideline Headset is a separate app — a wireless headset that lets a coaching staff talk to each other during a game. You sign in to it with the same account, but it stores different things and records no audio at all, so it has its own policy at sideline-sidekick.com/headset-privacy. Everything below describes the tracker.
Information the app collects
1. Account information
When a coach creates an account, the app stores:
- Email address
- Display name
- A user ID assigned by Firebase Authentication
This is used to sign you in, to show which staff members belong to a team, and in the developer's own alerts and records described under Who receives information. Passwords are handled by Firebase Authentication and are never stored by the app or visible to the developer.
How you sign in. There are three ways: an email address and a password, Sign in with Apple, or Sign in with Google. Firebase Authentication, a Google service, runs the sign-in for all three. With email, the app keeps the address and the first and last name you type (a first name is required). With Apple, Apple gives the app your name the first time you sign in, and either your email address or, if you choose Hide My Email, a private relay address Apple makes for you. With Google, Google gives the app your name and email address. The app never receives your Apple or Google password.
When you join a team. Everyone who joins with an invite code starts as a fan. The team stores your name, when you joined. Your join also carries the invite code you used, so the rules can check it. On a football team, we then remove the code from your record within moments. (Older records may still have it.) The team's owner and coaches can see what the team stores about you. Other fans cannot see that you joined. When you join, your email address is not put on the team. Coaching staff email addresses are kept in a contact list that only the team's owners can see.
Joining a basketball team works the same way, and its scorers (see About student athlete information) cannot see who joined either. There are three differences. A basketball team keeps the invite code you used on your record, and nothing removes it, as happens on a football team. A basketball team keeps no email addresses on the team, for fans or for staff. The one exception is a request to join a private team (see below), which holds the email address of the person asking until an owner answers it, for at most 30 days. And looking up a basketball team's code puts a yes-or-no note on your account's subscription record, described under Apple, so the app knows to show you basketball.
When you ask to join a private team. A team's owner, football or basketball, can make the team private, so that each new fan has to be let in. On a private team, entering the invite code sends a request instead of joining. The request stores your name, the email address your account signed in with, when you asked and which invite code you used. The team's owners can see these; its coaches and fans cannot. The app tells you before you ask that the owners will see your name and email address. Apart from the team's name, which the invite code shows, you see nothing of the team until an owner lets you in. If you are let in, you join as a fan as described above, the request is deleted, and your email address is not put on the team. If an owner declines, your email address is removed from the request at once; your name and when you asked stay, so the app can tell you it was declined. If an owner declines and blocks you, the request is deleted and your name goes on the team's record of removed members (see How long data is kept), so you cannot ask again until an owner lets you back. You can cancel a request at any time, and every request is deleted by a daily clean-up once it is 30 days old, whether or not anyone answered it. Owners are told that someone asked by a notification that carries the team's name and never your name or email address.
When someone offers to pay for a team. A coach with a subscription and a free seat can offer to take over paying for a team, football or basketball. The offer stores that coach's display name, when they made it, and when it ends (seven days later). The team's owners and coaches can see it, and so can the account that pays for the team now. That account gets a notification with the team's name and the offering coach's name. We delete the offer when it is accepted, declined or withdrawn. If nobody answers, it stops working after seven days.
2. Team information entered by coaches and scorers
Everything else in the app is content that a coach types in:
- Team name, short name, mascot (if the team has one) and team colors
- A team logo, and optionally an opponent's logo, if a coach chooses to add one
- A roster of players: first and last name, jersey number, position, graduation year (shown as a grade), and, only if a coach fills it in, the player's town
- A playbook
- Games, individual plays, and scores
- For a game, if a coach adds it, a list of the other team's players by jersey number and name. A coach can also record an opponent player's graduation year and positions. These are kept in a separate record that only the owner and coaches can read, and they are deleted with the game
- Booth notes, which the owner and coaches write during a game; each note shows the name of the coach who wrote it, until that coach deletes their account
- Team records, if a coach adds them: a stat (single game, season or career), the player who holds it (a player on the roster, or a name a coach types, often a former player), the number, the year or years and an optional note, and the same for the previous holder
Basketball teams. A basketball team stores:
- Team name, short name, mascot, team colors, season, boys or girls and level (varsity, JV and so on), and the team's rule settings, such as the foul count for the bonus and the number of timeouts
- A roster of players: first and last name, jersey number, position, and class year (shown as a grade). There is no town field.
- Games: the opponent's name, the date, home or away, a location typed as text (there is no map search for basketball), the score, whether a coach marked it a league game, whether it was a forfeit and which team it went to, and when a coach started the game (when they marked it live, or when the first stat was entered)
- Every stat the scorer taps: made and missed shots and free throws, rebounds, assists, steals, blocks, turnovers, fouls and timeouts. Each one records the quarter, the player (for the other team, only a jersey number), the account that entered it, when, and a random id made on that phone, described below. When a scorer records a timeout, they can add the time left in the period. That number stays on the timeout, and only the owner, coaches and scorers can see it. A scorer can also choose to track the other team's players. Each of those stats records only the player's jersey number, and only the owner, coaches and scorers can see them. In the staff box score, a name shows next to a number only if a coach typed it into the scouting sheet, and then only the owner and coaches see it
- For each game, which of your team's players played in each quarter, so a coach can follow a school's playing-time rule. It is a list of player ids kept with the game. Only the owner, coaches and scorers can read it (the rules refuse a fan). It is deleted when the game or the team is deleted
- For each game, a summary that every member of the team can read: the score by quarter, team fouls, timeouts left, and each player's surname (or first name, if there is no surname), jersey number and stat line, and where the team's most recent shot was taken from (one of fourteen areas on the court) and whether it went in, with no player named. Only the latest shot is kept; each new shot replaces it. The summary also lists the last five plays (made baskets, free throws made and missed, fouls, timeouts and the end of each period). A play names the team's player as the stat line does, by jersey number and surname, except a missed free throw, which shows the jersey number only. The other team's players appear only by jersey number. Each new play replaces the oldest, and undoing a stat removes it
- Scouting reports, which only the owner and coaches can see: an opponent's name; the other team's key players, by jersey number and name, with notes and tags such as "Shooter" or "Foul-prone"; the plays and defenses they run; free notes; and the name of the coach who last saved the report
- Team records, if a coach adds them: a stat (single game, season or career), the player who holds it (a player on the roster, or a name a coach types, often a former player), the number, the year or years and an optional note, and the same for the previous holder
The random id on each basketball stat is made by the app on that phone the first time it is needed and kept on the phone. It is not a hardware identifier and not an advertising identifier. It is there so that two phones keeping the book for the same game never overwrite each other's taps, and it goes on the game's summary too.
About logos. If a coach adds a logo for their team or for an opponent (on a basketball team, the team's owner adds both), the app asks iOS for that one image through the standard photo picker. iOS hands over only the picture you pick; the app has no access to the rest of your photo library. The app sends a resized copy of that image to our server, where it is re-saved as a plain image file, which removes its location and the other hidden data a photo carries.
It is then checked automatically by Google Cloud Vision (Google already provides the app's Firebase backend, described below), and reviewed by the developer before any member of the team sees it. Until it is approved, the only person who can see the copy on our server is the developer. An approved logo is stored with the team and is visible to the team's members, like the rest of the team's information. A rejected image is deleted 30 days after the decision, except where the law requires us to keep it. A short record of a rejected upload stays: who uploaded it, for which team or opponent, the automatic check's results and the reason, so the developer can deal with repeat uploads. An image still waiting for review stays until it is decided, or until the team or the uploader's account is deleted. When a logo is waiting for review, replaced or reported, the developer gets a private alert naming the team and whether it is the team's own logo or an opponent's (never the opponent's name or the picture). If someone on the team reports a logo, the developer reviews it and may remove it. Adding a logo is optional and the app works without one.
About scanning a scorebook. On a basketball team, a coach can take a photo of a paper scorebook's roster page, or pick one from their photos, to fill in an opponent's key players. The phone reads the page itself, with Apple's text recognition. The app does not save or upload the photo. While the scan screen is open, the phone keeps the page in memory so a small crop of the handwriting can sit next to a number the coach needs to check. It is thrown away when the screen closes. The coach saves only the jersey numbers and names they choose to keep, on the team's scouting sheet. Only the owner and coaches can see that sheet.
3. Crash and error reports
When the app crashes, or when something inside it fails quietly — a game that will not open, a save the server refuses, a roster import that comes back empty — the app sends a report so the problem can be found and fixed. Apart from the tokens, the device id and the app version check-in described in sections 4 to 6, the App Check proof in section 10, and the phone's random id and the time on each basketball stat (section 2), this is the only information the app collects that nobody typed in. (The weather requests in section 7 go from your phone to Apple, not to us.)
A report contains:
- what kind of failure it was, and where in the app it happened;
- the version of the app, the device model, and the iOS version;
- where in the database the record involved is kept, written as random ids rather than names; in the cases listed below, that includes an account id;
- a random identifier for that installation of the app, which is what lets the service count how many devices a problem affects rather than just how many times it happened.
No names go into a crash report. Never a player's name, jersey number, grade or position. Never an email address, a coach's or anyone else's. Never a team name, because naming a school names a set of children. Never an invite code. This is a rule written into the app's source code, not a matter of care at the time.
Crash reports are generally not tied to your name or your account. The app does not attach your account to them, so a crash on its own cannot be traced back to a named coach or a named team. Some error reports do include an account id, a random string of characters, because it is part of the database location of the record that failed. That happens in three cases:
- your phone tries to save its game-alert token and the server refuses it: the report includes your account id;
- you change your name and the server refuses the change, for your profile or for your entry on a team: the report includes your account id;
- the app finds a saved record it cannot read: the report includes that record's location, and for a team membership that location contains that member's account id.
Those reports go to Google's Firebase Crashlytics, like every other report, and the id is there so the problem can be found and fixed. Google keeps reports for about 90 days under its own policy (see How long data is kept). The installation identifier above is not your account, not your name, and not a device identifier used for advertising.
Two kinds of report go out, and both are covered by everything said above: an actual crash, and a quiet failure that did not crash the app. Apple counts the second kind as diagnostic information rather than crash data, so it is listed separately on the App Store, but the app treats them identically and neither one carries a name.
Both are handled by Firebase Crashlytics, part of the same Google Firebase service described below. Reporting is on in every released version of the app and there is no setting to turn it off.
4. Game alerts (push notifications)
The app can send game alerts to your phone: that a game has started, the score at the end of a quarter, each scoring play, and the final score, and a reminder 5 to 15 minutes before kickoff, if the coach entered a kickoff time. This is optional. iOS asks your permission the first time you open a team, and you can say no; nothing else in the app changes if you do.
Game alerts are sent for football games only. This version of the app sends no alerts about basketball games.
If you allow it, the app stores a notification token for that device with your account. A token is a long random string issued by Apple and Google's messaging service that lets a message be delivered to one phone. It is not your phone number, not an advertising identifier, and it identifies a device only for the purpose of delivering these alerts. It is stored with your account and is readable by nobody else on the team.
With the token, the app stores an id Apple gives the app for your device (Apple's identifier for vendor), so alerts go to the right phone once, along with the app version, the device type and when the phone last checked in. The id is not an advertising identifier. Like the token, it is readable only by your account.
Alongside it, the app stores which alerts you want from each team — five on/off switches. You can change them on the team's Alerts screen, and you can turn alerts off entirely in iOS Settings at any time.
What an alert says. A scoring-play alert says which team scored and how, followed by the score, for example "Q2 — RBT Touchdown on a 12-yd pass. RBT 14, HAN 7." It names players only if the team's owner turns on player names. With last names, it names the players by last name, for example "Q2 — RBT Touchdown, Halvorsen on a 12-yd pass from Webb", and the other team's players by the last word the coach typed or by jersey number. With full names, it carries the same sentence the app shows on the play-by-play, which names the player who scored, and when the other team scores, their scorer as the coach typed it. Player names are off until the owner turns them on, and a team set to Middle school or Youth never has player names in alerts. Alerts are delivered through Apple's notification service to every member of the team who has that alert switched on; what they say is information every member of the team can already see in the app, and it is not published anywhere else. The reminder goes out once per game, 5 to 15 minutes before kickoff. It names both teams and says the game kicks off soon. It names no player. Tapping it opens the game so you can follow it on your lock screen. A team owner can switch alerts off for the whole team, and a coach can mute them for a single game.
The token is removed when you sign out on that device and when your account is deleted. If an eleventh device registers, the oldest of your ten is removed. We keep at most ten devices for a person. The alerts themselves are sent by a server-side function. To send one, it reads the game's status and scores, the team's name, the team's member list, each member's alert settings and device tokens, and, when alerts use last names, those players' names from the roster. For the reminder, it also looks for games that kick off in the next 5 to 15 minutes. It never reads the playbook or the individual plays. To send each alert only once, the server keeps a small record for each game and kind of alert. It holds the team id, the game id and the time it was sent. It holds no names.
5. Lock-screen scoreboard
If a team's owner turns on the lock-screen scoreboard, members of the team (or only its coaches, if the owner chooses) can follow a game on their lock screen. When you follow, the app stores a token for that scoreboard with your account so our server can update it. The token belongs to that one game. It is deleted when the game ends, when you stop following, and when your account is deleted. A newer follow also replaces an older one: if you follow the same game on another device, or follow more than twenty games, the oldest is removed. For a football team the scoreboard shows the score and, if the owner chooses, the down and distance, and after a score a short line about it, such as "Touchdown, 12-yd pass, PAT good". It names players only if the team's owner turns on player names (last name only, or full name). Player names are off unless the owner turns them on, they are never shown for a team set to Middle school or Youth, and they are only the names of players on the team's own roster for the team's own scores. Opposing players are never named. Like game alerts, the scoreboard's text is delivered through Google's Firebase Cloud Messaging and Apple's push notification service. Team logos on the scoreboard are copied onto your phone so the lock screen can show them.
For a basketball team the scoreboard shows the score, the period, each team's fouls, which team is in the bonus, and the latest play by jersey number, such as "#23 3-pointer". It never shows a basketball player's name and it has no game clock. The owner's two switches (whether the scoreboard is on, and whether the whole team or only the coaches can follow) work as they do for football.
Starting the scoreboard by itself. On an iPhone with iOS 17.2 or later, a person can turn on "Show every game on my lock screen" in Account. It is off until you turn it on. When it is on, the app stores with your account a token from Apple that lets our server start the scoreboard on that phone, and the phone's notification token. We keep at most three phones for a person. About 30 minutes before each scheduled game on a team you belong to, our server starts the scoreboard on your lock screen, with a short notification and no sound, such as "RVB vs NVT". It does this only if the team's owner has the lock-screen scoreboard on and you are among the people allowed to follow, and not for a practice, a game that has started or finished, or a game a coach has muted. The start message carries the same team information a scoreboard you follow yourself uses: both teams' names and short names, the kickoff time, the team's color, and, for a football team, its mascot if it has one. It is delivered through Google's Firebase Cloud Messaging and Apple's push notification service. To make a scoreboard you swipe away stay gone for that game, the server keeps a short note for each game it started for you: your account id, the team and game ids, and when it started. The note is deleted about 12 hours after the game's scheduled start. Turning the switch off, or signing out on that phone, deletes that phone's tokens (if the phone is offline when you turn the switch off, the app tries again the next time it opens, and our server deletes any token that has stopped working the first time it tries to use it), and deleting your account deletes the tokens and the notes. A scoreboard that started this way is then kept up to date like one you followed, with the token for that game described above. If the scoreboard started itself, the app does not also send the pre-game reminder for that game.
6. App version
Once a day when you open the app, it records which version of the app your phone is running and the date, with your account. We use this to know when everyone has updated before we stop supporting an old version. It is not used to track what you do in the app.
7. Game-day weather and field locations
A coach can set where a game is played by searching Apple Maps from the game screen. The search runs through Apple's Maps service: it sends Apple the text the coach types and, so that results land near the team, the location of a field the team has already picked. When the coach picks a place, the app stores its name and its map coordinates (latitude and longitude) with the game. Like the rest of the schedule, they are visible to the members of that team who can see that game, fans included. They are the location of a football field, not of anyone's phone. A basketball game offers Directions from the schedule and from a fan's game page; it hands the place name the coach typed to Apple Maps when someone taps it.
When a game is coming up within about the next week, the app on each team member's phone sends that game's field coordinates and its kickoff date and time to Apple's weather service (WeatherKit) to get the forecast for the game. The request carries the field and the time, not your name, your email address or the team's name. Apple says the location in these requests is used only to provide the forecast, is not associated with personally identifiable information, and is not tracked between requests. The forecast is kept in the app's memory on your phone for a short time and is not stored in our database.
The game screen can also offer directions to the field. Tapping Directions hands the field (its map location, or the place name a coach typed) to Apple Maps on your phone, which works out the route under its own location permission. Sideline does not see where you are and receives nothing back.
The app does not ask for, read or store your phone's location for any of this. Typing a place without picking a result from the search saves the text only, with no coordinates and no forecast. Clearing a game's location removes its coordinates too.
The app does not collect your location or your phone's location, contacts or health data, or device identifiers for advertising. The only locations it stores are the fields games are played at, described in this section.
8. Microphone and Booth dictation
In the Booth, which only a team's owner and coaches can open, a coach can tap the microphone and speak a note instead of typing it. The first time, iOS asks permission to use the microphone and speech recognition, and you can say no. Apple's speech recognition turns the words into text. When your iPhone or iPad can do that on the device, the app has it done there, and the audio stays on the device. On a device that can't, the audio goes to Apple's servers to be turned into text, under Apple's privacy policy. The app does not save or upload the audio. The words appear in the note box, and only a note you choose to post is saved, as a Booth note your coaching staff can read.
9. Adding a game to your calendar
If you tap Add to Calendar, your phone's own New Event screen opens with the game filled in, and you choose the calendar and whether to save it. The app does not ask for calendar permission, does not read your calendar, and nothing about it comes to us.
10. Checking that the app is genuine (App Check)
To keep fake apps and scripts away from team data, the app uses Firebase App Check. In released versions, the app asks Apple's App Attest service (or Apple's DeviceCheck, on a device that cannot use App Attest) to vouch that it is the real app on a real Apple device, and Firebase checks that proof before it answers. It is used to tell the real app from an imitation.
11. Suggestions
If you send a suggestion from the app (from Your teams, or from Account under "Have suggestions or feedback?"), we store what you wrote, your account id, the app version, which of those two places you sent it from, and when. Your name and email address are stored with it only if you turn on "Include my name and email so we can reach out"; that switch is off each time the form opens. The email is the address you sign in with, and the name is the one shown in the form, which you can change before you send.
Only the developer can read suggestions, in the developer's own admin tools. Nobody on your team can, and you cannot read one back in the app. The developer's Discord alert carries the suggestion's id and the words you wrote, but not your name, email address or account id, even when you include your name and email (see Who receives information). A suggestion is kept until you delete your account, or until the developer deletes it by hand, for example because you asked; it has no other end date. Deleting it, or your account, does not remove the copy of its words in the developer's Discord alert: that copy is deleted with the other alerts, within about two months of being sent.
12. Which scoreboard style your phone shows
Each person picks how the scoreboard looks for each sport, and that setting is stored on their phone, not on our server. Once a month, if your phone showed a sport's scoreboard that month, the app tells our server which style it showed and whether someone picked it or it is the style the app starts with. The server adds one to a count for that month, sport and style.
The report is sent without any account or sign-in: it carries only the sport, the style, whether it was picked and the month, with the App Check proof (section 10) so the server can turn away requests that do not come from the app. The server keeps only the count. The count does not include an account, a team, a phone's id or an IP address, and nothing in it records whose phone a number came from. Like every request to our server, the report also reaches Google's own request records for the service, which note the time and the address it came from, and those are kept for a limited time. The example teams in the app do not send a report. Your phone keeps a note of the last month it sent, so it normally sends one report a month for each sport; deleting and reinstalling the app clears that note, so a phone can then count again in the same month. The developer reads the counts in the admin tools to decide which scoreboard styles to keep; the app cannot read them. Because a count does not record whose phone it came from, deleting your account does not change it.
About student athlete information
This is the part that matters most, so it is stated plainly.
The roster in this app contains information about student athletes, who are minors. The roster and the playbook are entered by the school's adult coaching staff as part of their coaching work.
Basketball scorers. On a basketball team, the owner or a coach can make any member of the team a Scorer, for example a student manager, to keep the book during games. A Scorer enters the game's stats and can see the roster, the team's games and every stat entered, and can send a game's report from their own phone. A Scorer cannot change the roster, the team's settings, its staff or billing, cannot create or delete games, and cannot see scouting reports or who has joined as a fan. Creating an account in the current app means confirming you are 13 or older (accounts made before that was added, in October 2026, were not asked); the app does not ask for a birth date or check anyone's age. Apart from a Scorer, players do not enter information about anyone.
A player or a parent may be given the team's invite code by the coaching staff so they can follow the game and see statistics. They join in a restricted "Fan" role: read-only, no access to the playbook, and no ability to add or change any information about anyone. Creating an account takes an email address and a password, or Sign in with Apple, or Sign in with Google.
Who can see it. Roster information is visible only to people the team's owner has admitted to that team in the app, and to the developer as described under Access by the developer below. That is the coaching staff, and on a basketball team any scorers. If the owner chooses to share the team's invite code more widely, it also includes parents and players, who join in the restricted "Fan" role described above. A Fan can see the score, the play-by-play and player statistics. A Fan cannot change anything, and cannot see the team's formation or play names. The owner of a football or basketball team can also make it private, so that nobody joins with the invite code until an owner lets them in.
On a basketball team, a Fan sees the score, each game's summary with every player's stat line, the team's most recent shot (an area and whether it went in), the last five plays, and season stats built from those summaries, but not the rest of the game's stats entry by entry, or which quarters a player played, which only the owner, coaches and scorers can see. Scouting reports are seen only by the owner and coaches.
Every member of the team, fans included, can also see the roster (including a player's town, if the staff entered one) and any list of the other team's players a coach added for a game. Those lists name other schools' students, entered by this team's staff. The other team's graduation years and positions, where staff entered them, are not part of that list. Only the owner and coaches can see them. On a basketball team, the other team's players show up in the team's stats by jersey number, and only the owner, coaches and scorers can read those. A name appears only if staff typed one on a scouting sheet, which only the owner and coaches can see.
Team records are off unless the team's owner turns them on, and the owner can turn them off again at any time; while they are off, nobody on the team sees them, and what was entered is kept. When they are on, the owner and coaches see every record. A Fan sees only the records a coach has switched on, and a record can name a former player who is no longer on the roster. Fans of a middle school or youth football team, or of a basketball team whose level is Other, see no records at all.
It is the team owner's decision who receives the invite code, and the owner can remove any member at any time from the Coaches screen. Schools should treat the invite code as they would any other roster information. On a basketball team every member can see the team's invite code and send it on, so treat it as you would any roster information.
Roster information:
- is visible only to members of that team in the app, as described above, and to the developer as described under Access by the developer;
- is never sold or rented to anyone;
- is not given to other companies, except Google, which stores it for us, and the Apple and Google services that deliver score alerts and the lock-screen scoreboard, which can name a player (sections 4 and 5);
- is not included in the developer's private Discord alerts, which carry no roster and no player names taken from one (see Who receives information);
- is never used for advertising, marketing, or profiling;
- is never used to build a profile of a student or to track anyone across apps or websites.
Coaching staff are responsible for entering only the information they need and for following their school or district's own policies about student information. We recommend entering the minimum needed to run the game: a name, number, position, and grade.
Access by the developer
Sideline SideKick is run by one person, and he can see everything in it. That is the plain truth of a service this size, and it is better said outright than buried. He can list every team and every account, open any team's roster, playbook, games and statistics, and export any of it — whether or not anyone has asked him to, and whether or not there is a problem.
He does this to run the service. In practice that means:
- Checking that it works. Looking across teams and accounts to confirm that games are syncing, imports are landing, statistics are adding up and nothing has quietly broken — including on teams that have not reported anything wrong.
- Answering a support request. When a coach asks for help with something specific, and looking — or making the fix himself — is the way to answer it.
- Fixing and maintaining data. Correcting records a bug has damaged, repairing a team's setup, migrating data when the app changes shape.
- Administering accounts and teams. Changing somebody's role, removing a member, closing an account, and deleting teams and accounts that are no longer in use — including deleting old or canceled customers.
- Subscriptions and billing. Seeing which accounts are subscribed, and putting right anything that has gone wrong with a purchase.
- Reading suggestions. Reading the suggestions people send from the app (section 11), and writing back to anyone who chose to include their name and email.
- Reviewing logos. Looking at each logo a coach uploads, before anyone on the team sees it, to approve or reject it, and looking again at any logo someone reports.
- Security and abuse. Investigating a report, or something that looks wrong.
- Where the law requires it, such as a valid legal order.
What that access is never used for. Advertising, marketing, profiling, selling, training any machine-learning system, or building a picture of a student. Those are not things this service does, and broad access does not change it.
Nobody else has this access. There are no other staff and no contractors. The companies that run parts of the service, and the developer's private Discord alerts, receive only the pieces listed under Who receives information, such as the field location and kickoff time sent to Apple for the weather forecast (section 7). Where that changes, this page changes with it.
How that access is held
The developer uses administrative tools to do this — to browse accounts and teams, to make the changes described above, and to remove accounts that are no longer in use. Those tools run only on his own computer. There is no admin website, and no address on the internet that reaches your team's data.
That is worth spelling out, because it is the part most services cannot say. There is no administrator login page for somebody to find, guess or attack, and no hosted console that could be breached and hand over every team at once. If that ever changes — if administration moves to something reachable over the internet — this page will say so before it does.
Passwords are never part of this, in any of the situations above. They are handled by the sign-in provider and are not stored by the app or visible to the developer. There is also no way for the developer to sign in as you or to use the app as you — support is done by looking at data directly, not by taking over an account.
If you would rather your team's information were not held on these terms, you can delete your team and your account at any time using the steps under Deleting data.
What the app does not do
- No record of what each person does in the app. The app does not record which screens you open or how long you spend in it. The one piece of usage information it sends is a monthly report of which scoreboard style a phone showed. That report is sent without any account or sign-in, and the server keeps only an anonymous count of it (section 12).
- No advertising, and no ad networks.
- No advertising or tracking SDKs. The app never reads the device's advertising identifier, and no data is ever sent to a data broker.
- No selling of data. It goes to other companies only as listed under Who receives information: the Google and Apple services the app runs on, Cloudflare for the website and support email, and Discord for the developer's own alerts.
- No tracking of users across other apps or websites.
The server does keep a few running counts for the developer: how many accounts have been created and deleted, how long an account or a team lasted when it is deleted, which game in the team's history a game is when it starts, and how many fans a team has when someone joins it as a fan. These come from the events listed under Who receives information, not from watching what you do in the app. The anonymous monthly scoreboard style count in section 12 is different: it comes from the app itself.
Crash and error reports, the notification token and device id if you turn game alerts on, the lock-screen scoreboard token if you follow a game, the daily app version check-in, the app version and the screen stored with a suggestion (section 11), the App Check proof (section 10) and the phone's random id and the time on each basketball stat (section 2) and the monthly scoreboard style count (section 12) are the things the app sends that nobody typed in. When a game is coming up, the app also asks Apple's weather service for its forecast, using the field's coordinates and the kickoff time (section 7). When a coach dictates a Booth note on a device that cannot recognize speech on its own, the audio goes to Apple (section 8). What each contains is described above.
Where the data is stored
The app uses Google Firebase: Firebase Authentication for sign-in (including Sign in with Google), Cloud Firestore for account and team data, Cloud Functions for the server-side work described on this page, Firebase Cloud Messaging to deliver game alerts, Firebase Crashlytics for the crash and error reports described above, and Firebase App Check (section 10). All of it runs on Google Cloud infrastructure, and the account and team databases (one for football, one for basketball) are stored in the United States. Uploaded logos are also checked by Google Cloud Vision, part of the same Google Cloud service, as described under "About logos". Google acts as a hosting and processing provider for this data; it is not shared with Google for Google's own advertising or marketing. You can read how Google handles data in that role at policies.google.com/privacy and firebase.google.com/support/privacy.
Apple
The app uses these Apple services:
- Sign in with Apple, if you choose it. Apple runs the sign-in and gives the app your name the first time, and your email address or a private relay address.
- Push notifications. Apple's push notification service delivers game alerts and lock-screen scoreboard updates (and, if you turn it on, the start of each game's scoreboard) to your phone, using your device's token. The alert text (the team names, the score and the scoring line) passes through it.
- Weather (WeatherKit). Your phone sends the field's coordinates and the kickoff date and time to Apple's weather service. It does not send your phone's location, your name or the team's name (section 7).
- Apple Maps. Field search sends Apple the text the coach types and, so results land near the team, the coordinates of a field the team already picked. Directions hands the field to the Apple Maps app on your phone (section 7). Neither stores your team's information for us; the field name and coordinates a coach picks are stored with the game in Cloud Firestore like the rest of the schedule.
- Speech recognition for Booth dictation: on the device when it can be, otherwise on Apple's servers (section 8).
- App Attest and DeviceCheck, to show the app is genuine (section 10).
- The App Store and subscriptions. A coach subscription is bought and billed by Apple. Apple sends our server notices when a subscription starts, renews, is canceled, expires, fails to renew or is refunded, and the server keeps a record with your account: the product, Apple's transaction id, the dates and the status. The app and our server do not receive your card or other payment details. One subscription covers football and basketball teams, and the teams it pays for are counted together. The same record can also hold two yes-or-no notes about basketball: whether the developer has switched basketball on for your account, and whether your account has looked up a basketball team's code (set by our server; for someone with no subscription it can be the only thing on the record). Only your account can read the record.
Apple handles this information under its own privacy policy, at apple.com/legal/privacy.
Who receives information, when, and why
This is every place information goes outside the app's own database.
| Who | When | What | Why |
|---|---|---|---|
| Google (Firebase) | Whenever you use the app | Your account, the team's data, sign-in, alerts on their way to phones, crash and error reports, App Check, the monthly scoreboard style count | To host and run the service |
| Google Cloud Vision | When a coach uploads a logo | The logo image | An automatic check before the developer reviews it |
| Apple | When you sign in with Apple, get an alert, see a forecast, search for a field, dictate a note, open the app (App Check) or subscribe | As listed under Apple above | To provide those features |
| Cloudflare | When you visit the website, open a join link, or email support | Your IP address and the pages you ask for, the invite code in a join link, and support emails | To serve the website and pass on support email (Our website and email) |
| Discord, a private server the developer runs | On each of the events in the next table | As listed in the next table; never a player's name, the playbook, plays or an invite code | To run and support the service |
The developer's own alerts. When one of these events happens, the server posts a short message to a private Discord server the developer runs, and keeps a record of the event in the developer's own admin records in the app's database (see How long data is kept). They exist so the developer knows when someone signs up, joins a team as a fan, or leaves, when a team is set up or starts using the app, when billing needs attention, when a logo is waiting for review, and when someone sends a suggestion. Discord handles the messages under its own privacy policy, at discord.com/privacy.
| When | What the alert includes |
|---|---|
| Someone creates an account in this app (a coach, a parent or a player) and confirms they agree to the Terms and are 13 or older | That an account was created, the running count of accounts, sign-in method, account id and the email address the account signed up with (for Sign in with Apple's Hide My Email, Apple's relay address), with a [TEST] label on the developer's demo and test accounts; never the name. For someone who chooses No thanks instead, this alert is never posted: their new account is deleted, which posts only the account-deleted alert below, with the account id and no email address. The email stays in Discord only until the message is deleted, more than 30 days later (see below); it is not kept in the developer's admin records, which note when the account was created and when the sign-up was confirmed. A new account made in Sideline Headset is noted in the admin records the same way but is not posted to Discord |
| Someone joins a team as a fan | That someone joined a team as a fan, the team's name and short name, how many fans the team has now, the fan's account id, the email address on the fan's account (for Sign in with Apple's Hide My Email, Apple's relay address) and the team id, with a [TEST] label on the developer's demo and test accounts; never the fan's name, the invite code, or anything about players |
| An account is deleted | That an account was deleted, how long it lasted, how many accounts are still open and the account id, with the same [TEST] label; never the email address or name |
| A team is created | Team name, short name and season, the owner's account id and the email address on the owner's account (for Sign in with Apple's Hide My Email, Apple's relay address), whether the owner has a subscription and how many teams it is using, team id; never the owner's name or the invite code |
| A team is deleted | Team name, short name and season, the owner's account id, how long the team lasted, how many teams the owner has left, team id; never the owner's email address or name |
| A game or practice starts | Team name and short name, which game in the team's history it is, whether it is a game or a practice, home or away, the owner's account id and the email address on the owner's account (the team's owner, who is not always the person who started the game), team and game ids, with a [DEMO] label on the developer's demo and test teams; never the opponent's name or the owner's name |
| A subscription changes: a trial starts, it is bought, renews, auto-renew is turned off or on, it expires, a payment fails, or it is refunded | The product, the end or paid-through date, and for a renewal or refund the amount, account id; never the subscriber's email address or name, or a team |
| A logo is waiting for review, is replaced, or is reported | Team name and short name, whether it is the team's own logo or an opponent's, the role of whoever reported it, and the team id and a review or report id; never the opponent's name or the picture |
| Someone sends a suggestion from the app | That a suggestion arrived, its id, and what it says (cut short if very long); never the sender's name or email address, or their account id. The developer's admin record of the alert keeps the suggestion id and the account id. Suggestions from the developer's demo and test accounts, and any past ten from one account in a day, are recorded but not posted |
These alerts are deleted from Discord automatically once they are more than 30 days old, by a sweep that runs on the 1st of each month, so an alert stays in Discord for no more than about two months. Alerts posted before that automatic deletion began, on 12 October 2026, are being deleted by hand. Logo review messages are not part of the automatic deletion: each one stays in Discord and is updated with the decision once the review is handled. Our record of each alert keeps the Discord message number so the message can be deleted; it is not personal information. The email addresses in the new-account, fan, team and game alerts are in the Discord message only: the developer's admin records of those alerts do not keep them.
A basketball team sets off the same three alerts, with fewer details. When a team is created: the owner's account id, the team id, whether the owner has a subscription and which seat it uses. When a game or practice is created: the team id, the game id, the owner's account id, whether it is a game or a practice, and its number in the team's history. When someone joins as a fan: the fan's account id, the team id and how many fans the team has now. None of these includes a team name, an opponent, a person's name, an email address or an invite code. A fan's alert is posted at most once an hour for each fan and team. The developer's demo and test accounts are recorded but not posted. Creating or deleting an account and a change to a subscription set off the same alerts whichever sport the account is used for.
Access to team data is limited to signed-in users who are members of that team, and what each member can see depends on the role the team owner gave them. These limits are enforced on the server by Cloud Firestore security rules, not only in the app.
Data stored on your device
The app keeps an offline copy of your team's data on your device so it keeps working on a field with poor reception. Changes made offline sync back to the cloud when a connection returns. Deleting the app from your device removes that local copy; it does not delete the data stored in the cloud. Players you mark as "My player" are saved only on this device and never sent.
On a basketball team, where on the court a shot was taken, if the scorer marks it, is saved on the phone that marked it. The area of the team's most recent shot, and whether it went in, is also put on the game's summary that every member can read (no player is named); older shots are not sent. The email addresses you type as recipients for a basketball postgame report, and the key players, notes and record you add to one, are also kept only on that phone; they leave it only inside a report you send yourself.
How long data is kept
Team data is kept for as long as the team exists, and there is no automatic expiry. That is deliberate. A coaching staff wants last season's games, and the season before that — a policy that quietly deleted a team's history after some number of months would break the thing the app is for. So team data is not deleted on a timer. The two things that are, a rejected logo's picture and a request to join a private team, are listed below.
What that means in practice is that you decide how long information is kept, not us:
- Team and roster information is kept until someone deletes it — a player, a game, or the whole team — using the steps in the next section. Inactive teams are not purged; a team nobody has opened in two years is still there when a coach comes back to it.
- Account information is kept until you delete your account. Dormant accounts are not removed automatically.
- Suggestions you send from the app are kept until you delete your account, or until the developer deletes one by hand (email [email protected] to ask). They are not deleted on a timer.
- Deleting is immediate in the app. When you delete a player, a game, a team, or your account, it is removed from the live database right away. Nobody on the team can see it again, and the app cannot bring it back. Copies stay in backups for up to 98 days, and a few short records stay after a deletion; both are described below.
- Rejected logos lose their picture 30 days after the decision, except where the law requires us to keep one. A short record of the rejected upload stays, with no set end date. A logo still waiting for review stays until it is decided, or until the team or the uploader's account is deleted. If an account was barred from uploading logos, that record stays even after the account is deleted. An approved logo is kept with the team like the rest of its information.
- Requests to join a private team, with the name and email address in them, are deleted by a daily clean-up once they are 30 days old, answered or not. They go sooner when an owner lets the person in, when the person cancels or dismisses one, when an owner blocks them, when the account is deleted, and when the team is deleted. A declined request loses its email address at once, and so does a request that is turned away because too many are already waiting on that team.
- Notification tokens are kept while you stay signed in on that device with alerts allowed. Signing out removes the token for that device; deleting your account removes every token and every alert preference stored with it.
- Lock-screen scoreboard tokens last only for the game you followed, and are deleted when it ends or you stop following.
- The tokens that start the scoreboard by itself (section 5) are kept until you turn that switch off, sign out on that phone or delete your account. The short note that a game's scoreboard was started for you is deleted about 12 hours after the game's scheduled start.
- The app version check-in is kept with your account and replaced each day. Signing out on a device removes it for that device.
- Monthly scoreboard style counts are kept until the developer deletes them; there is no automatic expiry. They are not kept with any account, so deleting an account does not remove a count it added to.
- Field locations (a game's venue name and coordinates) are part of the game and are kept and deleted with it. Weather forecasts are not stored by us; your phone keeps one for a short time and then fetches a fresh one.
- Crash and error reports expire too. Google keeps them in Firebase Crashlytics for about 90 days under its own policy, then deletes them. As described above, they contain no names, and only the error reports listed in section 3 include an account id.
- The developer's admin records (the records of the alerts listed under Who receives information) have no set end date. They hold ids, dates, counts and the kind of event, and the name and short name of a team that still exists, but not anyone's email address or name. After an account is deleted, they still hold its account id, its sign-in method, when it was created and deleted, and its subscription events. After a team is deleted, they still hold its season, its owner's account id, how long it lasted and the games it started, but not its name or short name. Records made before 12 October 2026 can still hold an email address, a name or an opponent's name; those are being removed. Logo alert records are deleted with their team. The small records that an alert was sent for a game (team id, game id and time) have no set end date.
- Subscription records (the product, Apple's transaction id, the dates and the status), and the notices Apple sent about the subscription, stay after your account is deleted, so billing questions and refunds can be answered. There is no set end date yet. The two yes-or-no basketball notes on that record (see Apple) stay with it.
- A deleted team leaves a note of which account asked for the deletion and when, so nobody else can take over the deleted team's id.
- Removed members. When an owner removes someone from a team, or declines and blocks a request to join it, the team keeps a record with that person's name, so they cannot rejoin without an owner's OK. It stays until an owner lets them back, the team is deleted, or that person deletes their account, which removes the record. On a basketball team the same applies: the record goes when an owner lets the person back (Staff and fans, "Allow rejoin"), when the team is deleted, or when that person deletes their account.
- Basketball game summaries keep the surname and jersey number of each player who played in that game, even if the player is later deleted from the roster, so an old box score still reads correctly. They are deleted with the game or the team. So is the record of which players played in each quarter.
- Basketball stats and scouting reports belong to the team. Each stat keeps the account id of whoever entered it. A scouting report shows the name of the coach who last saved it; deleting that coach's account removes the name. It also goes when someone else saves the report, or the report or the team is deleted.
- Booth notes and plays belong to the team. A Booth note shows the name of the coach who wrote it. When that coach deletes their account the name is removed from the note and the note stays, and a play keeps the account id of whoever entered it. Ask the team's owner, or email us, to have a note removed.
Backups. The developer keeps backups of both databases, football and basketball, in the app's own Google Cloud account, so the service can recover from a mistake or a failure. For each, daily backups are kept for 14 days and weekly backups for 98 days. Either database can also be rolled back to any point in the last 7 days. Something you delete stays in those copies until they expire, so it can remain in backups for up to about three months (98 days), and then it is gone. The developer restores from a backup only when the service itself needs repair, not to bring back something a person chose to delete. Deleted data is not accessible through the app.
If the app is ever discontinued, notice will be posted on this site and sent to the email addresses on active accounts, with time to export your reports before team data is deleted.
Deleting data
- Delete a player. On the Team tab, open the roster, swipe the player's row and choose Delete. This removes them from the roster. On a basketball team, open the player on the roster and choose Delete player (for anyone who has played, the app suggests Mark inactive instead); game summaries keep the player's surname and jersey number, as described above.
- Delete a record. On the Records screen, open the record and choose Clear this record. Records are deleted with the team.
- Delete a game. On the Games tab, swipe or press and hold a game and choose Delete. Every play and score logged in that game, and its field location, is deleted with it. A basketball game is deleted by the owner or a coach from the game's edit screen, with every stat and its summary.
- Delete a whole team. On the Team tab, under "Danger zone", choose Delete this team and type the team's name to confirm. This permanently deletes the team for everyone on it, along with its roster, playbook, and every game, play and score. Only an owner of the team can do this, and it cannot be undone. The short records listed under How long data is kept stay afterwards. For a basketball team, Delete this team is at the bottom of the team's Settings, with the same typed confirmation; it deletes the roster, every game, stat and summary, and the scouting reports.
- Leave a team. If you are not the owner, the same section offers Leave this team. This removes you from the team and leaves the team's data intact for the rest of the staff.
- Delete your account. On the Team tab, under "Danger zone", choose Delete my account and confirm it is you: type your password, or, if you sign in with Apple or Google, sign in with them once more. The server goes ahead only if that sign-in happened in the last five minutes. This deletes your sign-in and your profile, removes you from every team you are on, and deletes any notification tokens, lock-screen scoreboard tokens (including the tokens and notes that start the scoreboard by itself), app version check-ins and alert preferences stored with the account, along with any logo uploads still waiting for review, any logo reports you filed, and any suggestions you sent (with the note of when you last sent one). The short records listed under How long data is kept stay afterwards. If you are the only owner of a team, the app will ask you to make another coach an owner or to delete that team first. Otherwise the team would be left with nobody able to administer it. The same deletion also removes you from every basketball team, deletes what is stored under your account in the basketball database (including requests to join a private team, removed-member records and the "last saved by" name on scouting reports), and deletes any purchase records kept for an earlier basketball app; the same only-owner rule applies to basketball teams. If the basketball records cannot be checked at that moment, nothing is deleted and the app asks you to try again; if a later step fails, your sign-in is kept so that trying again finishes the job.
If you would rather not do it yourself, or you cannot sign in, email [email protected] from the address on the account and ask for deletion.
You can also email the same address to ask what information is stored about your account or to have it corrected.
Children
The app is built for high school coaching staffs. Rosters, playbooks and team settings are entered by adult coaches; on a basketball team, a coach can also let a team member, such as a student manager, enter game stats as a Scorer (see Basketball scorers). It is not directed at children under 13, and we do not knowingly collect information from anyone under 13.
High school players may be invited by their coaching staff to follow their own team in the read-only "Fan" role. A player who does so creates an account with an email address and a password, or with Sign in with Apple or Sign in with Google, and a name goes on the account. Their coaches can see that name and when they joined. As with every new account, the developer's admin records and, once they confirm as described below, private Discord alerts note that an account was created and, when they join a football team, that a fan joined it; these carry their account id, not their name. The alert that an account was created is sent only once they confirm they are 13 or older, and it includes the email address it signed up with. The alert that a fan joined a team includes the email address on the account too. Both are deleted from Discord automatically once they are more than 30 days old, and the email address is not kept in the admin records. If they choose No thanks instead, that alert is never sent: their new account is deleted, which sends only the account-deleted alert, with the account id and no email address (see Who receives information). The app does not ask for a birth date. Beyond that, the app records the daily app version check-in described in section 6 under their account, and, only if they allow game alerts, follow a game on the lock screen or turn on starting it by itself, the notification token or scoreboard token described in sections 4 and 5, like any other fan. As fans, they cannot enter or change any information about themselves or anyone else. A player whom a basketball team's owner or coach makes a Scorer can enter that team's game stats, as described under Basketball scorers. A player who asks to join a team whose owner has made it private sends that team's owners their name and the email address on their account. The owners can see that email address until they answer the request or the player cancels it, and for no more than about 30 days; if an owner blocks the request, the player's name stays on the team's record of removed members (see When you ask to join a private team). If a team's owner turns on player names, a player's last or full name can appear on the lock-screen scoreboard of the people following that game (the team's members, or only its coaches) and in score alerts to the team's members. Player names are off until the owner turns them on, and teams set to Middle school or Youth never show player names there or in score alerts. If you believe an account was created by someone under 13, or that roster information was entered that should not have been, email [email protected] and it will be removed.
Our website and email
sideline-sidekick.com is hosted by Cloudflare. Like any web host, Cloudflare handles your IP address and the pages you ask for, to deliver them and to protect the site from attacks. The site has no advertising or analytics scripts of ours; Cloudflare may add its own scripts to protect the site. A join link (sideline-sidekick.com/join/ followed by a code) carries the team's invite code in its web address, so the code passes through Cloudflare like any page address. Treat a join link like the code itself.
Email you send to [email protected] is received by Cloudflare's email routing and passed on to the developer's own mailbox. Sign-in emails, such as confirming your address or resetting a password, are sent for us by Firebase, a Google service.
Changes to this policy
If this policy changes, the updated version will be posted on this page with a new effective date.
Contact
Jeffrey Feely
[email protected]