Arrow Doodle — Privacy Policy
This policy describes what Arrow Doodle actually does. It was written by reading the app's own source code and the server that receives its data, not from a template. If something below does not match what the app does, the app is wrong and we want to hear about it.
The short version. Arrow Doodle creates an anonymous account for you automatically so your progress can be saved. You are never asked for your name, email or phone number. If you choose to sign in with Google, we then also store the name, email address and profile picture URL that Google gives us. The game records how you play — levels, times, taps on rewarded ads, coins, settings — and sends it once a night in a single compressed batch. It shows rewarded video ads from Google AdMob, which you only ever see if you choose to watch one. There is no location tracking, no microphone, no camera, no contacts, and no in-app purchases.
1. Who we are
Arrow Doodle is published by Pixel Fresh Studio ("we", "us"). We are the controller of the personal data described in this policy. You can reach us at info@pixelfreshstudio.com.
This policy covers the Arrow Doodle Android application, package name com.bba.gma.aidafrtnth, and the backend services it talks to. It does not cover Google Play itself, or any other app.
2. Your account and sign-in
Anonymous by default
The first time you open Arrow Doodle, the app signs you in to Firebase Anonymous Authentication. This happens automatically, without asking you, and without collecting any information about you. It produces a random account identifier — a uid — which is what lets your progress be saved and restored. The uid is the key under which everything else described in this policy is filed.
The game also gives your anonymous account a randomly generated display name (for example, a two-word nickname). You did not supply it and it does not identify you.
Choosing a name
You can edit your in-game username in the profile screen. Whatever you type is stored on our servers as free text and is visible to us. Please do not put your real name, email address, phone number or anything else you would not want stored in it.
Linking a Google account (optional)
If you choose "Sign in with Google" to protect your progress, we receive and store from your Google account:
- your email address;
- your Google display name;
- the URL of your Google profile picture.
We do not receive your Google password. Signing in is entirely optional; the game is fully playable without it.
Linking is recorded as an event that contains both your old anonymous identifier and your new one, so that your history before and after signing in can be connected to the same person. If we did not do this, signing in would look to us like one player leaving and a different player arriving.
3. What we collect
3.1 Your profile record
We keep one profile record per account. It contains:
| Field | What it is |
|---|---|
| Account identifier (uid) | The random Firebase identifier for your account. |
| Anonymous flag | Whether you have linked a Google account. |
| Display name | Auto-generated at first launch, or your Google name once you sign in. |
| Username | The name you chose in the profile screen, if you changed it. |
| Email address | Only if you signed in with Google. |
| Profile picture URL | Only if you signed in with Google. |
| Avatar | Which in-game avatar you picked. |
| Language | The language code and name you play in. |
| Country | A two-letter country code, taken from your SIM card's network country, or from your phone's locale setting if there is no SIM. See section 4 — this is not derived from GPS or from your IP address. |
| Device details | Device model, manufacturer, Android API level. |
| App version | The version name and build number of Arrow Doodle you are running. |
| Platform | Always "android". |
| Push token | Your Firebase Cloud Messaging token — see section 10. |
| Wallet | Your coin and heart balances, mirrored so they survive a new phone. |
| Ad policy | Any limit we have placed on rewarded ads for your account, and why. |
| Timestamps | When the record was created and last updated. |
3.2 Gameplay and app-behaviour records
The app writes a record every time something meaningful happens. There are 28 kinds of record. Every one of them is filed against your account identifier. They are:
| Group | What is recorded |
|---|---|
| Sessions | App opened and closed; whether it was a cold start; how the app was launched; app version; Android API level; your locale; network type (for example Wi-Fi or mobile); how many days since you installed; how long the session lasted; how long the app was in the foreground; whether it closed cleanly; how much time you spent on each screen. |
| Device snapshot | Once per session: device model, manufacturer, Android API level, app build number, country code, language tag, screen size in dp, RAM in MB, network type. |
| Play | Each level started and each level ended: level id and number, chapter, shape, difficulty, campaign or daily mode, attempt number, time taken, stars, misses, arrows placed, lives and hints remaining, whether you completed, failed, abandoned or restarted, and why you failed. Also chapters unlocked, badges earned, and taps on the "please make more levels" button. |
| Daily challenge | When you open and claim the daily puzzle, your streak length, days since you last played, and how many hours before local midnight you played. This last figure exists so we can judge whether the daily reminder fires at a useful time. |
| Ads | Every rewarded ad offer: which placement offered it, whether you watched, skipped or it failed, whether the reward was granted, the AdMob ad unit id, how long it took to load, how long you watched, any error codes, and a stage-by-stage timeline of the offer. Also every ad we refused to show you and why (cooldown, daily cap, enforced break). |
| In-game economy | Coins and hearts earned and spent, the balance afterwards, the source or sink, and shop purchases and refusals. These are in-game currencies only. Arrow Doodle has no real-money purchases. |
| Settings and chrome | Settings you change (the setting key and its old and new value), language changes, avatar changes, onboarding steps and how long each took, tutorial views, and notification opens. |
| Username changes | Only the length of the new name. The text you typed is deliberately never put into this record. |
| Sign-in events | Sign in, sign out and account linking: which method (anonymous or Google), whether it succeeded, and the old and new account identifiers. |
| Problems | When something breaks: an error code, a severity, which screen it happened on, whether it was fatal, and a short diagnostic string generated by the app. |
Each record also carries a random event identifier, a session identifier, a sequence number, the time it happened, and — on the batch that carries it — your device's UTC offset in minutes and its local calendar date. Rewarded-ad records additionally carry a per-boot identifier, which is a number derived from your Android build fingerprint string combined with the time your phone last booted. It changes every time you reboot and is used to detect clock tampering during ads; it is not used to track you across apps.
3.3 Advertising data
Arrow Doodle shows rewarded video ads only, supplied by Google AdMob. There are no banner ads and no ads forced between levels; an ad plays only when you choose to watch one in exchange for a rescue, extra time or a hint.
When an ad is requested or played, the Google Mobile Ads SDK collects and sends data to Google directly. That includes your device's advertising ID (a resettable identifier Android provides for advertising), your IP address, and device and ad-interaction information. This happens inside Google's SDK — we do not receive the advertising ID, and it is deliberately not part of any record we store. What Google does with it is governed by Google's own privacy terms. See section 9 for how consent works.
3.4 Diagnostics
If you use the in-app suspension appeal form, we store the reference you were shown, the message you write, your account identifier and the time. The message is free text — please do not include information you would not want stored.
3.5 Information collected automatically by Google
Because the app talks to Firebase (authentication, database and messaging) and to AdMob over the internet, Google's servers necessarily see your device's IP address and connection metadata. We do not use IP addresses ourselves and we do not geolocate them — our own backend is handed a stored document rather than a live connection, so no client IP reaches it.
4. What we do not collect
These were considered during design and deliberately excluded:
- No location. No GPS, no location permission, no Wi-Fi or cell-tower scanning, and no IP geolocation. The country code in your profile comes from your SIM card's network country or your phone's locale setting.
- No contacts, photos, files, camera, or microphone. The app requests none of these permissions.
- No advertising ID in our own records. Google's ad SDK uses one; nothing we store contains it.
- No real-money purchases. There is no billing library in the app and no payment information of any kind.
- No third-party analytics or crash-reporting SDK. There is no Google Analytics for Firebase, no Crashlytics, and no advertising attribution or social SDK in this app.
- No individual board touches. We record the outcome of a level, not every tap you made on it.
- No free text you type, in our gameplay records. Changing your username records the length of the new name only. (Your chosen username itself is stored on your profile record — see section 3.1.)
- No health, biometric, financial, political, religious or other special-category data.
5. Android permissions
Arrow Doodle declares exactly five permissions, and no others:
- INTERNET and ACCESS_NETWORK_STATE — to save your progress, upload the nightly batch and load ads.
- VIBRATE — haptic feedback, which you can turn off in Settings.
- POST_NOTIFICATIONS — to show the daily streak reminder and app-status messages. You can refuse or revoke this at any time in Android's settings; the game works without it.
- com.google.android.gms.permission.AD_ID — this is what lets Google's ad SDK read your device's advertising ID in order to serve rewarded ads. It is declared because the app genuinely uses the advertising ID for advertising, as described in section 9. You can reset or delete that identifier at any time in Android Settings → Google → Ads.
None of these is a runtime permission that grants access to your location, camera, microphone, contacts, files or phone number, and the app requests no such permission.
6. How your data travels
- Everything the game records is written to a local database on your phone first. Nothing is sent in real time.
- Once a night — at your local midnight, plus a fixed offset of up to two hours that is derived from your account identifier so that not every phone uploads at once — the app packs every record it has not yet sent into a single compressed batch and writes it to our Firebase Cloud Firestore database. This only happens when your device has a network connection and its battery is not low. On a fresh install there are also two early uploads, five and fifteen minutes after installation.
- Our collector reads Firestore once an hour, unpacks each batch into a PostgreSQL database on a private server, and then deletes the batch from Firestore — strictly after the database write has committed, never before.
- Your phone deletes its own local copy of those records once it knows the upload succeeded.
- Your profile record travels separately. It is written to Firestore when your account is created, when you link or sign out of a Google account, when your push token changes, when you change your username or avatar, and when your wallet changes. It is read once by our collector and copied into PostgreSQL.
The app never connects to our server directly. Firebase sits between them in both directions.
7. Where your data is stored
- Google Cloud / Firebase — project aidafrtnth. This holds your profile record and, briefly, the nightly batches.
- A private PostgreSQL database on a virtual private server operated on our behalf. This is where the data is analysed. It is not reachable from the public internet; access requires an SSH connection to that machine.
Both of these may be located in a country other than yours, and your data may therefore be transferred internationally. The hosting region for each is set out at info@pixelfreshstudio.com on request.
8. How long we keep it
| Data | Retention |
|---|---|
| Records queued on your phone | Deleted as soon as the upload is confirmed. If uploads keep failing they are kept until they succeed. Uninstalling the app destroys them. |
| Nightly batch in Firestore | Deleted as soon as it has been copied into our database — normally within an hour. A batch that cannot be processed is kept no more than 7 days before it is removed. |
| Batch bookkeeping (which batch arrived when, and any batch that failed to process) | Up to 30 days. |
| Individual gameplay records | Up to 180 days. |
| Structured tables derived from them — sessions, level attempts, ad offers, economy transactions, settings changes, daily plays, problem reports | Up to 2 years. |
| Your profile record, its version history, and the links between your account identifiers | Kept indefinitely, unless you ask us to delete it. See below. |
| Aggregate daily counts and totals — figures such as "how many players cleared level 40 on 3 March", which contain no individual in them | Kept indefinitely. These are not deleted when you ask for deletion, because there is no individual record inside them to remove. |
Your profile is kept indefinitely by default for a specific reason: an account identifier that no longer has anything attached to it is the only remaining evidence that the account existed, and a chain of linked identifiers may still point at it. Deleting profiles automatically would silently break the connection between your history before and after you signed in. This default is overridden the moment you ask us to delete your data — see Account & Data Deletion.
9. Advertising and consent
Arrow Doodle is free and is funded by rewarded video ads from Google AdMob. You are never forced to watch one.
Where the law requires it — including the European Economic Area, the United Kingdom, Switzerland, and certain US states — we show you a consent form, built with Google's User Messaging Platform, before any advertising request is made at all. The Google Mobile Ads SDK is not started, and no ad is requested, until your consent choice has been settled. Your choice is recorded on your device and applied for as long as it remains valid. Where an ongoing choice applies to you, the app gives you a way to reopen that form and change it. If you decline personalised advertising, ads still appear, but Google is instructed to serve non-personalised ads.
Where consent is not legally required, ads may be personalised using your device's advertising ID. You can limit this yourself at any time in Android Settings → Google → Ads, where you can also delete or reset your advertising ID.
Google is an independent controller of the data it collects through AdMob. See How Google uses information from sites or apps that use our services and Google's list of advertising partners.
10. Notifications
Arrow Doodle sends two kinds of notification:
- Streak reminders, generated on your phone by the app itself. Nothing is sent to a server to produce them.
- Messages from us, delivered through Firebase Cloud Messaging. To receive these, the app stores an FCM token — an identifier for your app installation — on your profile record, and subscribes you to a topic named universal. We use these messages to tell the app to upload its batch early, to apply a limit on rewarded ads, and to display app-status notices such as a required update.
You can turn off all notifications in Android's settings. Signing out clears the push token from the account you are leaving, so notifications aimed at it stop reaching your phone.
11. Children
Arrow Doodle is a logic puzzle game listed in the Puzzle category and is not directed to children. It is not enrolled in the Google Play Families programme, it contains no content designed to appeal primarily to children, and its store listing is aimed at an adult puzzle audience.
The app does not knowingly collect personal information from children under 13 (or the equivalent age of digital consent where you live). The app does not ask for your age, and we therefore cannot verify it. If you are a parent or guardian and believe your child has provided us with personal information, contact us at info@pixelfreshstudio.com and we will delete the account and its data.
12. Your choices and your rights
- Play without an account. You never have to sign in with Google. Without it, your data is tied only to a random identifier.
- Delete your data. See Account & Data Deletion. This is the route Google Play requires us to provide, and it is real.
- Ask for a copy. Write to info@pixelfreshstudio.com and we will export what we hold about your account.
- Correct something. Most of what we hold you can change in the app itself — your username, avatar and language. For anything else, write to us.
- Advertising. Reset or delete your advertising ID in Android's settings, and change your consent choice from the app's settings at any time.
- Notifications. Revoke the notification permission in Android's settings.
- Uninstall. Uninstalling removes the local database and anything not yet uploaded. It does not delete what has already reached our servers — use the deletion route for that.
Depending on where you live, you may also have the right to object to or restrict processing, to data portability, and to complain to your local data protection authority. Write to info@pixelfreshstudio.com to exercise any of these. We respond to requests within 30 days.
Where you live changes which law applies
We are based in South Africa, so the Protection of Personal Information Act, 2013 (POPIA) governs how we handle your information. Under POPIA you may ask what we hold about you, have it corrected or deleted, object to how we use it, and complain to the Information Regulator (South Africa) if you think we have got it wrong. The Regulator can be reached at enquiries@inforegulator.org.za.
If you are in the European Economic Area, the United Kingdom or Switzerland, the GDPR (and the UK GDPR) also applies to you. That gives you rights of access, rectification, erasure, restriction, portability and objection, and the right to complain to your own national supervisory authority. Our lawful basis is your consent for advertising — which is what the consent screen shown on first launch in those regions is for, and which you can change at any time from the app's settings — and our legitimate interest in keeping the game working and understanding how it is played for everything else.
Your information crosses borders: we are in South Africa, Google's Firebase services operate across Google's global infrastructure, and the server that stores the gameplay records is a private machine rented from a hosting provider. POPIA section 72 permits those transfers where the recipient is bound by rules offering comparable protection — which is the basis we rely on, through our agreements with those providers.
There is currently no setting inside the app to switch off gameplay recording. If you do not want your play recorded, do not install the app, or ask us to delete your data.
13. Who else sees your data
We do not sell your data and we do not share it with data brokers. It is processed by:
- Google (Firebase Authentication, Cloud Firestore, Cloud Messaging) — hosting your account, your profile record and your batches in transit.
- Google (AdMob) — serving rewarded ads, as an independent controller of what its SDK collects.
- Our hosting provider — which operates the virtual private server the PostgreSQL database runs on. It has no access to the application data other than as an infrastructure operator.
We may also disclose data where we are legally required to, or to establish or defend legal claims.
14. Android backup
Arrow Doodle allows Android's built-in backup. Depending on your device settings, Android may copy the app's local data — including its local records queue and your local settings — to your own Google Drive backup. That backup belongs to you and is governed by Google's privacy policy. You can turn app backup off in Android's system settings.
15. Security
Traffic between the app and Google's services uses TLS. Our analysis database is not exposed to the public internet; it is bound to the local interface of its host and reachable only over an SSH tunnel by an operator. Credentials are held in restricted files on that machine and are not stored in source code.
No system is perfectly secure. We do not promise that your data can never be accessed by unauthorised parties, and you should not put sensitive information into your username or an appeal message.
16. Changes to this policy
If we change what we collect or what we do with it, we will update this page and change the effective date at the top. Material changes will be announced in the app.
17. Contact
Pixel Fresh Studio info@pixelfreshstudio.com
For data deletion, please use Account & Data Deletion, which tells you exactly what to include so we can find your account.
Legal index · Terms of Use · Account & Data Deletion
Arrow Doodle · com.bba.gma.aidafrtnth