MOONLET LABS

Moonlet Labs games

Privacy policy for games

Effective date: 4 October 2026 · Last updated: 8 October 2026

Applies to Ennead: Sudoku Puzzles, Dowse: Minesweeper Puzzles and Stellate: Star Battle Puzzles for Android. The games are published on Google Play under the developer name Moonlet Labs LLC by Moonlet Labs LLC, a Minnesota limited liability company ("Moonlet Labs", "we"), which is the controller of the personal data described here. Moonlet Labs' other apps (the tools, such as Datum, Downbeat and Relay) have their own privacy policy. Contact details are at the end of this page.

The short version

Contents

What we collect and why

With online features off, we have no servers that the games talk to (with them on, see Online features). The games use Google services, described below, and those services are where data about your use of the games ends up. None of them receives your name, email address, contacts, photos, files or precise location; the games never ask for them. Every connection to Google is encrypted (TLS), and Google receives your IP address whenever the game connects.

Crash reports (Firebase Crashlytics)

Usage statistics (Google Analytics for Firebase)

App configuration and experiments (Firebase Remote Config and A/B Testing)

Consent check (Google User Messaging Platform)

Each time an app starts, it asks Google's consent service whether a consent or privacy message applies where you are, and stores your answers on your phone. Google receives your IP address and basic device information for this. See Consent and your choices.

Advertising (Google AdMob)

The ads SDK collects data for Google, which uses it as an independent controller. See Advertising.

Purchases (Google Play)

The Remove ads purchase is made through Google Play, which receives your payment details under its own terms. The Google Play Billing library in the game also sends its own diagnostic logs to Google. See Purchases.

Support email

If you email us, we receive your email address, your message and anything you choose to include (such as your phone model). We use it only to answer you. We keep the thread for as long as we need it to resolve your request, then delete it no later than 12 months after the request is resolved.

Website

Visiting moonletlabs.com sends your IP address to our host and to Google Fonts. See Our website.

Things we do not do

We do not sell your personal data for money or build profiles of you (Google may, for personalised ads, as described under Advertising), and we do not make decisions about you by automated means that have legal or similarly significant effects. You are not required by law or by contract to give us any personal data; the apps work offline and without consent.

If you are in the EEA, the UK or Switzerland, these are the legal bases we rely on under the GDPR, the UK GDPR and the Swiss Federal Act on Data Protection, and for reading or storing information on your device under the ePrivacy rules and UK PECR.

PurposeLegal basis
Usage statistics (Analytics)Your consent. You can withdraw it at any time; this does not affect processing before you withdrew.
Measuring our own Google Ads campaigns (Analytics events shared with Google Ads)Your consent, given in the consent form ("Measure advertising performance"). You can withdraw it at any time in "Privacy options", or turn "Share usage statistics" off.
Crash reports (Crashlytics)Your consent, as above.
Personalised ads (AdMob)Your consent, given in the consent form. Google relies on its own legal bases as an independent controller.
Non-personalised and limited ads (AdMob)As set out in Google's consent framework: your consent where Google's consent form requires it, and otherwise our legitimate interest in funding free apps with advertising.
App configuration (Remote Config)Our legitimate interest in operating the apps, switching off faulty features and controlling how often ads appear. Remote Config is needed to deliver the apps as configured.
Consent check (User Messaging Platform)Our legal obligation to ask for and record consent, and our legitimate interest in doing so reliably.
Support emailsOur legitimate interest in answering you, or steps you ask us to take.
Website logsOur legitimate interest in delivering a secure website.
Keeping records the law requires, or responding to lawful requestsLegal obligation.

You can object at any time to processing based on our legitimate interests by emailing support@moonletlabs.com. See Your rights.

What stays on your phone, and app permissions

Your puzzles, progress, stats and settings are stored in the game's private storage on your phone. We cannot see them. Uninstalling the game or clearing its storage deletes them from the phone.

Google Play rating prompt. Each game keeps a few counters with its settings: on how many days you used it, how many puzzles you solved, and when it last asked Google Play to show its rating prompt. They decide when the game may ask, at most once every 90 days; Google Play then decides whether the prompt appears. They never leave your phone (except in your own Android backup, with the settings). If you rate or review the game there, Google Play handles it under Google's terms, and the game is never told whether you did.

