Skip to content

Privacy Policy

Effective 21 August 2026 · Last updated 21 August 2026

This policy describes what the Learn 2 Putt app and website collect, what stays on your phone, who else processes it, and how to get rid of it. It was written against what the app actually does rather than from a template — where a section says something does not happen, that is a statement about the shipped code.

1. Who we are

Learn 2 Putt is made and operated by Deen Venture Studio, the controller responsible for the personal information described here.

There is no separate privacy team to route you through. The same person who writes the app reads that inbox.

2. What this covers

The Learn 2 Putt mobile apps for iOS and Android, and this website at learn2putt.app. It does not cover Apple, Google, or any other company whose own services you reach from the app — those are governed by their own policies, linked in section 7.

3. The short version

  • There is no account. No email address, phone number, name, or social login. The app signs in anonymously and works with a random ID.
  • Camera video never leaves your phone. Frames are analysed as they arrive and discarded. Nothing is recorded, saved, or uploaded.
  • Your practice history is a file on your device, not a record on our server. We do not run a server that holds it.
  • Anonymous usage and crash data does leave the phone, to Google and (when enabled) Sentry, tied to the random ID. Some of those events carry practice measurements. Section 4 lists them.
  • We do not sell your information and do not use it for targeted advertising. There are no ad networks or advertising identifiers in the app.

4. What we process

4.1 An anonymous app ID

On first launch with a network connection, the app creates an anonymous Firebase Authentication user. Its ID is an opaque, randomly generated string. It is not an email address, phone number, name, social account, advertising identifier, or device identifier, and there is no sign-up or sign-in screen anywhere in the app.

This ID is the one thread that ties the services below together, so a crash report and a subscription can be recognised as the same installation. It is scoped to a single install: reinstalling the app or moving to a new phone produces a new one. You can see it yourself under Settings → About → App user ID.

The app is fully usable without it — practice, calibration and history never depended on it, so an offline device simply carries on.

4.2 Usage analytics

Released builds send anonymous product-analytics events to Google Analytics for Firebase, attached to the anonymous app ID. Every value we send is a count, a flag, a rounded number, or a fixed token — the app sends no free text, no email address, no URL, no store account, and no receipt.

The events cover:

  • Practice and calibration — that a session started and ended, how many putts it held, how many were on line or missed left and right, and how many could not be read.
  • Putt measurements — a whole-number green-speed (Stimp) reading, target and actual roll-out distance, target and actual left-right miss, and the accuracy tolerance in use.
  • Setup geometry — the aim line’s angle in whole degrees and how much of the frame it spans.
  • Engagement — practice streak in days, sessions this week, whether a weekly goal was met, and whether any history exists.
  • Onboarding answers — which of the fixed options you picked for your putting goal and how often you practise, as stable tokens. There is no free-text box in onboarding.
  • Paywall, subscription and settings actions — which offer was shown, which package was selected, and how a purchase, restore or account deletion ended, all as fixed tokens.

Separately from our events, the Firebase Analytics SDK performs its own automatic collection, which includes an app-instance ID, first-open and session events, device model and operating-system version, app version, and a coarse location that Google derives from your IP address. We do not control that set. We do not set any Analytics user properties of our own, and we do not use Google Signals, advertising identifiers, or audience export.

The app does not currently offer an in-app switch to turn analytics off. Section 10 explains the choices you do have.

4.3 Crash and error diagnostics

Firebase Crashlytics is active in released builds and receives crashes and fatal errors — stack traces plus the device and app state Crashlytics collects automatically. It is tagged with the anonymous app ID so a report is actionable; a crash with no ID attached is the one report support cannot do anything with. Crashlytics has no in-app opt-out.

Sentry is integrated for error and performance monitoring but only runs when a build is compiled with a Sentry connection string. When it is on, it receives errors, a sampled share of performance traces, and billing-related breadcrumbs — subscription status, entitlement source, and coarse failure codes. It is given the anonymous app ID and nothing else; the app deliberately leaves Sentry’s IP-address and username fields alone. API keys, receipts, purchase tokens, store accounts and prices are never sent.

Neither diagnostics service receives camera frames, video, or per-putt trajectory coordinates.

4.4 Subscription and purchase information

Subscriptions are sold through the App Store and Google Play and managed with RevenueCat. RevenueCat is keyed on the same anonymous app ID, and the app reads back only coarse entitlement metadata: the product identifier, which store it came from, whether it will renew, whether the current period is a trial, whether it is a sandbox purchase, expiry and latest-purchase timestamps, cancellation and billing-issue timestamps, ownership type, and a verification status.

The app never handles your payment details. Card numbers and store account credentials go to Apple or Google and are never visible to us. Receipts, purchase tokens and store accounts are not read into the app.

One detail worth stating: RevenueCat is set up when the app starts, which can be before the anonymous ID has been issued. In that window the RevenueCat SDK uses its own anonymous identifier and is then re-keyed to the app ID once it arrives.

4.5 Information that stays on your device

