This Privacy Policy explains what information Asian Digital Mind LLC ("ADM", "we", "us") collects when you use the Mahjong House app for iPhone and iPad (from Apple's App Store, bundle ID com.adm.mahjonghouse) or for Android (from Google Play, package name com.adm.mahjonghouse) and its online services (the "App"), why we collect it, who we share it with and the choices you have. ADM is the controller of the personal data described here. It also covers the browser version at play.mahjonghouse.app (the "web version"), which is part of the App; section 9 explains how it differs. It also covers our website at mahjonghouse.app (the "website"); section 10 explains the analytics on the website and the web version. Most of this policy applies to every version; where they differ, we say so.
In short: you can play solo without an account, and your solo games stay on your device. Online play uses a small account (a display name, an avatar and your match results). The free version shows ads from Google AdMob, which uses device data subject to your consent and your device's settings (Apple's tracking permission on iPhone and iPad; your advertising ID settings on Android). We use Firebase Analytics to understand how the apps are used. The web version has no ads and no purchases. The website and the web version use Google Analytics to count visits, with your consent in the EEA, UK and Switzerland, and you can turn it off at any time with Privacy choices (section 10). We never sell your personal information for money, and there is no real money in the game.
1. Information that stays on your device
The following is stored only on your device and is not sent to us:
- your local profile (display name and avatar choice) and settings (language, tile style, sounds and so on);
- solo games in progress, your statistics, hand records and replays;
- counters used to space out ads (for example when the last ad was shown), and whether you own Remove Ads or Sifu;
- your online sign-in token, kept in the iOS keychain on iPhone and iPad, and on Android encrypted with a key held in the device's Android Keystore;
- your achievement progress (see section 7).
Deleting the App removes this information from your device (on iPhone and iPad, the keychain token may remain until the device is erased).
Android backup: if backup is turned on for your Android device, Android may copy your settings, local profile, statistics, hand records, saved solo game, achievement progress and ad-spacing counters to your Google account's device backup, and restore them on a new device. This is handled by Google under its terms. Your online sign-in token, your purchase status and the identifiers used by the SDKs described below are never included.
2. Your online account
When you first use online play (Quick Match, Ranked or the League), the App creates an account on our game server. We store:
- Account: a random account ID, your display name, your avatar (one of the App's character portraits) and when the account was created.
- Sign-in tokens: stored only as SHA-256 hashes, so the stored value cannot be used to sign in.
- Linked sign-ins: if you link Sign in with Apple or Google (or Game Center, if offered), the name of the provider and the unique user ID that provider gives for you (the "subject"). We never receive your password.
- Match records: for each online match, the mode (Quick or Ranked), region, season, start and end time, number of hands, and for each seat the player account (or computer club player), final points, place, and hidden matchmaking rating before and after (Ranked).
- League standing: for each season, your season score (jade won or lost in Ranked), number of ranked matches, number of first places, and a matchmaking rating (current and peak) that is used only to match players of similar skill and is not shown to anyone.
During a match, the server also processes your in-game actions (discards, claims and so on) in real time to run the game. These are held in memory for the match and are not stored as a hand-by-hand record.
What other players see: other players at your table see your display name, avatar, points and in-game actions. The season leaderboard, visible to all players, shows your rank, display name, avatar and season score.
3. Sign in with Apple or Google
Linking a sign-in is optional; it lets you use the same online account on another device, including between iPhone, iPad and Android. You can link Sign in with Apple or Google (the options shown depend on your device). Sign-in is handled through Supabase Auth, our authentication provider, which stores what the provider shares in our authentication project:
- Google: your Google account's name, email address, profile picture URL and Google user ID. The App doesn't show or use your Google name or picture.
- Apple: your Apple user ID and an email address, which may be a private relay address if you choose to hide your email. The App doesn't ask Apple for your name.
Our game server receives only a signed token from which it takes the provider and your provider user ID; it does not store your email address, name or picture. The sign-in providers process your information under their own privacy policies.
4. Technical data when you connect
When the App talks to our servers (for example to check whether online play is available, to find a match or to load the League), our hosting providers necessarily process your IP address and basic connection information (time, requested address, app version) to deliver the service, protect it from abuse and keep short-term server logs. We do not use IP addresses to identify you.
5. Advertising (Google AdMob)
The free version shows interstitial ads between rounds of solo play, served by Google AdMob. To serve, measure and protect ads, Google's SDK collects information such as:
- device identifiers: on iPhone and iPad, Apple's Advertising Identifier (IDFA) only if you allow tracking in Apple's App Tracking Transparency prompt, and otherwise identifiers that are not used for cross-app tracking; on Android, the Android advertising ID (unless you have deleted it) and the app set ID;
- approximate location derived from your IP address;
- ad interactions (for example ads shown and tapped), device and app information, and performance and diagnostic data.
Your choices:
- Consent (EEA, UK, Switzerland and some US states): we use Google's User Messaging Platform to ask for your consent to personalised advertising and related data processing, and to offer an opt-out where US state privacy laws give you one. You can refuse, in which case Google may show non-personalised or limited ads. Where this applies to you, you can review or change your choice at any time with Privacy Choices in the App's Settings, or contact us.
- iPhone and iPad: App Tracking Transparency (all regions). Before ads load, iOS asks whether the App may track you. If you choose "Ask App Not to Track", the IDFA is not shared and ads are not personalised using cross-app tracking. You can change this at any time in iOS Settings > Privacy & Security > Tracking.
- Android: your advertising ID. Android doesn't show a tracking prompt. You can reset your advertising ID, or delete it so that apps no longer receive it, in your device's Settings (on most devices, Settings > Privacy > Ads, or Settings > Google > Ads). If you delete it, ads are no longer personalised using it.
- No ads: buying Remove Ads or subscribing to Sifu turns off ads in the App.
Google's use of data is described at policies.google.com/technologies/partner-sites.
6. Analytics (Firebase)
We use Google Firebase Analytics to understand how the App is used and to improve it, and Firebase Remote Config to adjust settings such as how often ads appear without releasing an update. Firebase collects app events (for example: a round completed, a break screen shown, an ad requested, shown or skipped, a purchase started or completed, purchases restored, the Sifu sheet opened), together with an app-instance identifier, the advertising identifier where available (on iPhone and iPad only if you allow tracking; on Android unless you have deleted it), device model, OS and app version, and approximate location derived from your IP address. We do not send your display name or account ID to Firebase, and we do not combine analytics with your online account.
7. Achievements (Game Center and Google Play Games)
The App's achievements are tracked on your device and work without an account.
- iPhone and iPad: if you're signed in to Game Center, your achievement progress is also reported to Apple's Game Center under your Game Center account.
- Android: if you're signed in to Google Play Games, achievement unlocks and progress are reported to Google Play Games Services under your Play Games profile and player ID, and may be shown on your Play Games profile according to your Play Games settings.
Game Center and Google Play Games are provided by Apple and Google under their own terms and privacy policies. Our servers don't receive your Game Center or Play Games identity, and we don't link it to your online account.
8. Purchases
In-app purchases (Remove Ads and the Sifu subscription) are made through the store you got the App from:
- iPhone and iPad: Apple's App Store, charged to your Apple ID. Apple processes your payment.
- Android: Google Play Billing, charged to your Google Play account. Google processes your payment.
We never see your payment card or billing details. We use RevenueCat to validate purchases and manage entitlements: RevenueCat receives the store's transaction and subscription information (such as the product, the transaction ID or purchase token, purchase and expiry dates and the country of the store), an anonymous app user ID, and device and app information. We use this to unlock what you bought on your devices, restore purchases and understand subscription performance. Purchases belong to the Apple ID or Google account that made them and can't be moved between the App Store and Google Play.
9. The web version (play.mahjonghouse.app)
You can also play in a web browser at play.mahjonghouse.app. Sections 1 to 8 apply to the web version with these differences:
- Stored in your browser: your settings, local profile, statistics, hand records, replays, saved solo game and achievement progress, and your online sign-in token, are kept in your browser's storage for the site (localStorage and IndexedDB) and are not sent to us. Clearing the site's data in your browser, or playing in a private window, removes them. They aren't synced with the apps or with other browsers.
- No ads, no purchases: the web version doesn't include Google AdMob, Firebase, RevenueCat or any other advertising SDK, and sells nothing, so sections 5, 6 and 8 don't apply to it. It uses no advertising cookies.
- Google Analytics: the web version uses Google Analytics as described in section 10 (with your consent in the EEA, UK and Switzerland). You can change your choice at any time with Privacy Choices in the web version's Settings.
- Sifu isn't offered on the web; it's only in the iPhone, iPad and Android apps.
- Achievements are kept only in your browser and aren't reported to Game Center or Google Play Games.
- Online play and sign-in: online play uses the same online account, game server and data as the apps (sections 2 and 4). Linking Sign in with Apple or Google is optional and works as described in section 3: you're taken to Apple or Google and then back to play.mahjonghouse.app. You can delete your online account from the web version's Profile in the same way and with the same effect (section 17).
- Hosting: the web version's files are served by Vercel, which processes your IP address and browser information (such as the user agent) to deliver them and keeps short-term logs, as described in section 4.
10. Google Analytics on our website and the web version
Our website at mahjonghouse.app and the web version at play.mahjonghouse.app use Google Analytics 4, a service provided by Google, to count visits and to understand how people find and use them, so that we can improve them. The iPhone, iPad and Android apps don't use Google Analytics (they use Firebase, section 6).
What is collected:
- the pages you view (their address and title) and the page that brought you there (the referrer);
- device and browser information, such as the type of device, operating system, browser, screen size and language;
- your approximate location (country, region and city), which Google derives from your IP address. Google Analytics 4 doesn't log or store IP addresses;
- the interactions we measure: on the website, clicks on "Play free in browser" and on the App Store and Google Play links, use of the faan calculator and the cheat sheet (the examples, copying a link, changing a house rule, the faan of a scored hand, printing and downloading the PDF), opening a daily puzzle's answer, how far down a guide you scroll, links from one guide to another, and changing the site's language; in the web version, starting a solo game or the tutorial, starting and finishing an online match (Quick or Ranked, without the result), starting and completing a Google or Apple sign-in link, opening the "Sifu is in the iPhone and Android apps" sheet and clicking a store link;
- a random identifier kept in a cookie (see below), so that a returning browser is counted once.
We don't send your display name, account ID, email address or anything else that identifies you to Google Analytics, and we don't combine analytics with your online account.
Like the web version (section 9), the website is hosted by Vercel, which processes your IP address and browser information to deliver its pages and keeps short-term logs (section 4). The website has no accounts, ads or purchases.
Cookies: when analytics is on, Google Analytics sets first-party cookies named _ga and _ga_<ID> on mahjonghouse.app (shared by the website and the web version), which last for up to 2 years, or as Google configures them. We also set two cookies of our own that contain no identifier: mh_consent, which remembers your choice for 12 months, and mh_region, which lasts for your browser session and says only whether you're visiting from the EEA, UK or Switzerland, so we know whether to ask. To set mh_region, our host Vercel looks up the country of your IP address; we don't keep the country or the address.
Consent and legal basis:
- EEA, UK and Switzerland: analytics stays off until you choose Accept in the banner; our legal basis is your consent, which you can withdraw at any time. While it's off (before you choose, or if you choose Decline), no analytics cookies are set and Google's Consent Mode sends Google only cookieless signals without an identifier (for example, that a page was viewed and that consent wasn't given), which Google may use to estimate visit counts in aggregate.
- Elsewhere: analytics is on by default, based on our legitimate interest in understanding and improving the website and the web version. You can opt out at any time.
How to opt out or change your choice: use Privacy choices at the bottom of every page of the website, or Privacy Choices in the web version's Settings; install Google's Google Analytics opt-out browser add-on; or block or delete cookies in your browser's settings. Your choice applies to both the website and the web version in that browser. If you decline, we also delete the _ga cookies.
No advertising: Google Signals and ad personalisation are turned off. We don't use Google Analytics for advertising or remarketing, and we don't link it to Google's advertising products.
Google's role and transfers: Google processes this data as our processor, under Google's data processing terms for Google Analytics, and may process it in the United States and other countries (see section 14). How Google uses information from sites that use its services is described at policies.google.com/technologies/partner-sites.
Retention: event data is kept for 14 months and then deleted; after that only aggregated reports remain.
11. When you contact us
If you email us at support@mahjonghouse.app, we receive your email address and whatever you choose to send (such as your display name, device details or screenshots), and we use it to answer you.
12. How we use information, and our legal bases
- To provide the App and online play (accounts, matchmaking, running matches, season scores, leaderboards, restoring purchases): necessary to perform our agreement with you.
- To keep play fair and secure (preventing cheating, abuse and fraud, protecting our servers): our legitimate interests in running a fair, safe service.
- To show ads and measure them: your consent where required (consent through Google's consent form in the EEA, UK and Switzerland, and Apple's tracking permission on iPhone and iPad); otherwise our legitimate interest in funding a free game, for non-personalised ads, subject to your opt-out rights.
- To understand and improve the apps (Firebase Analytics, remote configuration): our legitimate interests in improving the App.
- To understand and improve the website and the web version (Google Analytics, section 10): your consent in the EEA, UK and Switzerland; elsewhere, our legitimate interests in improving them, subject to your right to opt out.
- To answer support requests and comply with the law: our legitimate interests and our legal obligations.
We do not use your information to make decisions that have legal or similarly significant effects on you based solely on automated processing. Matchmaking (including the matchmaking rating) and season scores are automated but only affect gameplay.
13. Who we share information with
We share information only as described in this policy:
- Supabase (database and sign-in), hosted in Supabase (Singapore, ap-southeast-1): stores online accounts, linked sign-ins, match records and league standings.
- Railway (game server hosting), Railway (Singapore region): runs the online matches.
- Vercel (hosting for the website and the web version): serves their pages and files to your browser.
- Google (AdMob advertising, User Messaging Platform, Firebase Analytics and Remote Config, and Google sign-in; Google Analytics for the website and the web version; on Android also Google Play Billing and Google Play Games Services).
- Apple (on iPhone and iPad, App Store purchases, App Tracking Transparency and Game Center; and Sign in with Apple).
- RevenueCat (purchase validation and entitlement management).
- Other players, who see your display name, avatar, results and leaderboard position as described in section 2.
- Authorities or others when required by law, or to protect the rights, safety and security of our players, ADM or others; and a buyer or successor if our business or the App is transferred, subject to this policy.
Our service providers may only use the information to provide their services to us, except where they act as independent controllers under their own policies (such as Google for advertising, and Apple and Google for their sign-in, app store and game services).
We do not sell personal information for money. Under some US state laws (such as California's), letting advertising partners collect device identifiers for personalised ads can count as "sharing" or a "sale". You can opt out with Privacy Choices in the App's Settings where it is shown; on iPhone and iPad, by choosing "Ask App Not to Track" or turning off tracking in iOS Settings; on Android, by deleting your advertising ID in your device's Settings; or by buying Remove Ads. You can also contact us to exercise your rights.
14. International transfers
Our game server and database are in Singapore, and our other providers (such as Google, Apple, RevenueCat and Vercel) may process data in the United States and other countries. These countries may have different data-protection laws from yours. Where the law requires it, we rely on appropriate safeguards for these transfers, such as the European Commission's Standard Contractual Clauses (and the UK equivalents) included in our providers' data-processing terms.
15. How long we keep information
- Online account, linked sign-ins and league standings: for as long as your account exists. If you ask us to delete your account, we delete these within 30 days, except for backups, which are overwritten on their normal cycle.
- Match records: kept to maintain match history and leaderboards. When an account is deleted, its seats in past matches are kept without any link to the account (they no longer identify you).
- Sign-in tokens: until they are replaced or the account is deleted.
- Server logs: for a short period (typically up to 30 days) set by our hosting providers.
- Analytics (apps): for the retention period set in Firebase (no more than 14 months for event-level data); after that only aggregated, anonymised statistics remain.
- Google Analytics (website and web version): event data for 14 months, then only aggregated reports; the _ga cookies last for up to 2 years and the mh_consent cookie for 12 months, in your browser (section 10).
- Purchase records: Apple or Google, and RevenueCat, keep records of your purchases as needed to provide and restore them and as required for tax and accounting, under their own retention policies.
- Support emails: for as long as needed to handle your request, and then for up to 2 years for our records.
16. Your rights and choices
Depending on where you live, you may have the right to access the personal data we hold about you, correct it, delete it, restrict or object to our processing of it, receive a portable copy of it, and withdraw consent at any time (without affecting processing before the withdrawal). California and other US state residents may also have the right to know what personal information we collect and disclose, to delete and correct it, to opt out of its "sale" or "sharing", to limit use of sensitive information (we do not collect any), and not to be discriminated against for using these rights.
To use any of these rights, email support@mahjonghouse.app from an address we can reply to, and include your display name. To protect your account we may ask you to confirm your request from the App (for example by temporarily changing your display name to a code we send). You may use an authorised agent where the law allows. We will reply within the time the law requires (usually within 30 days). You also have the right to complain to your local data-protection authority.
You can also: change your display name and avatar in the App; turn off tracking in iOS Settings (iPhone and iPad) or reset or delete your advertising ID (Android); change your ad consent with Privacy Choices where it is shown (see section 5); turn Google Analytics on or off for the website and the web version with Privacy choices (see section 10); delete your online account (see section 17); and delete the App, or clear the web version's site data in your browser, to remove the data stored on your device.
17. Deleting your online account
You can delete your online account in the App, on iPhone, iPad, Android or the web version: open your Profile and tap Delete Online Profile, then confirm. This immediately deletes your account, display name, avatar, season scores and league standings, linked sign-in and sign-in tokens (every device is signed out), and removes the link between you and your past match results. It isn't available while you are seated in an online match. If you signed in with Apple or Google, our authentication provider also keeps a sign-in record; email support@mahjonghouse.app with the subject "Delete my account" and we will remove it within 30 days. If you can't use the App, you can also ask us by email to delete your whole account; we will verify the request and complete it within 30 days. Our Delete your account page sets out the steps and what is deleted and kept.
Purchases are tied to your Apple ID or Google account and are not affected. To stop a Sifu subscription, cancel it in your Apple ID's subscription settings (iPhone and iPad) or in the Google Play Store under Payments & subscriptions (Android).
18. Children
The App contains simulated gambling themes and is intended for players aged 17 and over. It is not directed to children, and we do not knowingly collect personal information from children under 13 (or under the age of digital consent where you live, such as 16 in parts of the EEA). If you believe a child has given us personal information, contact us and we will delete it.
19. Security
We protect your information with measures appropriate to the data we hold: connections to our servers are encrypted (HTTPS and secure WebSockets), sign-in tokens are stored only as hashes, sign-ins are verified cryptographically, and our database is not exposed through a public API and is accessible only to our game server. No system is completely secure, so we cannot guarantee absolute security.
20. Changes to this policy
We may update this policy from time to time, for example when we add features or providers. We will post the new version on this page and change the effective date, and where changes are significant we will give notice in the App. This policy is written in English; translations are for convenience, and the English version governs if they differ.
21. Contact us
Asian Digital Mind LLC, 3400 Cottage Way, Sacramento, CA 95825, USA. Email: support@mahjonghouse.app.
