The short version: we run no ads, no analytics and no tracking software of any kind. You can play as a guest with no email at all. We never collect your precise location - the most specific place we ever store is a country, and a city only if you type one in yourself. You can export or delete everything tied to your account from Settings, any time.
1. Information we collect
1.1 Identity and account
- Callsign - your in-game handle, generated for you or chosen by you. Required to play, even as a guest.
- Email address - only if you choose to create an account instead of playing as a guest. We use it solely to send a one-time sign-in link; this app has no password, ever.
- Guest status - whether your account has an email attached yet.
1.2 Location - coarse only
On your first visit, we make a one-time automatic guess at your country from the network-level country header our hosting provider (Cloudflare) attaches to the request - not GPS, and not a stored IP-to-location lookup of our own. It is a two-letter country code, nothing finer. You can override it yourself in your profile at any time; once you set it manually, it locks for 90 days to keep country leaderboards fair. City is entirely optional and only ever exactly what you type into a text field - we never geocode it or infer it from anything, and you can hide it from other players at any time. We do not collect, store, or infer precise (GPS-level) location, ever.
1.3 Avatar and cosmetics
Your chosen avatar (cap, insignia, background, colour scheme) and which cosmetic items you own and have equipped. These are configuration choices you make from a fixed catalog, not an uploaded photo.
1.4 Gameplay and progress
- Match history - the full sequence of ship placements and shots for matches you play, the result, when it happened, and who you played.
- Rating and league standing, per game mode.
- Daily puzzle results, mission and streak progress, and battle-pass tier/XP.
- Which countries' fleets you have sunk ships from (the "Conquest" collectible on your profile).
1.5 Social
- Your friend list and pending friend requests.
- "Play a Friend" challenge links you create or accept.
- Referral records, if you invite someone or are invited.
- Reports - if you report another player, or are reported, we keep the reason and any details given, for moderation.
1.6 Purchases
If you buy a cosmetic item or other in-app content, we keep a ledger entry recording the item, amount and currency against your account. We never see or store your card number - Stripe handles payment directly (see Section 3). Nothing purchasable in this app grants gameplay power; every purchasable item is cosmetic by construction, not just by policy.
1.7 Notifications - only if you turn them on
If you enable push notifications, we store a push subscription endpoint or device token so we know where to deliver them, and, if your browser or device reports one, the IANA time zone it gives us at the moment you subscribe (for example, "Europe/Skopje") - used only to send reminders at a sensible local hour. Neither of these exists for you if push notifications are off. We also store whichever notification types and quiet-hours you choose to set.
1.8 Technical and session data
- A session cookie holding an opaque, hashed sign-in token - we store only a one-way hash of it, never the raw token.
- Your browser or app's user-agent string, attached to each active session, for account security.
- Your IP address, used briefly to rate-limit sign-in email requests so the sign-in system can't be used to spam someone else's inbox. It lives in short-lived cache (roughly an hour), not our permanent database, and is never linked to your account record.
2. Where this comes from
Everything above comes directly from you - typing it in, or your device reporting it through an API call you triggered, like enabling push notifications. The one exception is country (Section 1.2), a one-time automatic guess made from network-level data on your first visit. Location is never used to choose your language - the app negotiates language separately, from your browser's own language setting or your manual choice in Settings.
3. Who else sees it
We use a small number of outside services to run the app:
- Stripe- processes payments. Receives your account id and the item you're buying; handles your card details directly and never passes them to us.
- Resend - sends sign-in emails. Receives the email address you give us and the sign-in link itself.
- Apple Push Notification service (iOS app) and your browser's own push service(web app, run by your browser vendor - for example Google or Mozilla) - deliver push notifications, only if you've turned them on. They receive only the device/subscription identifier needed to route the message.
We do not use any analytics, advertising, or tracking software in this app - no Google Analytics, no ad network, no behavioural profiling. That is a deliberate choice, not an oversight, and it is true as of this policy's last-updated date above. We do not sell your data; we run no advertising business to sell it to.
4. Who else can see your in-game details
This is a multiplayer game, so some information is visible to other players by design: your callsign, avatar, country flag, and league/rating are shown to opponents and on leaderboards. Your city, if you have set one, is shown too, unless you turn on "hide city" in your profile.
5. What you can do
- Export your data- from Settings, "Export data" downloads a JSON file with your profile, ratings, streak, match history (up to your most recent 500 matches), and daily-puzzle results.
- Delete your account- from Settings, "Delete account" signs you out everywhere and clears your personal fields: email, callsign (replaced with an anonymous placeholder), avatar, and city. The account row itself is not destroyed, and pseudonymous gameplay records tied to it - match history, ratings, conquest and mission progress - are kept, because a match always involves another player whose own record references the same rows; removing them would also remove part of someone else's history. What is removed is the personal information that identified the row as you.
- Push notifications stop too - deleting your account removes every push subscription tied to it (every device/browser endpoint on file), in the same step as the rest of the deletion. No device you have ever enabled notifications from can receive one after you delete your account.
- Correct your details - callsign, country, city and avatar can all be changed yourself, any time, from your profile.
6. How long we keep things
We do not run a scheduled job that ages out data on a timer, so most of what is listed above is kept for as long as your account exists, for the shared-record reason in Section 5. A few things are shorter-lived by nature rather than by a stated policy: rate-limit entries expire from cache within about an hour; a session's server-side record has its own expiry but is not proactively purged once expired, it simply stops working; and a push subscription lives until the push service reports it gone, or until you delete your account, whichever comes first (Section 5).
7. Children
This app has no age verification or age gate of any kind, and does not knowingly target or market to children. If you believe a child has given us personal information, contact us below and we will delete it.
8. Changes to this policy
If this policy changes, we will update the "last updated" date at the top. We do not currently have a way to notify you individually of changes - check back here periodically.
9. The English version governs
This policy is written and maintained in English only. Where the app is offered in other languages, only this page's title and its menu link are translated - not the policy text itself, because a machine-translated legal document tends to lose exactly the precision that matters most in one. The English version here governs.
10. Contact
Questions about this policy, or a privacy request, go to innovation@karpinity.com. For self-service options - exporting or deleting your data yourself, right now - see Support.