The following are written to the app’s private storage on your phone. They are not uploaded, backed up by us, or readable by us:

  • Practice history — one record per session: when it started and ended, which mode it was, how many putts, how many on line or missed left and right, and how long it lasted. Retention is bounded to the most recent sessions rather than kept forever.
  • Per-attempt practice records — target distance, how far the putt actually rolled, its left-right finish, whether it counted as satisfactory, whether it was holed, and the read quality.
  • Setup and calibration choices — focus band, rep target, green speed and accuracy tolerance.
  • Onboarding and first-practice progress, so the app does not replay a first-run sequence you have already seen.
  • A bounded subscription cache, so paid features keep working on a plane.
  • Trial reminder state — the trial end date a reminder was scheduled against, so a relaunch does not move or duplicate it. See the notifications section below.

4.6 Camera

The app asks for camera permission because it has to watch the ball. What it does with the feed is section 5.

4.7 Notifications

Learn 2 Putt uses local notifications only, scheduled by your own device. There is no push infrastructure, no device token, and no notification server — which means there is nothing for us to send you and no list you are on. Notification permission is asked for in context, on the screen that offers the reminder, not at launch.

There is exactly one notification the app schedules: an optional reminder before a free trial converts to a paid subscription, offered when you start the trial and declinable there. The app does not schedule practice reminders, streak nudges, or any other recurring notification. If you decline, or later turn notifications off in your device settings, nothing is scheduled and nothing else about the app changes.

4.8 Remote configuration

The wording on the onboarding, paywall and first-practice screens can be updated without an app release using Firebase Remote Config. The app fetches that copy at most every few hours. This is a download of text; the request carries the app-instance identifier the Firebase SDK uses, and no practice data.

4.9 Support correspondence

If you email us, we receive whatever you put in the message — including your email address — and the reply thread. Settings offers a Copy support info action that puts a short diagnostic block on your clipboard: app version and build, the release label and commit, whether crash reporting is on, your platform and OS version, the anonymous app ID and its state, and coarse subscription status. Nothing is attached or uploaded automatically — you choose whether to paste it, and you can delete anything you would rather not send.

4.10 Website

This site is a set of static files with no analytics, no tracking scripts, no embedded third-party content, and no cookies. Nothing on it profiles you. It is served by Firebase Hosting, which keeps standard server-side request logs — IP address, user agent, and the URL requested — as a platform function of Google’s hosting service. There is no form on this site that collects anything.

5. Camera video and practice data — where the line is

This is the section most people are here for, so it is specific.

Raw camera frames and video never leave your device. The camera runs only during a practice session. Frames are delivered straight into an on-device machine-learning model that ships inside the app, and each frame is analysed and released as the next one arrives; frames that arrive while the previous one is still being processed are dropped outright. The app contains no video recorder, no photo output, and no photo-library permission — there is nothing in it that could write a video file even if it wanted to.

There is also no cloud vision service. Detection runs entirely on your phone against a model bundled with the app. And there is no Learn 2 Putt server: the app has no backend of its own and contains no general-purpose network client. Every outbound connection it makes belongs to one of the third-party services named in section 7.

What survives a putt is a handful of numbers — where the ball started and finished, how far it rolled, how far offline it was, and a green-speed read. Those numbers are stored on your device as your practice history (section 4.5), and coarse versions of some of them are included in the anonymous analytics events (section 4.2). Distinguishing those two is the point: your full practice record is local; the analytics events are a rounded summary tied to a random ID.

6. Why we process it

  • To provide the app — read putts, calibrate the green, track a session, keep your history, and honour your subscription.
  • To understand whether it works — analytics tells us which drills are used, where sessions are abandoned, and how often putts cannot be read.
  • To keep paid access correct — resolving entitlements so you are not locked out of something you paid for.
  • To find and fix failures — crash and error reports.
  • To answer you — support email.
  • To meet legal and app-store obligations — including responding to privacy requests.

If you are in the EEA or UK: we rely on the performance of a contract for providing the app and maintaining your subscription, and on our legitimate interests in improving a product and keeping it from crashing for analytics and diagnostics, balanced against the fact that the data is tied to a random ID and not to you. Where notification permission is asked for, that is consent, and you can withdraw it in your device settings at any time.

7. Who else processes it

We use the following service providers. They process data on our instructions, for the purposes above, and not for their own advertising:

ServiceWhat it handlesTheir policy
Google — Firebase AuthenticationThe anonymous app IDfirebase.google.com/support/privacy
Google — Analytics for FirebaseUsage events (section 4.2)policies.google.com/privacy
Google — CrashlyticsCrash reportsfirebase.google.com/support/privacy
Google — Remote ConfigFetching on-screen copyfirebase.google.com/support/privacy
Google — Firebase HostingServing this website; request logsfirebase.google.com/support/privacy
RevenueCatSubscription and entitlement recordsrevenuecat.com/privacy
Sentry (only when enabled in a build)Errors and performance tracessentry.io/privacy
AppleApp distribution, payments, subscriptionsapple.com/legal/privacy
Google PlayApp distribution, payments, subscriptionspolicies.google.com/privacy

We may also disclose information if the law requires it, to enforce our terms, or as part of a merger or sale of the business — in which case this policy travels with it and you would be told before anything changed.

