๐ก๏ธ At a glance
- No account required. No name, email, phone number or social login is ever collected.
- Data is encrypted in transit on every request the App makes.
- You can request deletion of any server-side data at any time.
- Most of what the App produces โ scans, history, vault, heatmaps โ never leaves your device, so it is not "collected" at all in Play's sense.
- The community map is the one place data goes to our server, and only when you choose to contribute.
Why this page exists
Google Play requires every app to complete a Data safety form declaring what it collects, what it shares, and how it protects it. That form is rendered on the Play listing as a summary. It is necessarily compressed, and its categories do not always map cleanly onto what an app actually does.
This page is the uncompressed version: every answer we give in the Play Console, plus the reasoning. It exists so that the declaration can be checked against reality rather than taken on trust, and so that Play's summary and this site never disagree.
Google's guidance defines "collected" as data transmitted off the device. Data that is processed and stored only on your device is not collected, and is declared as such. Where that applies we say so explicitly rather than leaving it out, because "not collected" and "not touched" are different claims and we only make the one that is true.
The authoritative narrative account is the Privacy Policy. This page is the structured version of the same facts.
1 Summary of Declarations
| Play question | Our answer |
|---|---|
| Does your app collect or share any of the required user data types? | Yes |
| Is all of the user data collected by your app encrypted in transit? | Yes |
| Do you provide a way for users to request that their data is deleted? | Yes โ Data Deletion |
| Does your app allow users to create an account? | No โ there are no accounts |
| Has your app's data collection been independently validated against a global security standard? | No |
| Does your app contain user-generated content? | Yes โ the community hotspot map |
| Does your app target children? | No |
| Privacy policy URL | wifimap.epsilondevelopers.xyz/privacy-policy.html |
2 Data Collected
Collected means transmitted off your device. For each type we declare whether it is optional, why it is collected, and what happens to it.
2.1 Location
| Type | Collected | Optional | Purpose |
|---|---|---|---|
| Precise location | Yes | Yes | App functionality โ centring the map and stamping a contribution you choose to submit. Rounded to 5 decimal places before it is stored or sent. |
| Approximate location | Yes | No | Advertising โ Google AdMob infers a coarse country/region from your IP address for ad delivery. |
Note: precise location is used only while the Map tab is open, is requested at that moment rather than at first launch, and is never collected in the background. On Android 13 and above, scanning does not require it at all.
2.2 App activity
| Type | Collected | Optional | Purpose |
|---|---|---|---|
| App interactions | Yes | Yes | Analytics โ screen views, feature opens, session length. Collection follows your ad-consent choice; declining consent disables it. |
| Other user-generated content | Yes | Yes | App functionality โ hotspot contributions, venue names, notes, votes and reports you submit to the community map. |
| Other actions | Yes | No | Advertising โ ad impressions, clicks and completions, processed by AdMob. |
2.3 App info and performance
| Type | Collected | Optional | Purpose |
|---|---|---|---|
| Crash logs | Yes | Yes | Analytics โ diagnosing crashes. Collection follows your ad-consent choice; declining consent disables it. |
| Diagnostics | Yes | Yes | Analytics โ performance and error diagnostics. Same control as above. |
| Other app performance data | Yes | Yes | Analytics โ ad-serve outcomes and latency, used to tune frequency caps. |
2.4 Device or other IDs
| Type | Collected | Optional | Purpose |
|---|---|---|---|
| Device or other IDs | Yes | No | Advertising (Android Advertising ID, used by AdMob), analytics (a Google-generated app instance ID), and fraud prevention (our own randomly-generated install ID). |
Our install ID is a random UUID generated on your device. It is not the Android ID, not the advertising ID, and is not derived from any hardware identifier. Google's guidance treats it as a device or other ID, so we declare it as one โ but it identifies an installation for rate-limiting and moderation, not a person or a handset.
2.5 Purchase history
| Type | Collected | Optional | Purpose |
|---|---|---|---|
| Purchase history | Yes | No | App functionality โ honouring your Remove Ads or Pro entitlement. Limited to purchase state, product ID and purchase token. Payment details are handled by Google and never reach us. |
4 Explicitly Not Collected
Every Play data type we declare "not collected", so that the absences are on the record too:
| Category | Status | Note |
|---|---|---|
| Name, email address, user IDs, address, phone number | Not collected | There is no account and no sign-up. We never ask. |
| Race, ethnicity, political or religious beliefs, sexual orientation | Not collected | No feature touches these. |
| Payment card, bank account, credit score | Not collected | Google Play handles all payment; we never see it. |
| Health and fitness data | Not collected | โ |
| Messages โ email, SMS, in-app messages | Not collected | No such permission is declared. |
| Photos and videos | Not collected | Camera is used only to decode a WiFi QR code in memory; no frame is stored or uploaded. |
| Audio โ voice, sound recordings, music files | Not collected | No microphone permission. |
| Files and documents | Not collected | Exports are written where you choose; nothing is read back. |
| Calendar events | Not collected | โ |
| Contacts | Not collected | โ |
| Web browsing history | Not collected | Router Access opens a URL in your browser; we do not observe it. |
| Installed apps, app usage of other apps | Not collected | No QUERY_ALL_PACKAGES. |
| Search history within the app | Not collected | Map searches and tool inputs are not logged by us. |
| Passwords stored in the vault | Not collected | Encrypted on-device only. Never transmitted, in any form, to anyone. |
| WiFi scan results and network details | Not collected | Processed on-device. Only what you deliberately contribute is sent. |
| LAN device discovery results | Not collected | Probe traffic stays on your local network. |
| Speed test, heatmap and deep-scan history | Not collected | Local database only, unless you attach a speed sample to a community hotspot. |
| Full BSSIDs / MAC addresses | Not collected | The server rejects a full MAC outright; only the vendor prefix is kept. |
5 Security Practices
| Practice | Status | Detail |
|---|---|---|
| Data encrypted in transit | โ Yes | TLS on every request the App makes โ map tiles, contributions, speed tests, ads, billing, analytics. |
| Data encrypted at rest on-device | โ Yes, for credentials | Vault entries use AES-256-CTR with an HMAC-SHA256 tag, under a key held in Android's hardware-backed Keystore. |
| Data encrypted at rest on the server | โ Yes, for credentials | Community venue passphrases are stored encrypted and served per hotspot rather than embedded in public tiles. |
| Users can request deletion | โ Yes | In-app instant deletion, plus a web request route โ Data Deletion. |
| Account deletion | n/a | No accounts exist to delete. |
| Committed to Play Families Policy | โ No | Not a children's app; not enrolled. |
| Independent security review | โ No | Not validated against a global security standard. We say so rather than leaving it ambiguous. |
| Data minimisation | โ Yes | Coordinates rounded on-device, full BSSIDs rejected server-side, no accounts, no persistent user profile. |
How the analytics control actually works. Analytics and crash-reporting collection are switched together, and are driven by the advertising consent choice you make in the Google-provided form โ not by a separate setting. Declining consent, or a consent state that cannot be resolved, disables both along with advertising. You can revisit the choice at Settings โ Privacy โ Ad privacy options. A standalone analytics switch is planned; this page will be updated when it ships.
6 Permissions Declared in the Manifest
| Permission | Protection level | Used for |
|---|---|---|
INTERNET | Normal | Speed tests, map tiles, ads, purchases, contributions |
ACCESS_NETWORK_STATE | Normal | Detecting connectivity and connection type |
ACCESS_WIFI_STATE | Normal | Reading scan results and connected-network details |
CHANGE_WIFI_STATE | Normal | Starting a scan; handing a network to the system add-network sheet |
NEARBY_WIFI_DEVICESneverForLocation | Runtime (Android 13+) | Scan results without location permission |
ACCESS_FINE_LOCATION | Runtime | Map "my location"; scan results on Android 12 and below |
ACCESS_COARSE_LOCATIONmaxSdkVersion 32 | Runtime | Fallback for scan results on older releases |
CAMERA | Runtime | WiFi QR code import only |
com.google.android.gms.permission.AD_ID | Normal | Advertising ID access for AdMob on Android 13+ |
Deliberately absent
The manifest declares no QUERY_ALL_PACKAGES, no accessibility service, no SYSTEM_ALERT_WINDOW, no ACCESS_BACKGROUND_LOCATION, no foreground service, no contacts, SMS, call-log, microphone or storage-scope permission. Each of those is either unnecessary for what the App does or carries a review and privacy cost we are not willing to impose.
7 Third-Party SDKs in the App
Play holds developers responsible for what their SDKs do. These are all of them that touch data:
| SDK | Provider | Data it handles | Optional |
|---|---|---|---|
| Google Mobile Ads (AdMob) | Advertising ID, IP, device info, ad events | Removed by purchase | |
| User Messaging Platform (UMP) | Consent choices | Required where law applies | |
| Firebase Analytics | App interactions, app instance ID | Yes โ follows ad consent | |
| Firebase Crashlytics | Crash logs, device model, OS version | Yes โ follows ad consent | |
| Firebase Remote Config | Configuration fetch; no personal data | No | |
| Google Play Billing | Purchase state, product ID, purchase token | Only if you purchase | |
| Google Maps SDK for Android | Map viewport requests | Map tab only | |
| Google Play Services | Underlying platform services | No |
Every other package in the App โ the database layer, HTTP client, secure storage, QR scanner, charting, routing, state management โ is local-only and transmits nothing. The full list is on the Open Source Licenses page.
8 Ad Mediation Partners
AdMob mediation may be used to fill advertising inventory from additional networks. Where mediation is active, the participating network receives the same categories of advertising data described in Privacy Policy ยง9, under its own privacy policy and subject to the consent choice you made.
| Partner | Status | Privacy policy |
|---|---|---|
| Google AdMob | Active | policies.google.com/privacy โ |
| Meta Audience Network | Planned | facebook.com/about/privacy โ |
| AppLovin | Planned | applovin.com/privacy โ |
| Unity Ads | Planned | unity.com/legal โ |
| Liftoff / Vungle | Planned | liftoff.io/privacy-policy โ |
This table is kept current. A partner marked planned is not yet receiving any data. When one goes live we update this page and, if the change requires it, re-present the consent form rather than assuming your earlier choice covers it.
9 Target Audience & Content
| Declaration | Answer |
|---|---|
| Target age group | 13+ (18+ in India, per the DPDP Act) |
| Appeals to children? | No |
| Enrolled in Designed for Families? | No |
| Tagged for child-directed treatment in AdMob? | No |
| Content rating | General audience โ utility app, no objectionable content |
| Contains ads? | Yes, in the free version |
| Contains in-app purchases? | Yes โ two one-time, non-consumable products |
| Contains user-generated content? | Yes โ the community hotspot map |
| UGC moderation in place? | Yes โ see Community Guidelines ยง7 |
| In-app reporting for UGC? | Yes โ a Report control on every community entry |
10 Terminology
Play's vocabulary is specific, and misreading it is how declarations end up wrong. For clarity:
- Collected
- Transmitted off your device. On-device processing is not collection.
- Shared
- Transferred to a third party. Transfer to our own infrastructure, or to a processor acting on our instructions, is collection rather than sharing.
- Optional
- You can use the App without it โ either because a toggle exists, or because declining a permission leaves the rest working.
- Ephemeral processing
- Accessed in memory and not retained beyond the request. Camera frames in the QR scanner work this way.
- Service provider
- A third party processing on our behalf, under contract. Cloudflare is one; Google, for advertising, is not โ it processes for its own purposes too.
If you find any discrepancy between this page, the Play listing's Data safety summary, and what the App actually does, tell us. A mismatch is a defect and we will fix whichever side is wrong.
11 Contact
- Publisher
- Epsilon Developers
- Operated by
- Satyam Kushwaha & Anurag Mahajan
- Country
- India
- contact@epsilondevelopers.xyz
Spotted something that does not match?
If the app behaves differently from anything declared here, that is a bug in our declaration or in our code. Either way we want to know.
โ๏ธ contact@epsilondevelopers.xyz