Konfeti Games
Starlane — iOS and Android
Last updated: 15 September 2026 (evening)
This policy describes what Starlane collects, who
receives it, why, and how to stop it. It is written to be read, not to be survived: if
anything below is unclear, that is a defect and you should tell us at
support@konfetigames.com.
The game is operated by Konfeti Games ("we"), the data controller for
the purposes of the UK and EU General Data Protection Regulation.
| Identifier | What it is | Who gets it |
|---|---|---|
| Advertising ID (IDFA on iOS, AAID on Android) |
A resettable device-level ID used to target and measure ads. On iOS it is only read if you tap Allow on the system tracking prompt. On Android it is available unless you switch it off in system settings. | Google AdMob and its advertising partners |
| Firebase installation / app instance ID | A random ID identifying this installation of the app, regenerated if you reinstall. | Google Firebase |
| Anonymous account ID (UID) | A random ID created on first launch by Firebase Anonymous Authentication. It is not linked to an email, a phone number, or any account you own. | Google Firebase, and us |
| Pilot code | A short code derived from your UID so friends can look you up on the leaderboard. | Anyone who can see your leaderboard entry |
By default your progress lives under the anonymous ID above and is not recoverable if you lose the device. If you choose to create an account (Settings → Cloud Account), you can do it with Sign in with Apple, Sign in with Google, or an email and password. Whichever you pick, it is attached to your existing anonymous ID rather than replacing it, so nothing you've already earned is lost.
| Method | What we then hold, linked to your account |
|---|---|
| Sign in with Apple | A stable, app-specific identifier from Apple, and whichever email address Apple hands us — your real one, or, if you choose "Hide My Email," a private relay address that forwards to you without revealing it to us. |
| Sign in with Google | Your Google account's email address and the display name and profile photo URL Google shares for sign-in, from Google Sign-In. |
| Email and password | The email address you type. Your password is sent straight to Firebase Authentication over an encrypted connection and stored there only as a salted hash — not in plain text, and not somewhere we can read it back. |
Once signed in, the cloud save described in §1.3 is no longer just a write-only mirror: it is readable back, so the same account opened on a second device restores your progress. If that device already had different local progress, you are shown a one-time choice — keep this device's save or the account's — before anything is overwritten.
You can sign out at any time (Settings → Sign Out), which returns you to a fresh anonymous session; your account and its cloud save are untouched and you can sign back in later. You can also delete your account entirely (Settings → Delete Account): this removes your Firebase Authentication identity, your cloud save, and — because a leaderboard or Daily Flight entry under your UID would otherwise outlive an account nobody can prove they own — your leaderboard row and any Daily Flight entries and ghost traces you published. This is immediate and irreversible, unlike the cloud-save deletion in §8, which previously required emailing us.
Every one of the following events is sent to Google Analytics for Firebase, with the parameters listed. This is the complete list; there are no others.
| Event | Parameters sent |
|---|---|
run_started | level, difficulty, ship skin |
run_ended | level, score, distance, reason the run ended, credits earned |
level_cleared | level, score, seconds taken |
victory | score |
coins_earned / coins_spent | amount, source or item |
upgrade_bought | upgrade id, level, price |
skin_bought / skin_selected | skin id, price |
ad_requested / ad_shown / ad_rewarded / ad_failed | placement (revive, double coins, free coins, interstitial) |
daily_claimed | streak length, amount |
mission_claimed | mission kind, reward |
revive_used | method (ad or credits), level |
language_changed | language code |
iap_purchased | product id, credits granted |
Four properties are attached to your anonymous profile so events can be grouped: your language, your difficulty setting, your selected ship skin, and your highest level reached.
Google Analytics also automatically records, without us asking it to: device model, operating system version, app version, country and language, session start and length, and first-open time. It derives approximate location (usually country or city level) from your IP address. Google does not give us your IP address, but Google has it.
When the app goes to the background, we write one document to Google Cloud Firestore at
players/<your UID> containing exactly: your best score, your highest level
reached, your credit balance, your total number of runs, the platform (ios or
android), and a server timestamp. Nothing else.
The leaderboard is opt-in by construction: it requires a pilot name, and there is no name by default. If you leave the name field in Settings empty, nothing is ever published and your scores stay on your device and in your private cloud save.
If you do enter a name, we write to leaderboard/<your UID>: the name
(truncated to 18 characters), your best score, your highest level, your pilot code, the
current ISO week key, your best score this week, and a server timestamp. Anyone using the app
can see this. Choose a name accordingly — do not use your full legal name.
The Daily Flight is one course a day, the same for every player. If you have a pilot name
and beat your own best for the day, we write to
daily/<day>/entries/<your UID>: the name, your pilot code, that day's
best score and distance, your ship skin, the platform, and a server timestamp. Beside it,
daily/<day>/ghosts/<your UID> holds the same fields plus a
ghost trace — your ship's position across the lane, sampled once every 4 km of
that run — which other players race against. Anyone using the app can see that day's board:
your name, score and ghost. With no pilot name nothing is written, and your daily best stays
on your device.
If you share a challenge link, the link itself carries your pilot name, your pilot code,
the day and your score, so anyone who receives it can read them. It opens a page on our
website (starlane.konfetigames.com) that runs no analytics, sets no cookies and
loads nothing from third parties; it only hands the challenge to the app. Opening someone
else's link adds that pilot to your friends list, which is kept only on your device.
Firebase Crashlytics receives crash stack traces, the device model, operating system version, app version, and the device's memory, storage and orientation state at the moment of the crash. It is not linked to your leaderboard name.
Your settings, credit balance, unlocked levels, upgrades, daily reward streak, mission
progress, this week's best score, your friends list, and the past week's Daily Flight bests
and ghosts are stored locally (iOS UserDefaults, Android
SharedPreferences). They leave the device only as part of the cloud save,
leaderboard and Daily Flight entries described above. Deleting the app deletes all of it.
The game sells three kinds of one-time purchase: a Remove Ads upgrade, a
one-time Welcome Pack, and consumable Credit Packs. Every
purchase is processed entirely by Apple (StoreKit) or Google (Play Billing) — your card number,
bank details, and any other payment credentials go directly to them and are never sent to us or
to Firebase. Once StoreKit or Play Billing confirms the transaction, the only thing we receive
is the iap_purchased analytics event described in §1.2: the product's ID and the
number of credits it granted. Not the price, not your payment method, not your name. Restoring a
purchase on a new device goes through Apple or Google directly (Store → Restore
Purchases) — it does not require or create an account with us.
The game shows two kinds of ad: full-screen ads between runs, and optional rewarded ads you choose to watch in exchange for credits or a second life. Both are served by Google AdMob.
To sell an ad, AdMob transmits to its ad partners: your advertising ID, your IP address (and the approximate location derived from it), your device model and operating system, your language and country, and information about the ad itself — that it was requested, shown, clicked, or that a reward was earned. Under Google's participation in the IAB Transparency and Consent Framework, this can be shared with a large number of separate advertising companies; the current list is shown in the consent form itself, behind the "List of partners" link, and we recommend actually opening it once.
On first launch you are shown a consent form. If you choose Do not consent, the advertising SDK is not started at all and no ad request is made. You can change that decision at any time from Settings → Ad privacy options, and the new choice takes effect on the next ad request.
iOS shows Apple's App Tracking Transparency prompt. Choosing Ask App Not to Track means the IDFA is not available to us or to Google, and the ads you see are chosen without it. The game remains fully playable and every reward is still obtainable; only the ads become less specific.
You can reset or delete your advertising ID in Settings → Privacy → Ads on your device.
We ask AdMob to serve only ads rated T (teen) or lower — G, PG or T. Ads rated MA (mature audiences) are never requested. Ad content is nonetheless chosen by Google, not by us, and we cannot review individual ads before they appear.
| Recipient | What they receive | Their policy |
|---|---|---|
| Google Ireland Ltd / Google LLC — AdMob | Advertising ID, IP address, device and ad interaction data | policies.google.com |
| Google — Firebase Analytics | The events and properties in §1.2, plus automatic device data | firebase.google.com/support/privacy |
| Google — Crashlytics | Crash reports and device state (§1.6) | firebase.google.com/support/privacy |
| Google — Cloud Firestore & Authentication | Your anonymous UID, cloud save, and leaderboard and Daily Flight entries if you set a pilot name; if you create an account, your email and the account identifiers in §1.1a | firebase.google.com/support/privacy |
| Apple — Sign in with Apple | Only if you choose that sign-in method: your Apple ID's app-specific identifier and the email or relay address you allow through (§1.1a) | apple.com/legal/privacy |
| Google — Google Sign-In | Only if you choose that sign-in method: your Google account's email, display name and profile photo URL (§1.1a) | policies.google.com/privacy |
| AdMob's advertising partners | As disclosed in the consent form's partner list | Listed individually in that form |
| Other players | Your pilot name, scores, level and pilot code, and on the Daily Flight board your distance, ship skin and ghost trace — only if you entered a name | — |
| Whoever you send a challenge link to | The pilot name, pilot code, day and score written in the link (§1.5) | — |
We do not sell your personal data, and we do not share it for cross-context behavioural advertising beyond the advertising described in §3. If you are a California resident, that advertising may nonetheless count as a "sale" or "share" under the CCPA/CPRA; declining consent, or opting out through the form available in your region, stops it.
support@konfetigames.com.Google processes this data on servers in the United States and elsewhere. Transfers out of the EEA and the UK rely on the European Commission's Standard Contractual Clauses and, where applicable, the EU–US Data Privacy Framework, both of which Google has adopted.
If you are in the EEA, the UK or Switzerland you have the right of access, rectification, erasure, restriction, portability, and objection, and the right to withdraw consent at any time. If you are in California you have the right to know, delete, correct, and to opt out of sale or sharing, and not to be discriminated against for exercising them.
In practice:
support@konfetigames.com with your pilot code, shown on the leaderboard screen
— that code is the only way we can find your record, because we hold nothing else that
identifies you. We respond within 30 days.The game is a general-audience product. It is not directed to children under 13 (or under 16 in jurisdictions that set that age), and we do not knowingly collect personal data from them. If you believe a child has provided personal data — realistically, by typing a real name into the leaderboard — contact us and we will delete the entry.
Traffic between the app and Google's services is encrypted in transit. Leaderboard and Daily Flight documents are readable by any player by design; write access is restricted to the owner of the anonymous UID by Firestore security rules, and a Daily Flight entry can only be written around its own day and only to raise the score. No system is perfectly secure, and we will not claim otherwise.
If this policy changes materially — a new category of data, a new recipient, a new purpose — we will update the date at the top and, where the law requires it, ask for your consent again through the in-app form.
Konfeti Games
support@konfetigames.com