Android backup. If you have Android backup turned on, Android includes the game's puzzles, progress, stats and settings, and your "Share usage statistics" choice, in your own Google account backup and in a device-to-device transfer to a new phone. Google stores that backup under its own terms; Moonlet Labs cannot access it. A backup you made stays in your Google account until you delete it or Android lets it expire, which can be after you uninstall the game.

Never backed up. Firebase identifiers, your consent choices, queued crash reports and usage statistics, ad data, the count of hints you got from ads today, and the "ads removed" flag are never included in a backup or transfer. A reinstall or a new phone therefore starts with fresh Firebase identifiers, asks for consent again where consent is required, and checks a Remove ads purchase with Google Play again.

Permissions

PermissionGamesWhy
Internet access (INTERNET)AllAds, consent check, usage statistics, crash reports, app configuration, Google Play Billing's diagnostic logs and, if you turn them on, online features (our server on Cloudflare, Google sign-in and notifications). No puzzle needs it: every puzzle, the daily puzzle included, is made on the phone.
View network connections (ACCESS_NETWORK_STATE)AllAdded by the Google ads and Firebase SDKs, by the Google Play Billing library and by Android's background-task library, to check whether a connection is available before sending or loading.
Advertising ID (com.google.android.gms.permission.AD_ID)AllAdded by the Google ads and Analytics SDKs, so AdMob can read your advertising ID, and Analytics can read it for measuring our own Google Ads campaigns when that is allowed (see Usage statistics).
Prevent phone from sleeping (WAKE_LOCK)AllAdded by the Google Analytics and Firebase Cloud Messaging SDKs and by Android's background-task library, to finish sending queued data or background work, such as the games' daily reminder.
Foreground service (FOREGROUND_SERVICE)AllDeclared by Android's background-task library, which the Google SDKs and the games' daily reminder use. The games run no foreground service of their own.
Run at startup (RECEIVE_BOOT_COMPLETED)AllDeclared by Android's background-task library, to reschedule queued background work after the phone restarts, such as the games' daily reminder. The Google ads SDK asks Android to drop this permission, so builds with ads, such as the released games, do not request it.
Android ad services (ACCESS_ADSERVICES_AD_ID, ACCESS_ADSERVICES_ATTRIBUTION, ACCESS_ADSERVICES_TOPICS)AllAdded by the Google ads and Analytics SDKs, so they can use Android's privacy-preserving advertising APIs (ad ID, ad attribution and interest topics computed on the phone) where your phone offers them and you have not turned them off in Android's ad privacy settings.
Control vibration (VIBRATE)Ennead, Dowse, StellateOnly for Haptics: a light tap as you write a number, open or flag a square, or place a star or a dot, off until you turn it on in Settings.
Notifications (POST_NOTIFICATIONS), asked at run time on Android 13 and laterEnnead, Dowse, StellateOnly for the daily reminder and, if you turn online features and their notifications on, for friend notifications (an accepted invite, a friend's solved puzzle, a friend starting to play). Asked only when you turn one on. The reminder is one notification a day at the time you choose, "Today's puzzle is ready." in Ennead and Stellate and "Today's board is ready." in Dowse. The games show no other notification.
Push messages (com.google.android.c2dm.permission.RECEIVE)AllAdded by Firebase Cloud Messaging, so the game can receive push messages from it. Used only when you turn online features and their notifications on (see Online features), to receive friend notifications; the game receives nothing through it otherwise.
In-app purchases (com.android.vending.BILLING)Ennead, Dowse, StellateAdded by the Google Play Billing library, so each of them can offer its own one-time Remove ads purchase through Google Play and ask Google Play whether you have bought it.
Install referrer (com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE)AllAdded by Analytics, to read from Google Play which link or campaign led to the install. The games' online features also use Google Play's install referrer library, once, on the first launch after an install, so that a challenge link whose Google Play button you used opens its challenge (see Online features).

No game asks for your location, contacts, camera, microphone, photos or files, or for permission to set exact alarms.

Ennead: Sudoku Puzzles

Dowse: Minesweeper Puzzles

Stellate: Star Battle Puzzles

Advertising

The games are free and funded by ads from Google AdMob, as described per game above, and each game offers its own one-time purchase that removes them (see Purchases). Ads never appear while a puzzle is in play. We limit ads to content rated G.

Rewarded ads play only when you tap the button to watch one for a hint. Google learns that the ad was shown and whether it was watched to the end, as for any ad; we do not send Google anything about your puzzle.

To request, show and measure ads and prevent fraud, the Google Mobile Ads SDK collects your advertising ID, IP address and the approximate location derived from it, device and app information, ad interactions and diagnostic information such as app launch time and crashes in the SDK. Google uses this data as an independent controller under its own policies, and may share it with its advertising partners, who are listed in the consent form. See How Google uses information from sites or apps that use our services and the Google Privacy Policy.

Google and its advertising partners may collect information about your activity over time and across apps for personalised ads. See Consent and your choices to limit this.

Purchases

Each game's only purchase is Remove ads, a one-time purchase with no subscription, made separately in each game: buying it in one game does not remove ads in another. You make it through Google Play, which processes your payment under the Google Play Terms of Service and the Google Privacy Policy; we never see your payment details, name or email address. Google Play gives the game the purchase's state and a purchase token, which the game checks on your phone and uses only to turn ads off. No server of ours receives them. If a purchase is refunded or cancelled, ads return the next time the game starts. "Restore purchase" in Settings asks Google Play again, for example on a new phone. Google Play's order records are kept by Google under its own terms; Analytics records only the step of the purchase (for example "completed" or "restored"), never an order, token or price you paid.

Google Play Billing's diagnostic logs. The Google Play Billing library that the games use to talk to Google Play sends its own diagnostic logs to Google, through Google's data-transport library, about the billing requests the game makes (for example the purchase check each time the game starts): which request was made and how it ended, the library and app versions, and basic device information such as the model and Android version. Google uses them to run and improve Google Play Billing. They never include your puzzles or anything you type, and we cannot see them. Because they come from Google Play's own library, not from our analytics, "Share usage statistics" does not turn them off; they are sent whether or not you have bought anything.

Online features

Online features are optional and off until you turn them on in Settings → Online (or when a game offers them, for example when you open a friend's invite). With them off, a game sends nothing to our servers. With them on, the game talks to a server that Moonlet Labs runs on Cloudflare, so this section applies in addition to the rest of this policy. A game's online features compare your times for the daily puzzle with other solvers and with friends you add, and let you send challenges and invites.

What we collect and why

Challenge and invite links

A challenge link (moonletlabs.com/c/…) carries the level, the date or puzzle number, the time and the nickname of the person who made it, and an invite code if they added one. The page behind it reads the link in your browser and shows it to you; the link is not sent to a server of ours other than the request for the page, which our host Vercel logs like any web request (see Our website). If you install a game from the link's Google Play button, the game reads the link from Google Play's install referrer once, on first launch, to open the challenge. Nothing in a link is trusted: it only fills in the challenge screen.

Who processes it

We do not sell this data, use it for advertising, or share it with anyone else. Friends you add see your nickname, your daily times for today and the past week (and whether each was assisted), whether you solved today's puzzle, your run of solved days, and which of our games you play; other solvers see only the counts.

How long online data is kept

Deleting your online data

Deleting removes your player and every record that names you: nickname, Google account link, solves, friendships, invites, blocks, reports and notification token. The per-day solve-time counts stay, because they are totals with no player attached. The web page loads Google's sign-in script from accounts.google.com, so Google receives your IP address and browser information, and its own cookies, when you open that page, under the Google Privacy Policy; the page sends us nothing until you sign in and confirm. Your puzzles, stats and settings on your phone are not touched, and signing out does not delete anything. Turning online features off in Settings → Online stops the game sending data; what is already on our server stays until you delete it or the retention periods above end.

Your rights, security and children for online data

The rights in Your rights apply to online data too, and unlike the data of the other sections it is tied to a player ID, so we can find, export or delete it for a signed-in player: use the deletion routes above, or email support@moonletlabs.com from the account you signed in with. For a player who never signed in, we cannot tell which data is yours from an email address; deleting in the game is the way. Data is encrypted in transit, access to the server and database is limited to the people who run Moonlet Labs, and our server limits how often a player or an address can call it. Online features are meant for people aged 13 and over, as with the rest of each game, and have no free-text chat: the only text a player enters that others see is a filtered nickname.

Where the "Privacy options" entry is not shown, no consent or opt-out message applies to your region. You can still use the other controls above, or email us.

Who receives your data

International transfers

We are based in Minnesota, United States. Google and Vercel process data in the United States and other countries where they operate. When personal data from the EEA, the UK or Switzerland is transferred to the United States, we rely on the EU-US Data Privacy Framework, its UK Extension and the Swiss-US Data Privacy Framework where the recipient is certified (Google LLC is), and otherwise on the European Commission's Standard Contractual Clauses with the UK Addendum and the Swiss amendments. The providers that hold the data we collect directly, Google Workspace for support emails and Vercel for website logs, rely on the EU-US Data Privacy Framework and/or Standard Contractual Clauses.

How long data is kept

DataHow long
Crash reports and their identifiers (Crashlytics)90 days
Usage statistics at event and identifier level (Analytics)14 months. Aggregated reports that are not linked to an identifier are kept longer.
Firebase installation IDThe identifier on your phone is removed when you uninstall the app or clear its storage. Google deletes the data associated with it as the retention periods above expire.
Ad data held by GoogleUnder Google's retention policy
Your consent choicesOn your phone, until you change them or uninstall the app (never backed up)
The games' puzzles, boards, moves, results and settings (Ennead, Dowse, Stellate)On your phone, until you clear the app's storage or uninstall it (stats keep the last 1,000 results; a game's undo history goes when it is solved or left); if you use Android backup, also in your Google account backup until you delete it or Android lets it expire
Online features data on our server (nickname, daily solves, friends, notification token; Ennead, Dowse, Stellate)Per-day solve-time counts 400 days; daily solves while your player exists; failed invite-code attempts about a day (at most 25 hours); players with no session for 18 months are deleted; deleted when you ask, in the game or at games/delete.html. See Online features
Today's count of hints from ads, and the "ads removed" flagOn your phone only, never in a backup; the count starts again each day, and the flag is checked with Google Play each time the game starts
Purchase records held by Google PlayUnder Google Play's terms and Google's retention policy
Support emailsAs long as needed to resolve your request, then up to 12 months after it is resolved, then deleted
Website request logs (Vercel)The limited period Vercel keeps them under its privacy policy

Your rights

Depending on where you live, you may have the right to access the personal data we hold about you, to have it corrected or deleted, to restrict or object to its use, to receive it in a portable format, and to withdraw consent at any time. You may object at any time to processing based on our legitimate interests.

How to use them without an account. With online features off, the games have no accounts, and the identifiers Firebase uses are not linked to your name or email, so we cannot find your data from your email address. (Online features add a player ID that we can find: see Online features for how to delete it.) These routes work:

We reply within one month (EEA, UK and Switzerland) or 45 days (US states), and may extend this where the law allows. You also have the right to complain to a data protection authority: in the EU or EEA, the authority where you live or work (list of authorities); in the UK, the Information Commissioner's Office; in Switzerland, the Federal Data Protection and Information Commissioner. If you live elsewhere, you may have similar rights under local law; contact us.

US state privacy rights

This section applies to residents of California and other US states with consumer privacy laws, and is our notice at collection. Whether or not these laws apply to Moonlet Labs, everyone in the United States can limit targeted advertising with the advertising ID controls in their phone's settings, and where Google's US state privacy message applies, the app also offers an in-app opt-out of the sale or sharing of personal data and of targeted advertising, as described below.

Children

Each game is a puzzle game for a general audience. On Google Play it targets people aged 13 and over, and it is not directed at children under 13 (or under the minimum age for consenting to online services in your country). We do not knowingly collect personal data from children. Ads are limited to content rated G. If you believe a child has given us personal data, for example by emailing us, contact support@moonletlabs.com and we will delete it.

Our website

moonletlabs.com is a static website hosted by Vercel Inc. When you visit, Vercel processes your IP address, browser user agent, the pages you request and the time, to deliver the site and protect it from abuse, and keeps these request logs for the limited period set out in Vercel's privacy policy. The pages load fonts from Google Fonts, so Google receives your IP address and browser information when you visit; see the Google Privacy Policy. The site sets no cookies of its own and uses no analytics or advertising. Our legal basis is our legitimate interest in running a working, secure website.

One page, games/delete.html, also loads Google's sign-in script, which Google serves and sets its own cookies for: see Online features.

Security

Data sent from the games to Google is encrypted in transit. With online features off, we operate no servers that store your data; with them on, the server described under Online features stores it, and data sent to it is encrypted in transit. We limit access to the Firebase and AdMob consoles, and to that server and its database, to the people who run Moonlet Labs.

Online features: terms

The games have no separate terms of service, so the short rules for online features are here. By turning online features on you agree to them.

Changes to this policy

If we change what the games or the website do with data, we will update this page and the dates above. For material changes we will also tell you in the game before the change takes effect, and ask for consent again where the law requires it. This policy is versioned separately from the policy for Moonlet Labs' tools, so a change to one does not change the other. Previous versions are available on request.

Contact

Moonlet Labs LLC · 445 Karen Dr Unit 316, Woodbury, MN 55129, USA · support@moonletlabs.com

Google Play Data safety summary

This summarises each game's Google Play Data safety answers, using Play's definitions: "collected" means sent off your phone, including by the Google SDKs in the game; "shared" means transferred to a third party, and data processed by our service provider on our behalf is not "shared".

Play data typeCollectedSharedPurposesOptional
Device or other IDsYes: Firebase installation ID, app-instance ID and Crashlytics installation ID (Firebase); advertising ID (AdMob, and Analytics for ad measurement)Yes: advertising ID with Google for advertising; app-instance ID and advertising ID with Google Ads to measure our ad campaigns. Other Firebase IDs: no (service provider)App functionality, analytics, advertising or marketing, fraud preventionRequired
App activity: app interactionsYes: screens, features, sessions and each game's own events above (Analytics); ad interactions (AdMob)Yes: the app's first open and solved puzzles (first_open, task_completed) with Google Ads to measure our ad campaigns; ad interactions with Google for advertising (AdMob). Other Analytics events: noAnalytics, advertising or marketingRequired (the Analytics part, including what goes to Google Ads, can be switched off)
App info and performance: crash logsYes (Crashlytics; AdMob for SDK crashes)Crashlytics: no. AdMob: yes, with GoogleApp functionality, analyticsRequired
App info and performance: diagnosticsYes: device state with crash reports (Crashlytics); performance data (AdMob); Google Play Billing's own diagnostic logs (Ennead), and the same in Dowse and StellateCrashlytics: no. AdMob and Google Play Billing: yes, with GoogleApp functionality, analytics, advertising, fraud preventionRequired
Location: approximate locationYes: derived from IP address by AdMob; city-level by AnalyticsAnalytics: no. AdMob: yes, with GoogleAdvertising, analytics, fraud preventionRequired
Puzzles, progress and stats (Ennead)No: stored on the phone and, if you use it, in your own Android backupNoPuzzles, the daily puzzle, stats and the daily reminder—
The Remove ads purchase (Ennead)No: Google Play processes the purchase and its payment under Google's terms; the game keeps only an "ads removed" flag on the phone and sends it nowhereNoTurning ads off—
Boards, progress and stats (Dowse)No: stored on the phone and, if you use it, in your own Android backupNoBoards, the daily board, stats and the daily reminder—
The Remove ads purchase (Dowse)No: Google Play processes the purchase and its payment under Google's terms; the game keeps only an "ads removed" flag on the phone and sends it nowhereNoTurning ads off—
Puzzles, progress and stats (Stellate)No: stored on the phone and, if you use it, in your own Android backupNoPuzzles, the daily puzzle, stats and the daily reminder—
The Remove ads purchase (Stellate)No: Google Play processes the purchase and its payment under Google's terms; the game keeps only an "ads removed" flag on the phone and sends it nowhereNoTurning ads off—
Online features (Ennead, Dowse, Stellate; optional)Yes, only if you turn them on: a player ID and a hash of a random install ID, nickname, optional Google account ID, daily puzzle times and flags, friends, blocks and reports, games played and connection times, notification token and time zone offset (our server on Cloudflare; Google for notifications and sign-in)No: processed for us by Cloudflare and Google Firebase Cloud Messaging; Google Sign-In verifies your accountApp functionality, account management, fraud prevention and securityOptional; deletable in the game or at games/delete.html
SettingsNo: stored on the phone and, if you use it, in your own Android backupNoApp functionality—
Email address and Google profile name (online features with Google sign-in only)Yes, processed ephemerally: only inside the Google sign-in token your phone sends us: our server reads just the account ID from it, keeps nothing else and processes the rest ephemerally, in memoryNoAccount managementOptional
Name (other than the nickname you choose for online features, and other than as above), email (other than as above), contacts, photos, files, precise location, health or financial dataNoNo——

All data is encrypted in transit. "Required" means collection cannot be switched off for every user in every region: in the EEA, the UK and Switzerland, Analytics and Crashlytics run only with consent, and nothing goes to Google Ads without consent.