8. What we do not do

  • We do not sell personal information, and we have not in the twelve months before the date at the top of this page.
  • We do not share it for cross-context behavioural advertising or use it for targeted advertising. The app contains no advertising SDK and requests no advertising identifier, so there is no App Tracking Transparency prompt because there is nothing to track you with.
  • We do not build profiles about you or make automated decisions with legal or similarly significant effects.
  • We do not upload your camera feed. See section 5.

9. How long it is kept

  • On your device — until you delete it, clear the app’s data, or uninstall the app. Practice history is capped at a recent window rather than growing without limit, and the offline subscription cache expires on its own.
  • Analytics — retained by Google for the period configured in the Firebase project, after which it is deleted or aggregated by Google.
  • Crash and error reports — retained by Google Crashlytics and, where enabled, Sentry, on those services’ schedules.
  • Subscription records — kept by RevenueCat and the stores for as long as needed to service the subscription and meet their tax and accounting obligations.
  • Support email — kept while your question is open and for a reasonable period afterwards so we can follow up, then deleted on request.

10. Deleting your data, and the choices you have

In the app

Open Settings and choose Delete account and data. It runs four steps in this order, and the irreversible one goes first so that a failure destroys nothing:

  1. Deletes the anonymous Firebase account.
  2. Detaches analytics, crash reporting and purchases from that ID — Analytics and Crashlytics stop attributing anything to it, Sentry stops tagging events with it, and RevenueCat is logged out.
  3. Erases your practice history and per-attempt records on the device.
  4. Starts a fresh anonymous session so the app keeps working.

If a step fails, the app names the step that did not finish rather than claiming success, and offers either a retry or a route to email us.

What deletion does not do, stated plainly:

  • It does not cancel your subscription. Apple and Google require that to happen in their own surfaces — the deletion guide has the links.
  • It does not recall data already sent. Analytics events and crash reports transmitted before deletion remain with those services until their retention periods expire. The app stops attributing new data to the deleted ID; it cannot reach back into Google’s systems.
  • RevenueCat is detached, not erased. Logging out unlinks the ID; the subscriber record on RevenueCat’s side persists. Email us if you want it removed.
  • It keeps your onboarding progress, so you are not dropped back into a first-run tour you have already sat through.

Step-by-step instructions, including what to do if you have already removed the app, are on the delete your data page.

Other choices

  • Camera — revoke camera permission in your device settings at any time. Practice measurement will not work without it, but nothing else breaks.
  • Notifications — turn them off in your device settings.
  • Analytics and crash reporting — the app has no in-app toggle for these today. Uninstalling removes the on-device ID, and iOS and Android both offer system-level controls over app usage sharing. If you want your analytics and diagnostics data deleted, email us and we will action it against your app user ID.
  • Anything unresolved — write to emmett.deen@deenventurestudio.com. Include your App user ID from Settings → About if you can, because without it we have no way to find your records.

11. Security

On-device data lives in the app’s private storage, protected by the operating system’s app sandbox and device encryption. Traffic to every service named above uses encrypted connections. This website is served over HTTPS with HSTS, and its headers disable camera, microphone and geolocation access and forbid framing.

No secret keys are shipped in the app beyond the public client keys those SDKs are designed to expose. No system is perfectly secure, and we do not claim otherwise.

12. Where it is processed

Deen Venture Studio is in the United States, and the providers in section 7 operate globally. Using the app from outside the United States means information is transferred to and processed in the United States and other countries whose data-protection laws may differ from your own. Where those transfers involve personal data from the EEA, UK or Switzerland, our providers rely on the European Commission’s Standard Contractual Clauses or an equivalent mechanism.

13. Children

Learn 2 Putt is not directed to children. It is intended for golfers aged 13 and over (16 in jurisdictions that set that threshold), and we do not knowingly collect personal information from children below those ages. The app has no age-verification step, so if you believe a child has used it and you would like the associated data removed, email us and we will delete it.

14. Your rights

Depending on where you live, you may have the right to access, correct, delete, or receive a portable copy of your personal information, to object to or restrict certain processing, and to withdraw consent. In the EEA and UK these come from the GDPR; in California, Colorado, Connecticut, Virginia and other US states with comprehensive privacy laws, from those statutes — including the right not to be discriminated against for exercising them.

Exercise any of them by emailing emmett.deen@deenventurestudio.com. We will respond within the time your law allows.

An honest limitation, because it affects what we can do for you: we hold no name, email address, or account tied to your use of the app. The only handle that exists is the anonymous app user ID on your device. Without it we genuinely cannot locate your records — which is a privacy feature, but it does mean an access or deletion request needs that ID from Settings → About to be actionable. You may also authorise an agent to make a request for you, and you can complain to your local data protection authority.

15. Changes to this policy

We will update this page when the app changes what it collects, and move the “last updated” date at the top. For a material change we will give notice in the app or on this site before it takes effect. The version on this page is always the one in force.

16. Contact

Questions, requests, or a correction to something on this page: emmett.deen@deenventurestudio.com, or write to Deen Venture Studio at the address in section 1. You can also use the contact page.