Privacy policy
1. Who are we?
SquashAnalyzer is an app for iPhone and Android, developed by Gerd-Jan van Gils. The app is available on the Apple App Store and as a test version via TestFlight and Google Play, and can be reached at www.squashanalyzer.com.
For questions about this privacy policy: info@squashanalyzer.com
2. What data do we process?
SquashAnalyzer stores the players and matches you enter on your device. When you use online features, data is processed for them as described below:
- Player names: Entered by the user for the match. They are stored on the device and in the backups you choose. With live sharing or when you share a card or result, names are shared too, as described below.
- Match data: Scores, point types, zones and shot choices the user records. Stored on the device and, on iPhone, optionally in an iCloud Drive backup.
- AI coaching requests: Match statistics without player names and any general coaching focus points you choose are sent to the OpenAI API to generate coaching advice. Player names and free-text coaching notes are not sent.
- My team: If you enter a team link from sbn.toernooi.nl in Settings, the app fetches the public team page and standings from sbn.toernooi.nl. Only the request for that public page goes to sbn.toernooi.nl; no players, matches or other data from the app are sent. The standings fetched are stored only on the device.
- Taking part in the iPhone test (TestFlight): The test runs through Apple's TestFlight app; Apple's privacy policy applies to it. Feedback you send in TestFlight, such as a comment or screenshot, reaches us and we use it only to improve the app.
- Signing up for the Android test: If you sign up by email, we use your email address only to add you to the test group in Google Play and to email you about the test. After the test, or earlier if you ask, we delete it.
- Live sharing: Only when the coach or referee taps LIVE in the app does the app send the first names of the two players and the score during that match to the SquashAnalyzer live service at Cloudflare, so that people with the link can follow along. If a player has a photo in the app, a small version of it is sent too (a 160 × 160 pixel square), shown next to the name on the live page; you can turn this off in Settings with "Send the players' photos along". No surnames, shots or other data are sent. The live service uses temporary, persistent storage at Cloudflare (Durable Objects) so that a session can survive a restart; this storage is in the EU only (Cloudflare jurisdiction EU). An automatic alarm deletes the session content, including any photos, 2 hours after the last score update. Photos come with an instruction not to keep them in a browser cache. A page that is already open may still show the last score it received; viewers can also make a copy themselves. If you choose Stop live in the app, it is deleted immediately. Live team matches (League, since version 3.0) have the same storage and deletion period: the team names, the date, the first names per match (or the team name followed by the match if you enter nothing) and the score go to the same server, on one page for the whole team evening (with "Send the players' photos along" on, also a small photo of both players per match, as above), and teammates with the invitation can add their own match to it. Anyone with the link can follow along, so share it only with people you want to. Only add photos of players who are happy with that. In Settings you can turn off the LIVE button completely.
- Live score on your lock screen: If you follow a live match or team match with the app (the "Follow on your lock screen" button on the live page, or "Follow a match" in the app), the app sends a push token from your phone to the live service: a code that lets the server send the score to your phone, together with whether you use iPhone or Android and whether you want a notification for every game. No names, phone number or other data about you are sent. The token is kept with that match in the same temporary storage in the EU and disappears together with the match (2 hours after the last score update, or immediately on Stop live); if you tap Stop or swipe the score away, it is deleted immediately. After each score the server sends the first names and the score to your phone through Apple's push service (Apple Push Notification service) or Google's (Firebase Cloud Messaging); Apple's or Google's privacy policy applies to that. On Android the app only requests a token from Firebase when you start following a match; other Firebase components, such as analytics, are off. The player photos the scorer sends are fetched by the app from the live service and kept small on your phone while you follow the match. Without following, none of this happens. Your own match on the iPhone lock screen ("Score on lock screen") stays on your phone and does not go through the server.
- Technical request data: Cloudflare processes network data such as IP addresses to deliver the website and the live service. The live service also uses IP addresses and times of creation requests to limit the number of requests. This technical record is separate from the match content; the 2-hour deletion period above applies to the live session. In addition, the live service counts per day how often live sharing and live team matches are started and how often viewers and lock screen followers connect, with the country and region Cloudflare derives from the request, the app's language, the platform (iPhone or Android) and, for a team match, the club name taken from the team name; matches with the sample players are counted separately. These counts contain no names, IP addresses or session ids, cannot be traced to a person and are not shared; they only serve to see whether and where the app is used. In addition, the app (from version 3.1) reports to the live service at most once a day that it was used, with the platform (iPhone or Android), the app version, the language and which parts of the app were used that day (coach, referee, analysis, league). No device ID, name or time is sent; the live service counts this per day, together with the country and region Cloudflare derives from the request, like the counts above. To avoid reporting twice, the app only remembers on your phone on which day it last reported. You can switch this off in Settings with Count usage anonymously.
- Teams via a link: A team (names, photos and any focus points) can be placed on squashanalyzer.com/teams, so that a coach can add it to the app with one link. See "Teams on squashanalyzer.com" below.
3. What do we not process?
- No location data
- No camera or microphone data
- No contacts or calendar
- No advertising tracking (IDFA)
- No analytics or crash reporting through third parties
- No account or registration required
4. iCloud Drive backup
The app offers the option to make a backup to your personal iCloud Drive. This backup contains player names and match data. Apple encrypts iCloud Drive data in transit and at rest. We have no access to your iCloud Drive.
On Android you make backups to a folder you choose yourself. We have no access to that either.
Shared player cards (badges)
Players you pick with "Choose player" can earn badges. These are stored only on your own device. With "Share card" you create a link to squashanalyzer.com/kaart with the player card yourself: only the name and the badges earned, with the date and the opponent's name. Photos, coaching notes and focus points are never included. Only share a card with the player's permission.
The card is contained in the link itself (after the # sign); browsers do not send that part to our server, and the page stores or sends nothing. Anyone who opens the link in the app (iPhone or Android) can copy the card to one of their own players; that happens only on that device. There is no automatic synchronisation between devices.
Teams on squashanalyzer.com
A coach or team captain can ask the administrator of SquashAnalyzer (Gerd-Jan van Gils) to put a team on squashanalyzer.com. Teammates then add that team as players to their own app with one link. There is no upload form: only the administrator puts teams online, and only if the players in the team have given their consent. The captain who supplies the team asks for that consent.
- What is there: per player the name, a photo and any general focus points (such as "Backhand"). No coaching notes, matches, scores or badges.
- Who can see it: anyone who has the link. The link contains a long random code, is not in the navigation and tells search engines not to index it. That is not access protection, so only share the link within your own team.
- Where: as files on the SquashAnalyzer website, hosted at Cloudflare.
- In the app: the app fetches the team file from squashanalyzer.com and adds the players only to its own device. Nothing from the app is sent along. As with any website, our server and Cloudflare see the IP address of the request; we do not use it.
- How long: as long as the team uses the link. At the request of the captain or of a player, we remove the team or that one player. Players already in someone's app stay on that device until that user deletes them.
5. OpenAI (AI coaching)
The AI coaching feature sends match statistics without player names (percentages, counts per zone/shot type) and any general focus points you choose to the OpenAI API. No player names, free-text coaching notes or directly identifiable data are sent. OpenAI processes these requests in line with its own privacy policy.
The AI coaching feature requires your own OpenAI API key, which the user enters in the app's Settings.
6. Voluntary donation
The website has a button to buy me a coffee voluntarily. It opens a bunq payment page (bunq.me), where you choose the amount and pay yourself, for example with iDEAL. bunq processes the payment and your payment details under the bunq privacy policy. We only see what is visible with an ordinary bank transfer (name, account, amount and description) and do not use it for anything else. The app itself never asks for money.
7. Data storage
Players and matches are stored on your device; team matches are kept in a local file. Backups are in the location you choose. Online processing happens with AI Coach, live sharing, the live score on your lock screen, the anonymous daily usage count and teams the administrator puts on squashanalyzer.com on request, as described above. Shared cards and results also end up with the recipients.
8. Your rights
You can delete the local matches and players and your own backups by:
- Deleting the matches manually under "Finished matches" in the app
- Deleting the app together with its local data from your iPhone, iPad or Android device (existing backups and shared copies remain separately)
- Deleting the backup files manually from iCloud Drive (Files app → iCloud Drive → SquashAnalyzer) or, on Android, from the folder you chose for backups
Are you in a team on squashanalyzer.com with your name or photo? Then you can ask which data about you is there, have it corrected or have it deleted. Send an email to info@squashanalyzer.com; we handle it as quickly as possible, and in any case within a month.
9. Changes
We reserve the right to change this privacy policy. For substantial changes the date at the top of this document is updated. We recommend checking this policy from time to time.
10. Contact
Questions or comments? Send an email to info@squashanalyzer.com.