Privacy Policy

Last updated: 25 October 2026

Fish ID (the app is named Fish Identifier in the App Store) is an independent iPhone app published by Orkhan Alizada. It identifies fish from photos. This page explains what the app does with your data.

In short

Photos you identify

When you take or pick a photo and ask the app to identify the fish, the app shrinks the photo (longest side about 1280 pixels) and sends it over HTTPS to an identification service that I run on Cloudflare. That service passes the photo to the OpenAI API to get the species result, and sends the result back to the app.

Anonymous sign-in and app check (Firebase)

The app signs in to Firebase Authentication anonymously. This creates a random user ID, with no name, email or password. The ID lets the identification service apply the daily limit. The app also uses Firebase App Check, which relies on Apple's App Attest, so that the service only answers the genuine app. These services are provided by Google.

Usage analytics (Firebase Analytics and Mixpanel)

The app records events about how it is used, to see which screens work and where people stop. Events go to two services:

In summary, events cover: opening and closing the app; onboarding steps; the camera permission result; starting a scan and whether the photo came from the camera or the library; scan success or failure, how long it took, the species name the app identified and its confidence score; viewing, saving, sharing and deleting results and collection items; opening the species card, locked sections, lookalikes and the fishing rules link (the state you pick is not sent); opening tabs, guides and settings; viewing the paywall and its source; choosing, starting, completing, cancelling or failing a purchase, with the plan, price and currency; and opening the Terms and Privacy pages.

Events also carry basic details: app version and build, whether it is a test or a released build, iOS version, device model, whether you are subscribed, which plan, how many scans you have done, days since install, whether you finished onboarding, your onboarding answers (where you fish and what matters most, picked from fixed choices), how many bought instant scans you have left and, for an Apple Ads install, the Apple Ads campaign, ad group and keyword IDs (see below). Firebase and Mixpanel may add standard device information through their own SDKs. Photos, notes, names and email are never part of these events.

See Google's privacy policy, Firebase privacy information and Mixpanel's privacy policy.

Purchases (RevenueCat and Apple)

Apple processes all payments. I never see your card or Apple ID details. RevenueCat checks and restores your subscription using an anonymous app user ID and your purchase history. It can also pass purchase events, such as a new subscription, a renewal or a trial conversion, to Mixpanel under that same anonymous ID.

The app also sends RevenueCat a few attributes: how many times the paywall was shown and where it was first and last shown, the random Firebase user ID, the Firebase app instance ID and the Mixpanel ID, so purchases can be matched with usage data, and, for an Apple Ads install, the Apple Ads campaign, ad group and keyword IDs. See RevenueCat's privacy policy.

Catch log and reminders

The catch log (length, weight, bait, place and date) and your notes stay on your device. They are not sent to us or to any analytics service; analytics only records that a catch was logged, with yes/no details and the bait type. The weekend reminder is a local notification scheduled on your device, only if you allow notifications.

Apple Ads attribution

If you installed the app after tapping an Apple Ads ad, the app reads Apple's attribution token (AdServices) and passes it to RevenueCat. The token tells me which campaign and keyword led to the install. It does not contain the advertising identifier (IDFA), and reading it does not need your tracking permission.

The app also sends the same token to Apple and gets back the numeric IDs of the campaign, ad group and keyword. The app adds these three IDs, the install date and whether you used the app before this version to the anonymous usage events sent to Mixpanel, and to your anonymous profile in RevenueCat. This shows me which ads bring people who go on to buy. The IDs identify an ad, not you, and they are not used to track you across other companies' apps and websites.

No tracking across apps

The app does not track you. It does not link your data with data from other companies' apps and websites for advertising, and it does not share your data with data brokers. It does not read the advertising identifier (IDFA) and shows no tracking prompt (Apple's App Tracking Transparency).

Data stored on your device

Your saved collection (photos, identification results, your notes and favourites), the state you pick for fishing rules, and small counters such as how many free scans you used are stored on your iPhone or iPad. The app does not upload them to my servers. Deleting the app removes this data from the device.

Fishing rules links

The fishing rules link opens a state wildlife agency website inside the app. That website is run by someone else and has its own privacy practices.

What I do not do

Children

Fish ID is not directed at children under 13, and I do not knowingly collect data from them.

Retention and your requests

Because IDs are random and I cannot tell who you are from them, I may not be able to find the data that belongs to one device. If you want me to look for it or delete it, email me and I will do what I can. Data held by Google, Mixpanel, OpenAI, RevenueCat and Cloudflare is kept under their own policies. Some of these services process data outside your country.

Changes

If the app changes what it does with data, I will update this page and the date above.

Contact

Orkhan Alizada · orkhanalizada@hotmail.com