Privacy Policy

NDNS Golf · Last updated 10 October 2026

This policy explains exactly what NDNS Golf collects, why, and where it goes. It is written to describe what the app actually does, not what a template says it might.

The short version. NDNS Golf can be played without an account, and the name you give your golfer stays on your phone. You can optionally sign in with Apple so that purchases you have made can be restored to a new phone or after reinstalling — nothing in the game is locked behind it, and if you do, Apple gives us an identifier and either your email address or the private relay address Apple creates for you. We never ask for your phone number or contacts. To fix bugs and learn which parts of the game work, the app sends gameplay statistics and crash reports, grouped under an identifier created on your phone the first time you open the app. Our analytics and crash-reporting providers also estimate your location from your IP address — as fine as a city, postal area and map coordinates, though often only accurate to within 5 to 100 km — and do not keep the IP address itself. Because those coordinates are stored to four decimal places, Apple's App Store privacy definitions count this as “Precise Location”, even though it comes from your internet connection and not from your phone's GPS. And because everything from one install is grouped under one identifier, the same definitions count this data as “linked to you”, even though we do not know who you are. None of it is used to track you across other companies' apps or websites, none of it is sold, and the app never shows the App Tracking Transparency prompt, because there is nothing to ask about.

What we do not collect

What we do collect

1. Gameplay analytics

To understand whether the game teaches its swing well and where players stop playing, the app records a fixed list of gameplay moments: for example finishing golfer setup (with the handedness, shot shape and background you picked), tutorial steps, a round started, finished or abandoned, each hole completed with its strokes and score against par, reaching an XP level milestone, moving to the next stage of your career or playing another pro season, or a practice drill blocked by low energy. These carry game data only, such as the hole, course, tournament, strokes, score, XP level, energy, career stage and your golfer's in-game age, and never the name you typed. If the app hits an error, the error message is recorded here too, together with where in the app it happened (for a screen error, the list of the game's screen components involved).

The analytics library also records app lifecycle events (installed, updated, opened, became active, backgrounded), and each time the app starts it fetches its settings from our analytics provider, which sends the install's identifiers. It attaches technical details to every event:

App version and buildTo tell whether a problem is fixed in a newer release
Device modelFor example “iPhone 16 Pro”, and whether the app is running on a simulator. To reproduce device-specific issues
Operating system and versionTo reproduce issues on the right OS
Screen dimensionsTo find layout problems on specific screen sizes
Language, region and time zoneYour phone's language and region setting (for example en-CA) and its time zone, read from your phone's settings
Location estimated from your IP addressYour IP address is received by our analytics provider and used to estimate your location: country, region, city, postal area (such as the first three characters of a Canadian postal code, or a US ZIP code), time zone, and map coordinates stored to four decimal places. The estimate comes from your internet connection, not from your phone's GPS or location services. It can be anything from a few kilometres to a few hundred kilometres from where you actually are, and is often within 5 to 100 km. The IP address itself is not stored. We use this only to understand where the game is being played.

The analytics provider also keeps a profile for each install. It holds the app version and build, the device type, the operating system and version, the screen size, and the estimated location described above (including the coordinates and postal area), each as first seen and as most recently seen.

2. Crash and performance reports

If the app crashes, freezes or hits an error, we receive a technical report: the error and stack trace; device details such as model, OS version, memory, battery level and charging state, thermal state, screen, language and time zone; when the app was started, and how long it froze if it stopped responding; and the most recent breadcrumbs (up to 100). Breadcrumbs are the game events leading up to the problem with their details, the names of the screens you visited, taps on system controls, device events such as the keyboard opening, the app moving to the background, screen rotation, battery changes and whether you were on Wi-Fi or mobile data, and the app's own log messages and network requests. The crash-reporting library is also set to send a short record of each app session: when it started, how long it lasted, and whether it ended normally or in a crash. Reports carry the identifiers described in section 3. Our crash-reporting provider also estimates your location (the country and, where it can, the city) from the IP address a report is sent from, and does not store the IP address itself. This is how a crash you experience becomes a fix.

3. Identifiers

The app creates an identifier the first time it runs, from a random number and the time it was created, and stores it on your device. It groups one installation's events together so we can tell “twenty players each played one round” from “one player played twenty rounds”. It is not derived from your hardware, your Apple Account or any advertising identifier. Deleting the app deletes it, and reinstalling starts a new one.

