Skip to content

Running the platform

Privacy and GDPR

When you run a platform, you are the controller of the personal data on it: your players', captains' and staff's. This is what the platform does for you, and what is yours to do.

The privacy policy and the terms (/legal/privacy and /legal/terms, linked from the apps and the website) start from templates filled from your settings:

  • your legal name, address, registration number, tax ID and support email, and your country by name (Settings, General);
  • the providers this platform uses, and only those: Mailgun when emails are on, Expo for pushes, Stripe, NETOPIA or PayPal when they take payments, Pusher, S3 storage and Sentry when they are set up;
  • how long data is kept (Settings, Privacy, below);
  • the minimum age, and whether you ask about news and offers by email.

They are a starting point: have them checked against your country's law. To change one, Settings, Legal documents starts a version from the template for a language; edit it and publish it. The placeholders in braces ({legal_name}, {processors}, {retention} and the rest) keep being filled in. The lists the template fills in are in English: in another language's version, write them in that language instead of keeping the placeholder. Or point the terms and privacy addresses in Settings, General at your own pages.

The processing record

Settings, Processing record is the record of processing activities that GDPR article 30 asks you to keep, filled from the settings: you as the controller, what the platform processes, why and on what legal basis, for how long, who receives it, the processors and where they are, and how it is protected. Review it, add what the platform can't know (your hosting provider, the other services you use), and keep a copy: print it, or save it as a PDF from the browser. Only admins see it.

How long data is kept

Settings, Privacy:

SettingDefaultWhat it does
Close accounts nobody has signed in to for this many monthsempty: neverThe person is emailed and has 30 days to sign in and keep the account; then it is anonymised like a deleted one. Admins and staff are never closed, and at most 200 accounts are closed a night.
Delete notifications after this many days365The notifications in people's inboxes.
Clear availability notes this many days after the game30"Knee still sore" stays private: the answer stays, the note goes.
Delete audit log entries after this many months24The log of changes made in the admin.
How long you keep receipts and payments, in years10Said in the privacy policy. Receipts and payments are never deleted automatically: accounting law makes you keep them.

php bin/console app:privacy:retention applies them every night (Scheduled jobs and backups). With --dry-run it counts what would go and changes nothing.

Requests from people

  • A copy of their data: Users or Players, "Export their data": a file of everything held about the person. Each export goes in the audit log.
  • Deleting: the person deletes their account in the app or at /account/delete, or you do it with Players, "Delete their data", or Users, "Delete (anonymise)". Results and tables stay, naming nobody.
  • Correcting: the person edits their profile in the app; staff edit Players and Users.

News and offers by email

When Settings, Privacy asks about news and offers, sign-up and the app's notification settings ask too, off until the person turns it on, and the answer is kept with its date. Users, "Export who agreed to news" downloads them as a CSV for your newsletter tool, and each export goes in the audit log; the Users list filters by it. The platform itself sends no newsletters.

Tell the app stores too: make the store kit with --marketing (npm run store:kit -- <slug> --marketing in the app), and its App Privacy and Data safety answers declare the email's use for news and offers.

Age

Accounts are for people of 16 or over: signing up in the app or on the website confirms it, and the terms and the privacy policy say so. Accounts that parents manage for juniors are planned for clubs.

Found a mistake? Tell us.