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
- There is no account, sign-up, email or name in the app.
- Photos you choose to identify are sent over the internet for identification. Nothing else leaves your device with them.
- The app measures how it is used with Firebase Analytics and Mixpanel, under random IDs. It does not know who you are.
- I do not sell your data. The app shows no ads and does not track you across other companies' apps and websites.
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.
- The service I run is built to read the photo, forward it and return the answer. It is not built to store the photo or the result. It keeps only a daily scan counter for each anonymous user ID, to apply the daily limit. As a host, Cloudflare handles the connection, including your IP address.
- OpenAI processes the photo under its API terms. According to OpenAI's published documentation, data sent to its API is not used to train its models unless the customer opts in, and OpenAI keeps abuse monitoring logs, which can include inputs and outputs, for up to 30 days unless the law or the need to protect its services requires longer. See OpenAI's data controls page and privacy policy.
- Photos are not sent to Firebase Analytics, Mixpanel or RevenueCat.
- The app asks for camera access only to take a photo, and for photo library access only when you choose a photo. You can change both in iOS Settings.
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:
- Firebase Analytics (Google). Events are tied to the random Firebase user ID and a Firebase app instance ID.
- Mixpanel. Events are tied to the same anonymous ID that RevenueCat uses for your purchases (see below). Our Mixpanel project is in Mixpanel's EU region, and the app sends events to Mixpanel's EU endpoint. The app tells Mixpanel not to use your IP address to work out your location. Free text such as error messages is not sent to Mixpanel.
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
- I do not sell your data.
- I do not use your data to show you ads, and the app shows no ads.
- I do not share your data with data brokers.
- The app does not collect your precise location, contacts, name or email.
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