Our analytics library also keeps its own random identifier for the install and a short-lived session identifier. Our crash-reporting library keeps its own random installation identifier, which it uses for reports sent before the app's identifier is ready and for session records. It also attaches a device identifier that it derives from the identifier Apple gives each app developer for your device (Apple's “identifier for vendor”), your device model and the app's bundle ID. Unlike the app's own identifier, that one can stay the same after you delete and reinstall the app if another app from us is still on your phone. None of these is an advertising identifier, and none is shared with anyone for advertising.

Where your data goes

We use the following service providers. PostHog, Sentry and Supabase are set up to store data on servers in the European Union; RevenueCat processes purchase data in the United States:

PostHogProduct analytics — the gameplay events, technical details, error messages and estimated location above. EU region. Kept for one year, then deleted automatically.
SentryCrash and performance reporting — the reports above. EU region. Kept for up to 90 days, then deleted automatically.
SupabaseAccounts and purchase records — only if you sign in. Stores your account identifier, the email or relay address Apple shares, a record of which products you have bought and which have been credited to your game, and a row representing your career (a random identifier and dates — not your golfer’s name and not your save). EU region, Frankfurt. Deleted when you delete your account.
RevenueCatIn-app purchases. RevenueCat validates App Store receipts and records which products you bought and when, under its own random identifier and a device identifier Apple provides to app developers, along with your App Store country, language settings, device model and OS version. It never receives your name or payment details.

We never see your payment details. Purchases are handled entirely by Apple. Your card number, billing address and Apple Account are known to Apple, not to us. What we learn is which product was bought, its price in your store's currency, and how the purchase ended: completed, cancelled, failed (with the store's error message), or waiting for a parent's approval through Ask to Buy.

We chose to have PostHog, Sentry and Supabase store data on servers in the European Union. All three are US-based companies, so their staff and sub-processors may access it from outside the EU under their data processing agreements. RevenueCat processes purchase data in the United States. We do not sell, rent, or share any of this data with anyone else.

Data stored on your device only

Your career save — golfer name and birthplace, career history, equipment, settings and progress — is kept only on your device, and the save itself is never uploaded. Some details from it (scores, XP and level, career stage, your golfer's age, energy and Fairway Funds balance, and the setup choices listed above) are also sent as the gameplay events described above. Your golfer's name and birthplace are not. Deleting the app deletes the save, and we cannot recover it for you.

Your account, if you choose to have one

NDNS Golf is playable from start to finish without an account, and nothing in the game — no course, no club, no mode — is locked behind one. Signing in exists for a single purpose: in-app purchases of Fairway Funds are consumable, which means Apple does not restore them the way it restores a one-off unlock. Without an account there is no way for us to know that the person on a new phone is the person who paid, so an account is what makes a purchase yours rather than your handset’s.

If you use Sign in with Apple, we store: the identifier Apple gives us for you, the email or private relay address Apple shares, a record of each purchase (which product, when, and whether it has been credited to your game yet), and a row representing your career that holds a random identifier and dates. Your golfer’s name, your birthplace and your save are not part of it.

Deleting your account. Go to the My Player tab, then Settings, then Account, and choose Delete Account. It is immediate and permanent: your account and everything listed above are deleted from our servers. Two things to know before you do it. Your career stays on your phone and you can keep playing. But purchases can no longer be restored — if you sign in again it will be a new account, and Fairway Funds you have bought will not come back to it.

We keep one thing after a deletion, deliberately: the record of what Apple and RevenueCat told us about a payment, with no account attached to it. That is how we can still answer “I paid and did not receive it”, and it is the only reason it is kept.

Children

NDNS Golf is not directed at children under 13, and we do not knowingly collect personal information from them. The app never asks for an email address, phone number, or any other way to contact a real person.

Your rights

We use this data on the basis of our legitimate interest in fixing bugs and improving the game. Depending on where you live, you may have the right to access, correct, delete, or object to the processing of your personal data. The data described here is tied to a random install identifier, not to your name, so we cannot look it up by who you are. The app does not yet show you that identifier. Until it does, contact us with your device model and roughly when and where you played, and we will do our best to find the matching records and send you a copy, delete them, or both. You can stop all collection at any time by deleting the app. If you live somewhere with a data protection authority, such as the EU or the UK, you can also complain to it.

Changes

If this policy changes materially, we will update the date above and note the change in the app's release notes.

Contact

Questions about this policy: support@ndnssolutions.com
NDNS Solutions