drillmate privacy policy
Effective date: 25 October 2026
drillmate is a training planner for football coaches, academies and clubs, with a companion view for parents. This policy explains what personal data drillmate processes, why, for how long, who else sees it, and what you can do about it. It is written in plain language on purpose.
1. Who is responsible
Controller for your account and for drillmate itself:
Dino Ramić, an individual based in Bosnia and Herzegovina General contact: hello@drillmate.app Privacy and data requests: privacy@drillmate.app
No data protection officer is appointed; the contact above is the person to write to.
When a club or a coach enters data about players and families, that club or coach decides what to record and why. In those cases the club or coach is the controller of the players' data and drillmate processes it on their behalf, under the terms for organisations and data-processing agreement, which every organisation accepts when it signs up. drillmate is still the controller for your account, your sign-in, your subscription and the technical operation of the service.
2. Who drillmate is for, and who it is not for
drillmate is used by adults — coaches, club staff, club owners and parents — and by players aged 16 or over who follow their own player record, and by players aged 13 to 15 whose parent approved an account for them. Children under 13 never have accounts. Otherwise a child appears in drillmate only as a record that a club or coach keeps about a player, or that a parent holds about their own child. Section 6 explains how that works.
3. What we collect, by role
Everyone with an account
- Email address and a password (the password is stored only as a secure hash; we never see it).
- Your name, as you enter it.
- Language choice (Bosnian or English) and notification preferences.
- A push notification token for each device where you allowed notifications, with the device platform (iOS or Android) and language.
- When you accepted the terms, and which version.
- Calendar links you create: a secret address per calendar and when a calendar app last read it.
- If you sign in with Apple or Google: that provider's identifier for your account, your email address (Apple may give a relay address) and the name you choose to share. We send them nothing except the sign-in itself. An account without a password confirms your identity for sensitive actions by signing in again with the provider.
- A file with everything we hold about you (JSON), made when you ask for it with "Export my data".
- Technical records: for each signed-in session, its time, the IP address and the browser or device it was started from; the time your account was created; and error reports if the app fails (see section 8 on error reports).
Coaches, staff, admins and club owners
- The organisation you belong to (a personal organisation or a club), its name, logo and colour, and your role in it.
- Teams you create or are assigned to: team name, age group (birth year), training days, venue, pitch space and equipment.
- Players on those teams: full name, shirt number, position, optionally the year of birth, the date they joined and the date they left the club, and whether a parent or the player themself (16 or over) has linked them.
- Trainings: date, time, venue, notes, the drills in the plan and their order and duration. Days off (holidays and breaks) and the cover another coach agrees to give for a training (who, a note up to 140 characters, and the answer).
- Venues: a name, an address and map coordinates. These describe a place of the club, not anyone's location. When you search for an address, the text you typed is sent to Photon (see section 7).
- Announcements a coach or club posts: title, text, the team or club it is for, and for each family when they first opened it and any reminder sent. The coach sees who has read it.
- The club's rules (text and version) and how long a medical check stays valid.
- Equipment: the club's catalogue of items, what is issued to each player and returned, and the inventory (what the club has and who holds how much).
- The enrolment form of each player: the emergency contact (name, phone number and relationship), an optional note the family writes (up to 200 characters — allergies or medication are health information), which version of the club's rules and of our privacy notice the family accepted and when.
- The medical check: only its date and who confirmed it — never a document or a finding.
- Requests from families to pause or to leave: the days, a reason from a list (including "finances"), a note, and the club's decision and note; approved pauses.
- The attendance register: which players were present or absent at each training.
- Availability answers given on behalf of a player: coming or not coming, with an optional reason from a fixed list (illness, injury, travel, school).
- Drills you create: title, description, organisation, coaching points, equipment, themes, age range, intensity, space, and whether you shared them publicly.
- Team focus (themes for the coming weeks).
- Player notes: one to three short tags and an optional sentence (up to 280 characters) about a player's development, marked as praise or "work on", private to staff unless the coach shares a note with the parent.
- Matches: opponent, result, lineup, and each player's rating with an optional comment (ratings are for staff only and are never shown to families).
- Training and match summaries sent to families: when they were sent and to how many families.
- Membership fees, where the club keeps them in drillmate: the fee amounts, and for each player and month whether it was paid, exempt or waived, how (cash, transfer, other), the amount, an optional note, and who recorded it; which members keep the books (treasurer).
- Club membership history: when members joined, left, changed role or transferred ownership (kept for dispute resolution; not shown in the app).
- Invitation codes you create for staff or parents (short codes valid for 14 days).
Parents
- The children you hold in drillmate: full name and, optionally, birth year.
- The link between your child and a player record in a club, and the period it covers.
- Availability answers you give for your child: coming or not coming, with an optional reason from the fixed list (illness, injury, travel, school). An illness or injury is health information you choose to tell the club, and may carry the day the child is expected back.
- Your child's attendance, trainings, matches, trophies, the notes the coach shares and, where the club keeps them in drillmate, the fee record, as recorded by the club, shown to you.
- The paperwork the club asks of you, which only a parent does: the enrolment form (the emergency contact and the optional note), the medical check date, and requests to pause or to leave.
- Your child's kit sizes (shirt, tracksuit, socks, boots) that you write, and what has been issued to them.
- Announcements the club posts to you; the club sees whether you opened them.
- Staff of the team see the emergency contact's phone number and can call it.
- Notification preferences for training changes, new trainings, reminders, availability questions, absences, trophies, training summaries, fees, announcements and requests.
Players with their own account (13 to 15 with a parent's approval, or 16 and over)
- Your account (as for everyone above), and the link between your account and your own player record in a club, with the period it covers.
- Availability answers you give for yourself: coming or not coming, with an optional reason from the fixed list (illness, injury, travel, school). An illness or injury is health information about you that you choose to tell your club, and may carry the day you expect to be back.
- How hard a training was for you (a rating from 1 to 10 after it) and how you feel before one (fresh, fine, tired, sore or injured, with an optional short note, and for an injury the day you expect to be back). You give these yourself, only if you want to, under your explicit consent (Art. 9(2)(a) for what is health information); for a player aged 13 to 15 the parent reads them and consented to this when approving the account; nobody else can give them for you. They are seen by your team's coaches and staff and your club's administrators — never by parents or other players — and are kept with the training they belong to. The coach also sees a load figure worked out from your ratings (rating × planned minutes over the last weeks).
- What the club records about you, shown to you as it would be to a parent: your attendance, trainings, matches, trophies, the notes the coach shares and, where the club keeps them in drillmate, your fee record.
- Notification preferences, as for parents.
Children (as records held by clubs and parents)
- Full name, optional birth year, club and team, shirt number, position.
- Attendance at trainings, availability answers and their reasons.
- Trophies earned from attendance and match milestones, with the club and team name at the time.
- Notes from the coach, shared with the parent only when the coach chooses to.
- Match lineups and results; match ratings, which only staff see.
- Membership fee records, where the club keeps them in drillmate.
- Development statistics derived from attendance and the themes of the drills in the trainings the child attended.
- The enrolment form, the medical check date, requests to pause or to leave, pauses, and the kit issued and the sizes the family wrote.
Subscriptions and billing
- For Coach plans bought in the app stores (through RevenueCat): the app store's transaction identifiers, product, status and renewal date. Payment card data never reaches drillmate; the store holds it.
- For Club plans bought on the web (through Paddle): the Paddle customer and subscription identifiers, the number of seats, status and renewal date, and the billing email Paddle sends us. Paddle is the merchant of record and processes the payment itself.
- An accounting record of billing events (amounts, currency, event type) for tax and bookkeeping.
Landing page waitlist
- If you join the waitlist on drillmate.app: email address, the role you chose (coach, academy, parent) and your language.
What we do not collect
- No location data (the address of a venue is a place of the club, not anyone's location, and the phone does not read the device's location), contacts, photos (other than a club logo an admin uploads), or calendar access.
- No advertising identifiers, no tracking across other apps or websites, and no marketing analytics. The only usage statistics are the pseudonymous product statistics described in section 8, which you can turn off.
- No data about children beyond what the club or parent enters as described above.
4. Why we process it, and on what basis
| What | Why | Legal basis |
|---|---|---|
| Account, organisation, teams, trainings, drills | To provide the service you signed up for | Performance of a contract (GDPR Art. 6(1)(b)) |
| Players, attendance, availability, notes | To let the club or coach run trainings and inform parents | Contract between you and the club or coach, who is the controller; drillmate acts as processor |
| Enrolment form (emergency contact, the club's rules accepted) | To let the club know who to call and that the family knows its rules | Contract through the club, which is the controller; the acceptance is an explicit act, never pre-ticked |
| The optional note on the enrolment form | So the staff know what they must (allergies, medication) | Explicit consent (Art. 9(2)(a)); optional |
| The medical check date | So the club knows the check is valid | Contract through the club; only a date and a state |
| Requests to pause or to leave | To let the club decide and adjust fees | Contract through the club |
| Announcements and who read them, days off, cover | To tell the people concerned about the club's plans | Contract |
| Equipment, sizes, inventory | To run the club's kit | Contract through the club; the family writes sizes |
| Venues | To show where a training is | Not personal data about a person: a place of the club |
| Sign-in with Apple or Google | To let you sign in without a password | Contract |
| Address search (Photon) | To find a venue on the map | Legitimate interest (Art. 6(1)(f)); only the typed address text is sent |
| Children linked by a parent | To show a parent their own child's trainings and attendance | Consent of the holder of parental responsibility (Art. 6(1)(a), Art. 8), given by entering the invitation code and linking the child |
| A player's own account (16 or over) | To show players their own trainings and let them answer availability themselves | The player's own consent (Art. 6(1)(a); 16 is the age Art. 8 sets for consenting to an online service oneself), given by entering the player code from the club |
| A child's own account (13 to 15) | The same, for a younger player, with their parent watching over it | Consent of the holder of parental responsibility (Art. 6(1)(a), Art. 8(1)), given explicitly before the child's code is made and recorded with who, when and which text; explicit for an illness or injury reason (Art. 9(2)(a)) |
| An illness or injury given as the reason for not coming | To let the coach plan around it | Explicit consent of the person answering (Art. 9(2)(a)) — the parent for a child, the player for themself; the reason is optional |
| Push notifications and preferences | To tell you about training changes, reminders and your child's progress | Consent through the device permission, and the contract |
| Error reports | To find and fix failures in the app | Legitimate interest in a working service (Art. 6(1)(f)); reports contain no names or emails |
| Usage statistics | To learn which features are used and where people get stuck, so we fix and improve them | Legitimate interest in improving the service (Art. 6(1)(f)); pseudonymous, nothing stored on your device, and you can object at any time with the "Share usage data" switch |
| Billing identifiers and events | To run subscriptions and keep accounts | Contract and legal obligation (accounting and tax law) |
| Membership history, admin audit log | To resolve disputes and show accountability | Legitimate interest and accountability (Art. 5(2)) |
| Waitlist | To tell you when drillmate launches | Consent |
We do not use your data for marketing to third parties, for profiling, or for automated decisions with legal or similar effects.
5. How access is restricted inside drillmate
Every record belongs to an organisation, a team or a family. On every request, drillmate's server checks the signed-in person's role and returns only what that role is allowed to see:
- Club owners and admins see all teams in their club. Coaches and staff see the teams they are assigned to.
- Parents see only their own children, and only the trainings in the period their child was on a team. Parents are not members of the club.
- Coaches and staff on a team see the name and email address of the parents linked to each of its players, and of a player who follows their own record, so they know who is linked and can take them off the player. They see nothing else from those accounts.
- A player with their own account sees only their own record, and only the trainings in the period they were on a team, exactly as a parent would.
- Public drills are visible to all signed-in coaches; private drills stay within the organisation.
- drillmate staff can see aggregated numbers about the service. Looking up a specific person requires a reason and is recorded in an audit log that is only ever added to, never edited.
6. Children
A shorter version for parents is at drillmate.app/children.
Players in drillmate are usually under 18. We designed the service around that:
- A child under 13 never has an account, a password or an email in drillmate.
- A child aged 13 to 15 may have their own account only when a parent approves it. Only a parent whom a club's code already linked to the child can do this. Before approving, the parent sees what the child gets, what they cannot do, and what we collect for the account — an email address, a push token, and the child's own answers (an illness or injury reason is health data) — and ticks a box that is never ticked for them. We keep a record of that consent: who gave it, when, and which version of the text they read; it is only ever added to. The parent then gives the child a one-time code. The child makes their account, confirms their year of birth and accepts short terms written for them. The parent sees everything the child answers; the child sees nothing the parent does not, has no messages or chat, sees no data of other people and cannot change their parents, enrolment, fees or leaving the club. Any parent of the child can turn the account off at any time with one tap: the account and its sign-in are deleted at once, the child's record stays with the family and the club. At 16 the account simply continues.
- A player aged 16 or over may follow their own record with their own account. The coach can make the player code only when the year of birth the club recorded shows the player is 16 or over this year, and drillmate checks it again when the code is entered; one player code links one account. The player's parents may stay linked as well. The club can take the player's own account off the record, as it can a parent.
- The club records a player with the minimum needed to run a training: name, shirt number, position, attendance.
- A parent connects to their child only by entering an invitation code the coach gives them in person or by message. That act is how the parent, as the holder of parental responsibility, agrees to see and manage their child's record. The moment of linking is recorded.
- A parent can end their child's time on a team at any time ("No longer plays at …"). The club can unlink the family from the player, or take one parent off. A child record that no other parent holds is deleted when the parent deletes their account — unless the player follows it with their own account. A player with their own account can end their own time on a team; when they delete their account, the record stays with the club and any parent who holds it.
- Paperwork stays with the parent: the enrolment form, the medical check and requests to pause or to leave are done by a parent, never by a child aged 13 to 15.
- A note a family writes on the enrolment form (allergies and the like) is read only by the team's staff, the club's owner and admins and the family. It never appears in a list, a PDF, a notification or an export of the club.
- Notes about a child's development are private to staff by default; a coach decides what to share with the parent. Match ratings are never shown to the family.
- We never show a child's surname on shared images (training cards, trophy cards).
- We do not use children's data for anything other than showing it to the club and the family.
If you believe a child's data has been entered in drillmate without the right to do so, write to privacy@drillmate.app and we will investigate with the club.
7. Who else receives data (sub-processors)
drillmate runs on services from other companies. Each one processes data only on our instructions and under a data-processing agreement. This table is the list; we announce a new provider in the app 30 days before it starts processing data:
| Provider | What it does for drillmate | Data it processes | Location |
|---|---|---|---|
| OVHcloud | The server (VPS) that runs drillmate's database, sign-in and file storage for club logos | All application data; email and password hash | Warsaw, Poland (EU) |
| Backblaze (B2 Cloud Storage) | Storage of encrypted daily backups | All application data, encrypted on our server before it is sent (the provider cannot read it) | EU Central: Amsterdam, Netherlands (EU) |
| Resend | Sending account emails (confirming the address, resetting the password, telling you that someone tried to sign up with your address) | Email address, the content of the message | EU region: Ireland (EU) |
| Cloudflare | Hosting of the website drillmate.app and the web app, DNS, network security | Web requests (IP address, browser type) for the duration of the request; access logs | Global network |
| PostHog (EU Cloud) | Usage statistics: which screens and features are used | A pseudonymous identifier (a one-way hash of the account id), your role and plan kind, the app, platform, app version and language, the screen's name, and counts (for example how many players were imported); no names, emails, phone numbers, children's data, notes, fees or anything you typed; no session recordings | EU (Frankfurt, Germany); PostHog Inc. is a US company |
| Sentry | Error reports when the app fails | Technical details of the error, a pseudonymous account identifier and role; no names or emails | USA (Sentry org "drillmate", US region) |
| Photon (komoot GmbH) | Looking up the address of a club venue on the map | Only the text the coach typed, sent by our server; no account, cookie or location | Germany (EU) |
| Apple (Sign in with Apple), Google (Sign in with Google) | Identity providers, only when you choose them; each is the controller of its own account | We receive the account identifier, the email (Apple may give a relay address) and the name; we send nothing but the sign-in | Global |
| Expo (EAS) | Delivering push notifications and app updates (EAS Update); app performance measurements (start-up and screen load times) | Push tokens, notification content; device model, operating system and app version | USA |
| Apple (APNs), Google (FCM, Firebase) | Delivering push notifications to iOS and Android devices | Push tokens, notification content | Global |
| RevenueCat | Managing in-app subscriptions bought in the App Store and Google Play | Store transaction identifiers, an organisation identifier | USA |
| Paddle | Selling and billing Club subscriptions on the web, as merchant of record | Billing name, email, payment details (Paddle is the controller for payment data), subscription status | UK / EU |
| Apple App Store, Google Play | App distribution and in-app purchases | Purchase data under their own terms | Global |
The website and the apps load their typeface from drillmate itself.
To check that a new password has not appeared in a known data breach, drillmate sends Have I Been Pwned (haveibeenpwned.com) the first five characters of the password's SHA-1 hash, never the password and nothing that identifies you.
We do not sell personal data and we do not share it with advertisers.
8. Error reports
When the app fails, a report goes to Sentry with the technical details needed to fix the fault: the error, the screen, the app version, the device model and operating system (or the browser, on the web), your role, and a pseudonymous account identifier (a random id, not your name or email). No IP address is sent. We do not record what you typed, your screen, or your network traffic.
Usage statistics
To learn which features are used, the apps send PostHog (its EU cloud) a small, fixed set of events — for example that a register was taken, a plan was saved, a fee was recorded, a PDF was downloaded, or which screen was opened (by its name, never with the record in it). Each event carries only your role, plan kind, the app, platform, app version and language, and counts. You are identified by a one-way hash of your account id, never by your name or email. Nothing is stored on your device or in your browser for this, there is no session recording, no automatic capture of what you tap or type, and no location from your IP address. You can turn it off at any time in Privacy and data › "Share usage data"; then nothing is sent from that device.
9. International transfers
Our primary database is in Warsaw, Poland (EU), on a server rented from OVHcloud, and its backups are in Amsterdam, Netherlands (EU). Some sub-processors (Sentry, Expo, RevenueCat, Apple, Google) may process data in the United States, and Cloudflare serves requests from its global network. Resend sends our email from its EU region (Ireland) and PostHog keeps usage statistics in its EU cloud (Frankfurt), but both are US companies. Those transfers rely on the European Commission's Standard Contractual Clauses and, where the provider is certified, the EU–US Data Privacy Framework. You can ask us for a copy of the safeguards at [privacy@drillmate.app].
10. How long we keep data
| Data | Kept for |
|---|---|
| Your account and what you created | Until you delete your account, then anonymised as described in section 11 |
| Players marked as having left the club | 24 months after the leaving date; then the notes about them are deleted, the name is replaced with "Former player" and the shirt number is removed (the club keeps the attendance history) |
| A player's own answers (how hard a training was, how they felt), the enrolment form with the emergency contact and note, and the medical check date | With the player's record: deleted 24 months after the player left, when the name goes |
| Requests to pause or to leave, and pauses | With the player's record |
| Announcements, who opened them and their reminders | 24 months from posting |
| The record of a parent's consent for a child's own account | With the child's record; never changed |
| Reminders asking families for the enrolment form, and medical-check notices | 30 days; 400 days |
| An account whose address was never confirmed | 7 days after sign-up |
| Codes for a child's own account (13 to 15) | 7 days after they expire |
| Attendance, availability, trainings, matches | As long as the team exists in the club |
| Membership fee records | Three full financial years, then deleted at the end of the year they were in |
| Children held by a parent | Until the parent deletes the child or the account |
| A player's link to their own record | Until the player or the club removes it, or the player deletes their account |
| Push tokens | Deleted when you sign out on the device, and automatically if unused for 90 days |
| Sign-in sessions (with their IP address and browser or device) | Until they expire, then deleted the next day |
| Reminders, availability questions, absence notices and other push delivery records | 30 days |
| Invitation codes | 14 days plus 7 days after expiry |
| Membership history (joined, left, role changes) | 3 years |
| drillmate staff audit log | 2 years |
| Billing events | For as long as tax law requires |
| Error reports | 90 days at Sentry |
| Usage statistics | 12 months at PostHog |
| Server logs (no IP addresses) | Overwritten as the logs rotate; at most 100 MB per service |
| Waitlist | Until launch plus 6 months, or until you ask to be removed; we delete it by hand |
| Backups | Daily encrypted backups kept for 30 days |
11. Your rights, and how to use them
You have the right to access your data, to correct it, to have it deleted, to limit or object to its use, to take it with you, and to withdraw consent at any time. Most of this you can do yourself:
- See and correct: your profile, your children and your team data are editable in the app.
- Export my data: Menu › Privacy and data › Export my data produces a file (JSON) with everything drillmate holds about you, in a machine-readable format. If you signed in more than 15 minutes ago, drillmate asks for your password first.
- Delete account: Menu › Privacy and data › Delete account (family app: Account › Privacy and data; web: Settings › Privacy and data). Your account, membership, preferences, push tokens and calendar links are deleted. Drills you wrote for a club stay with the club, shown as written by a "Former coach"; notes, ratings and fee records you entered stay with the club without your name. Children that no other parent holds are deleted, unless the player follows the record with their own account; a player's own record stays with the club and any parent who holds it, without the player's account. If you are the only member of your organisation, it is deleted with everything in it. A club owner must first hand the club to another member (Club tab › People, open the member, Transfer ownership); a paid subscription that still renews must first be cancelled. If you signed in more than 15 minutes ago, drillmate asks for your password first. The steps and what is kept are at drillmate.app/delete-account.
- Notifications: turn each kind on or off in Settings, or revoke the permission on your device.
- Switch off a child's account (13 to 15): a parent does it with one tap; the account and its sign-in are deleted at once.
- End a child's time on a team: Child → "No longer plays at …". A player with their own account does the same for themself. The club can also unlink the family from a player, or take one parent or the player's own account off.
- Withdraw from the waitlist: write to us.
For anything else, or if you cannot sign in, write to privacy@drillmate.app. We answer within 30 days. We may ask you to confirm your identity, for example by replying from the email on the account.
You also have the right to complain to a supervisory authority:
- Bosnia and Herzegovina: Agencija za zaštitu ličnih podataka u Bosni i Hercegovini, Dubrovačka 6, 71000 Sarajevo, azlp.ba.
- European Union: the data protection authority in your country.
- United Kingdom: the Information Commissioner's Office (ICO), ico.org.uk.
12. How we protect data
- Access is checked by drillmate's server on every request, against the rules for each role, so one club can never read another club's data, and a parent can only read their own child's.
- Connections are encrypted (TLS). Passwords are stored only as Argon2id hashes, and a new password that has appeared in a known data breach is refused (checked with Have I Been Pwned without revealing the password, see section 7).
- On the web your session is kept in a cookie that page scripts cannot read (httpOnly); the phone app keeps it in the device's secure storage (iOS Keychain, Android Keystore).
- Exporting your data and deleting your account need a recent sign-in.
- Our own staff tools require a second factor and record every lookup of a person.
- Dependencies and code are scanned automatically; the web app sends strict security headers.
- A documented procedure for security incidents. If a breach is likely to put your rights at risk, we notify the supervisory authority within 72 hours and you without undue delay.
13. Cookies and similar storage
The website drillmate.app sets no cookies. The web app keeps your sign-in session in a cookie, and your language, time zone and a folded sidebar in cookies or your browser's local storage, which is strictly necessary for the service to work; it uses no analytics or advertising cookies. Usage statistics (section 8) store nothing in your browser except your own choice if you turn them off. See the cookie notice at drillmate.app/cookies.
14. Changes to this policy
When we change this policy we will update the date at the top and, for changes that matter to you, tell you in the app or by email before they take effect.
15. Contact
Dino Ramić, an individual based in Bosnia and Herzegovina: privacy@drillmate.app (privacy and data requests), hello@drillmate.app (general).