Privacy Policy
Tiny Dungeon is a single-player puzzle game made by Qirai Technologies. There is no user name, no password, no advertising and no social features. This policy describes everything it collects and why.
The short version. Nothing reaches us until you ask for it. The game saves on your phone; only when you turn on cloud saves — or buy gems, which turns them on — do we create an anonymous ID and keep your progress, your balances, what you bought and your settings against it. We use Google Firebase to do it. We do not ask for your name or email, we do not see your payment details, and we do not sell anything to anyone.
Would you rather read the short version? Privacy in plain words says the same things without the legal vocabulary. It is written to be understood by a thirteen-year-old, which is the youngest this game is meant for.
Contents
1. Who we are
The controller of the data described here is Qirai Technologies (3-101-960370 Sociedad Anónima), Río Segundo, Alajuela, Costa Rica.. You can reach us at privacy@qirai.tech.
Tiny Dungeon is sold worldwide, so more than one data protection law applies to it, and we hold ourselves to all of them:
- The UK and EU GDPR, for players in the United Kingdom and the European Economic Area. Where we rely on a legal basis, it is named in section 3, and your rights are set out in section 6.
- Costa Rican law — Ley N.º 8968, overseen by the Agencia de Protección de Datos de los Habitantes (PRODHAB) — because that is where we are established.
Where these differ we apply whichever gives you more protection, to every player, wherever they live. We do not offer a weaker standard outside Europe.
Our EU and UK representatives have not been appointed yet. Because we are established outside the European Union, Article 27 of the GDPR requires us to name a representative in the Union, and the UK GDPR requires a separate one. Both are real appointments with named firms, so we will not print a placeholder that looks like one. Until they are in place, write to us directly at the address in section 10 and we will answer as if you had written to them; this notice will be replaced with their names and addresses when they are appointed.
2. What we collect
An anonymous player ID
The app does not create an account when you first open it. It creates one the first time you turn on cloud saves, or the first time you buy gems — a purchase has to be verified on our servers before it can be credited, so buying turns cloud saves on and says so before the store opens. Until one of those happens there is no identifier, no document, and nothing about you on our servers at all.
The account, when it is created, is anonymous, through Firebase Authentication: a random identifier, not linked to your name, email, phone number, or any account you hold elsewhere. We cannot use it to identify you as a person. It exists so your progress can be carried between devices and so purchases can be credited to the right save.
Game data
Stored on your device. With cloud saves on, the same data is also kept on our servers under your anonymous ID; with cloud saves off it never leaves your phone:
| Data | Example |
|---|---|
| Progress | Which rooms you have completed, how far you have reached |
| Balances | Your gold and gems |
| Inventory | Which heroes you own and which is equipped |
| Reward records | Which rooms have already paid their one-time gold |
| Settings | Language, sound preferences, hints, vibration |
| Profile | When the save was created, when it was last used, which platform created it |
Purchase records
When you buy gems, we record the store the purchase came from, the product identifier, the store's transaction identifier, whether it was a sandbox or production purchase, how many gems it granted, and when. This is what lets us give you what you paid for exactly once, and support a refund or a dispute later.
We also record the storefront the store reports for that purchase — Apple's storefront, or Google Play's region code, for example USA or DE. It comes from the store's own verified answer rather than from your device, and we use it for support and accounting.
We never see your payment details. Card numbers, billing addresses and the payment itself are handled entirely by Apple or Google.
Analytics
Off unless you switch it on. The game asks once, after the age question, and collects nothing until you say yes. Declining is one tap, the same size as accepting, and the game is identical either way. You can change your mind whenever you like in Settings → Privacy, and turning it off stops collection immediately rather than at the next launch. If you never answer, nothing is collected.
If you do agree, we use Firebase Analytics to understand how the game is played — which rooms people reach, where they stop, whether a purchase flow failed. The events we send are: starting and completing a room, selecting or buying a hero, opening the shop, buying a gold bundle, starting, completing or failing a gem purchase, and changing language. They carry a room number, a hero name, a product identifier or a language code, and nothing else.
Firebase Analytics also collects some information automatically, including an app instance ID, device model, operating system version, and approximate country. We do not send it purchase tokens, receipts, or anything that identifies you as a person.
Crash reports
On the same switch as analytics, and off by default. If you agree, and the app crashes, Firebase Crashlytics sends us a report: the error, where in the code it happened, the device state at the time, and an installation identifier Crashlytics generates for itself. We do not attach purchase data or anything that identifies you as a person.
Refusing costs us the crash reports and costs you nothing, which is the trade we chose deliberately. A crash report is diagnostic rather than measurement, and we could have argued a different legal basis for it; we decided that a player who says no to being measured has said no to having their device described to us as well.
Abuse protection
Firebase App Check verifies that requests come from a genuine copy of the app, using Play Integrity on Android and App Attest on iOS. This helps stop people forging requests to our servers to award themselves currency.
The services behind all of this
Everything above runs on Google Firebase. Naming the parts, because "we use Firebase" is not a description of anything:
| Service | What it does here |
|---|---|
| Firebase Authentication | Issues the anonymous ID, and holds the optional link to an Apple or Google account |
| Cloud Firestore | Stores your progress, balances, heroes and synced settings under that ID |
| Cloud Functions | Runs the server side of every purchase and reward, so a balance is never set by the app on your phone |
| Firebase Analytics | The gameplay events above. Consent only |
| Firebase Crashlytics | Crash reports. Consent only |
| Firebase App Check | Attests that a request came from a genuine copy of the app |
Purchases themselves are handled by Apple or Google Play as the merchant. We never see a card number.
If you told us you are under 16
Neither analytics nor crash reporting runs at all, whatever you tap afterwards. The age answer is checked first and independently of consent, so a younger player who agrees to analytics still sends none. This is a real difference in how the app behaves, not a policy promise: the two checks are separate conditions in the code and both must pass.
We use 16 rather than 13 for this. The stores list the game as suitable from 13, and data-protection law across the EU sets the age of consent anywhere between 13 and 16; taking the highest of those means one rule protects everyone, wherever they live.
What we do not collect
- Your name, email address or phone number
- Your location — we ask for no location permission and derive nothing from your device. A purchase record carries the country or region the store itself reports for that purchase
- Contacts, photos, microphone or camera
- Advertising identifiers — the game contains no advertising
- Anything we sell or share with data brokers
3. Why we collect it
| Purpose | Legal basis (UK/EU GDPR) |
|---|---|
| Saving your progress and balances, delivering purchases | Performance of a contract — Art. 6(1)(b). It is the service you asked for. Payment itself is taken by Apple or Google as the merchant, under their own terms |
| Preventing duplicate or fraudulent purchases; App Check | Legitimate interests — protecting the service and paying customers |
| Keeping purchase records for refunds, disputes and accounting | Legal obligation and legitimate interests |
| Analytics and crash reporting | Consent, and nothing else — Art. 6(1)(a). Asked once, off until given, withdrawable at any time in Settings without losing anything, and never applied at all to a player under 16 |
| Keeping your purchase when you change phone | Performance of a contract — Art. 6(1)(b). You asked us to keep something you bought. Optional, and deliberately not bundled with the analytics question, which rests on consent |
| App Check, and refusing forged requests | Legitimate interests — Art. 6(1)(f). Protecting the service and the people who paid for it. It attests the app binary and carries no identity of yours |
4. Who processes it
We use Google Firebase (Google Ireland Limited / Google LLC) for authentication, storage, analytics, crash reporting and abuse protection. Google acts as our processor and its own terms apply to that processing.
Apple and Google Play process purchases as independent controllers under their own privacy policies. We receive only confirmation of a purchase and its identifiers.
Where your data goes
We are established in Costa Rica and Google's infrastructure is global, so your data is processed outside Costa Rica and outside the European Economic Area, including in the United States. Two mechanisms cover that:
- Standard Contractual Clauses. Google's data processing terms, which we are bound by as a Firebase customer, incorporate the European Commission's approved clauses for transfers out of the EEA and the UK Addendum for transfers out of the United Kingdom.
- The EU–US Data Privacy Framework. Google LLC is certified under it, which the European Commission has recognised as providing an adequate level of protection for transfers to certified US organisations.
Neither of those is something we negotiated; both come with using Firebase, and we name them so you can check them rather than take our word for it.
We do not sell personal information, and we do not share it for advertising.
5. How long we keep it
| Data | Kept for |
|---|---|
| Progress, balances, heroes, synced settings | Until you delete it. There is no automatic expiry — no code deletes it on a timer, and we would rather say so than invent a period we do not enforce |
| Your anonymous ID, and any linked account | Until you delete it, which deletes the account itself |
| Purchase records | Indefinitely, with your ID removed when you delete. They are financial records, and the transaction ID is what stops a refunded purchase being paid out twice |
| Analytics events | The period configured in Firebase, which Google caps at 14 months for event data |
| Crash reports | Google's own retention for Crashlytics, which is 90 days for a closed issue |
| Settings on your phone | Until you uninstall. They never leave the device unless cloud saves are on, and they carry nothing of value |
- Game data — while the save is in use, and until you ask us to delete it.
- Purchase records — retained after deletion, with your anonymous ID removed. We explain why in Delete my data: these are financial records needed for refunds and accounting, and keeping the transaction identifier is what stops a refunded purchase being replayed for a second payout.
- Analytics and crash data — kept for the retention period configured in Firebase.
6. Your rights
We extend these to every player, whether or not the law where you live requires it:
- Access — a copy of what we hold about you.
- Rectification — correction of anything wrong.
- Erasure — deletion of your cloud data. See Delete my data, which explains what is removed and the one thing that is kept.
- Portability — your data in a machine-readable form.
- Objection and restriction — to processing we base on legitimate interests, including analytics.
- Withdrawing consent, where consent is what we relied on, without affecting what was lawful before you withdrew it.
- Complaint — to a supervisory authority. In Costa Rica that is the Agencia de Protección de Datos de los Habitantes (PRODHAB); in the European Union it is the authority of the country you live in; in the United Kingdom it is the Information Commissioner's Office (ICO). We would rather you came to us first, but you do not have to.
How to make a request
Because your save is anonymous, we cannot connect it to you as a person from an email address alone — there is no name on it to match. The identifier is the only thing that tells us which save is yours, and the app will show it to you:
- Open Settings in the game and scroll to the bottom. The player ID is printed under the version number, and it is selectable so you can copy it.
- Email privacy@qirai.tech with that identifier and what you want: a copy of your data, a correction, deletion, a machine-readable export, or an objection to analytics.
- We reply to confirm we have it, and we answer in full within 30 days. If a request is genuinely complex we may take longer, and we will tell you why before the 30 days are up rather than afterwards.
If cloud saves are off and you have never bought gems, there is no identifier to show — because there is nothing of yours on our servers to ask about. Everything is on your phone, and uninstalling removes it.
We do not charge for any of this, we do not ask for identity documents — we have nothing to check them against — and we will not treat you differently for asking. If we cannot act on a request, we say which one and why, and you keep the right to complain to a supervisory authority.
Erasure has a page of its own, because one thing survives it and you should know that before you ask: see Delete my data. You can also delete your cloud save from inside the game, without emailing anyone, in Settings → Cloud saves.
7. Children
Tiny Dungeon is a mixed audience app: adults play it, and it plainly appeals to children too. We treat it that way rather than claiming otherwise.
We ask, once
The first time you open the game it asks what year you were born. The question is deliberately neutral — it does not tell you what answer gets you anything, and no year is filled in for you. Your answer is stored on your device and in your own save. Nothing about the game changes because of it; only what we collect does.
If you do not answer, we treat you as a child. That is the cautious direction: it means less is collected, not more.
What changes for a player under 16
| Under 16 | 16 and over |
|---|---|
| No analytics at all. Collection is switched off. | The gameplay events listed in section 2 |
| Links out of the game are behind a question a small child is unlikely to answer | Links open directly |
| No advertising, no advertising identifier and no ad personalisation, for anybody, at any age — the game carries no advertising at all | |
We use 16 rather than 13. Data-protection law sets the age of consent anywhere between 13 and 16 depending on the country; taking the strictest common threshold means one rule protects everyone, wherever they live.
Purchases
Parents can disable in-app purchases entirely through Screen Time on iOS or parental controls in the Google Play Store. If you believe a child has made a purchase you did not authorise, Apple and Google both offer refunds — see Support.
If you believe a child has given us information you would rather we did not hold, email privacy@qirai.tech and we will remove it. See also Delete my data.
8. This website
Everything above describes the game. This section is about the site you are reading. It is separate: there is no account here, no login, and nothing you do on these pages is joined to anything you do in the game. What is stored in your browser, by whom and for how long, is listed item by item on Cookies and storage.
We use Google Analytics to count visits and see which pages people reach. It is off until you agree to it. Until you accept, nothing is stored in your browser. Google still receives a signal that a page was opened, but it carries no identifier that outlives the page or joins one visit to the next. The legal basis is your consent and nothing else, and declining costs you nothing — every page works exactly the same either way.
If you do accept, Google Analytics stores an identifier in your browser and receives the page you opened, the page that sent you here, your approximate country, and your browser and device type. Your IP address is used to work out an approximate location and is not stored. We never send your name, your email address or anything from the game, because this site holds none of those. It is not used for advertising: the advertising signals are set to denied in the code, and there is no button, anywhere, that turns them on. Google Ireland Limited acts as our processor for this, under its own terms.
You can change your mind whenever you like. Clearing this site's storage in your browser does the same thing.
We also use Cloudflare Web Analytics to count page views. It stores nothing on your device — no cookie, no browser storage, and no fingerprint of your browser or machine — and it cannot follow you between sites. Because it stores nothing, there is nothing to consent to and nothing to switch off. Cloudflare, which already delivers this site to you, acts as our processor for it.
Beyond that the site sets nothing. There is no advertising, no social tracking and no fingerprinting. Heading fonts are served by Google Fonts, which necessarily receives the request for the font file itself; nothing else on the page is fetched from anywhere but this site.
9. Changes
If we change this policy we will update the effective date at the top. If a change materially affects how we handle your data, we will say so in the app.
10. Contact
Qirai Technologies (3-101-960370 Sociedad Anónima), Río Segundo, Alajuela, Costa Rica.
privacy@qirai.tech