This Privacy Policy explains how Membership Tracker (com.maelkotl.membershiptracker) handles information. Membership Tracker is provided by Siarhei K. (the “Service Provider”). Questions and privacy requests can be sent to maelstorm.dev@gmail.com.
Membership Tracker is local-first: you can use its core tracking features without creating an account. Optional online features and the diagnostic services described below send limited data from your device.
Data stored on your device
Without cloud sync, membership details, categories, payment-method labels, visits, comments, amounts, currencies and preferences are stored locally. They are not uploaded merely because you enter them. Local information may leave the device if you enable cloud sync, include it in a support email, export or share it yourself, or use another online feature described below.
Uninstalling normally removes local app data, subject to Android or iOS backup, device-management and operating-system behavior outside the Service Provider’s control.
Optional account and cloud sync
Creating an account and using cloud sync are optional. Firebase Authentication may process your email address, display name, user ID, sign-in provider information, profile-photo URL when provided, IP address and user-agent security data. On Android, signing in creates or updates a Cloud Firestore profile containing user ID, name, email, profile-photo URL and login timestamps. On iOS, signing in may read or observe existing account, app-preference and entitlement records; content sync writes account-owned data and sync metadata. Account authentication and entitlement reads may occur even if content sync is turned off.
If you separately enable content sync, Cloud Firestore may additionally upload and store:
- membership names, dates, statuses, plans, amounts, currencies and payment cycles;
- category names and user-defined payment-method labels;
- visit and event timestamps, costs, comments and other user-generated content;
- favourites and notification, language, sync and guidance preferences.
This data provides account management, cross-device synchronization and app functionality. The Application does not request or store payment-card numbers, CVCs or bank-account credentials.
Server cloud backups for Pro
For eligible Pro accounts, the service checks about once every seven days for changes in account-owned data already uploaded through content sync. When the data changes, it may create a private server snapshot in Google Cloud Storage in Europe. The snapshot can include memberships, visits and events, categories, payment-method labels, favourite currencies and selected preferences. It does not include data that exists only on a device, shared-access records, authentication credentials or purchase records. Previously uploaded data may be included even if content sync is later turned off. This is not a full device backup.
The service normally retains the four most recent verified snapshots and one older monthly checkpoint. It may retain more if the cloud data unexpectedly shrinks, pending review. Existing snapshots may remain while the account is active after Pro access ends or account data is reset. Deleting the account removes its backup objects; Google Cloud Storage soft delete may keep deleted objects recoverable to the Service Provider for up to seven more days before permanent removal. The current app does not yet offer a screen to choose or restore a snapshot.
Shared memberships and invitations
When a Pro account holder chooses to invite someone to view a membership, the online sharing service processes the invited email address, account identifiers, the selected membership and invitation settings. The invitation preview may show the membership name and category, the owner's email address, the access permissions and the invitation's expiry date. The recipient must sign in with a verified account using the invited email address to accept. Receiving a shared membership does not require Pro or the recipient's paid personal-data sync.
After acceptance, the recipient may see a read-only summary of the owner's membership and, only where the owner has allowed it, related visits, visit notes and cost information. Shared information is processed through Cloud Firestore to provide this access. The owner can change permitted visibility, cancel a pending invitation or revoke active access; the recipient can leave a shared membership. These actions stop ongoing in-app access but cannot erase information a recipient already copied or captured outside the Application.
Deleting an account also causes the sharing service to remove invitations and access grants associated with it. This server-side cleanup follows account deletion and may not be instantaneous. The Application does not transfer ownership of a deleted account's memberships to another user.
Automatically collected data
The automatic collection described below depends on the platform and service. The Application does not currently provide an in-app switch to disable the active diagnostic collection.
Firebase Analytics
On Android, Google Analytics for Firebase may collect app-instance and device or advertising identifiers, app interactions, screen and session activity, app launches and updates, app and device information, approximate geography derived without Android precise-location permissions, purchase-related events and technical update events. The Service Provider uses this information to understand feature usage and improve the Application. Firebase Analytics collection is explicitly deactivated in the current iOS app. Membership Tracker does not request precise location on either platform.
Firebase Crashlytics and Firebase Sessions
On both platforms, Firebase Crashlytics collects standard crash reports, stack traces, app and device state and installation identifiers to diagnose problems and improve reliability. Firebase Sessions also collects session identifiers, start times and related app/installation information for app-quality monitoring. On Android, reports may additionally include non-fatal errors, diagnostic keys, analytics breadcrumbs and a Firebase user ID when an error relates to a signed-in user. The current iOS app uses standard Crashlytics reports without attaching a custom user ID, diagnostic keys, app-written logs or non-fatal reports. These iOS crash reports follow Firebase’s standard unlinked crash-data disclosure; installation identifiers and the operational records described below are separate collection.
Firebase Remote Config and Firebase Installations
On both platforms, Firebase Remote Config and Firebase Installations may process a Firebase installation ID, country code, language, time zone, platform and operating-system details, Firebase App ID, package name and SDK/app version. This information is used to deliver and evaluate application configuration and maintain Firebase services.
Google sign-in on iOS
If you choose Google sign-in on iOS, Google processes account and device identifiers, usage and diagnostic information, SDK/version and execution-environment information, and approximate location derived from IP address for sign-in, security and its own service analytics. Google’s iOS sign-in SDK also declares phone-number collection for sign-in functionality. Membership Tracker requests basic email/profile sign-in and does not itself request or extract a phone number. This provider processing is independent of the deactivated Firebase Analytics collection in the iOS app.
Service operation and usage metrics
The online sharing service records operational diagnostics and product metrics, including invitation creation and responses, shared-membership snapshot outcomes and permission changes. These records help operate and secure the service, diagnose failures and understand feature usage. Operational logs contain stable hashes of account identifiers, and product metrics may be associated with an account through request timing and related operational records. These records are collected for online sharing on both platforms, including iOS while Firebase Analytics is deactivated.
These services may transmit device and usage information to Google even without an account. Depending on device, OS and service configuration, Android or Google Play services identifiers may be included. Membership Tracker does not display third-party advertising and does not use these identifiers to show ads inside the Application.
Purchases
Optional purchases use Google Play Billing on Android and Apple In-App Purchase (StoreKit) on iOS. The Application and its verification backend may process product identifiers, purchase or transaction identifiers, purchase time and state, renewal, expiry, revocation and entitlement information, and related fraud-prevention data. For Apple purchases, this also includes the original transaction identifier and an app-account token linked to the signed-in Firebase user ID. The server uses Apple-signed purchase information and the App Store Server API to verify current access, restore purchases and process renewal or revocation notifications. Google and Apple handle payment credentials independently under their own terms; Membership Tracker does not receive full card details.
On iOS, Sign in with Apple may supply an Apple provider identifier, name and email address, including a private relay email if you choose to hide your email. Firebase Authentication uses this information for your app account. Firebase App Check uses Apple DeviceCheck on production iOS devices to help protect server requests against abuse; Apple and Firebase may process technical device-validation information for that purpose.
Deleting an account removes its user ID and app-account token from private Apple purchase ownership records. Account-token replay tombstones become eligible for cleanup after 30 days. Pseudonymized purchase-chain records are retained to prevent reuse: Lifetime ownership barriers have no fixed expiry; expiring purchases are retained until 180 days after the verified expiry, or at least 30 days after account deletion, whichever is later; bounded scheduled cleanup may take additional time. Google and Apple separately control purchase records they retain. Deleting a Membership Tracker account does not cancel a Google Play or Apple subscription. Manage or cancel it in the store where you purchased it.
Exchange rates
When a currency feature needs fresh exchange rates, the Application sends the selected base-currency code to ExchangeRate-API (AYR Tech). That provider may receive network metadata such as IP address. The request is used to provide currency conversion data.
Support communications
If you contact support, the Service Provider receives the email, message, attachments and other information you choose to send. Optional diagnostics may include package/build variant, version code, device model, Android/API version, locale and sanitized error summaries.
How information is used
- provide local and optional cloud features;
- authenticate users and synchronize data;
- process purchases and restore entitlements;
- operate, configure, secure and troubleshoot the Application;
- measure feature usage and improve performance and reliability;
- respond to support, privacy and deletion requests; and
- comply with law and enforce legal rights.
The Service Provider does not use information collected by Membership Tracker for its own direct advertising campaigns.
Service providers and disclosure
- Apple — Sign in with Apple, App Store purchases, transaction verification and DeviceCheck;
- Google Play services, Google Play Billing and Google sign-in — platform services, purchases, entitlements, authentication, provider analytics and security;
- Firebase — Authentication, Cloud Firestore, Analytics on Android, Crashlytics, Sessions, Remote Config, Installations and server functions;
- Google Cloud Storage — private server backup snapshots;
- Google Cloud Logging — service operational diagnostics and sharing usage metrics; and
- ExchangeRate-API — exchange-rate requests.
Information is transmitted to or processed by the listed providers as needed for the purposes above. They process data under their own terms and privacy documentation. Firebase states that listed Android SDK data is encrypted in transit using HTTPS and is not transferred to third parties except Firebase subprocessors or transfers made under the developer’s instructions. Depending on the Service Provider’s Firebase/Analytics settings, configured product links or exports, data may also be made available to linked Google products or other configured destinations; when enabled, the linked service processes data under its own terms.
When a membership owner explicitly sends an invitation and the recipient accepts it, the selected information is made visible to that recipient as described under “Shared memberships and invitations”. The owner controls the access settings; this is different from transmission to the service providers listed above.
Information may also be disclosed when reasonably necessary to comply with law, protect users or the Service Provider, investigate fraud/security incidents, or complete a business transfer with safeguards. The Service Provider does not receive payment for selling personal information collected through Membership Tracker.
Data retention and deletion
Local data remains until you delete it, clear app data or uninstall, subject to OS or backup behavior. Account and synchronized data is retained while the account is active and as needed for requested cloud features.
You can request account and associated-data deletion in Settings → Account Settings → Delete account and associated data, at https://membership-tracker-516b3.web.app/delete-account, or by emailing support.
Externally submitted requests are completed within 30 days after ownership verification. A support request can remove account and cloud data but cannot remotely wipe a device's offline local data. In-app deletion clears local account data on the device after the account-deletion flow completes. Associated sharing invitations and access grants are cleaned up by the server following account deletion. Account deletion does not cancel Google Play or Apple subscriptions; the relevant store independently controls purchase records it retains. External deletion-request correspondence is kept for up to 90 days after completion, then deleted.
Analytics, installation, configuration, crash/session data, provider sign-in information and server operational logs and usage metrics are retained according to the applicable provider terms, product configuration and retention controls, or for as long as reasonably needed for the purposes described in this Policy. Provider retention periods vary by service; Firebase Analytics deactivation on iOS does not delete or disable these other service records. Ordinary support correspondence, including attachments, is deleted within 90 days after the request is closed. Information may be kept longer where legally required, necessary for disputes, fraud prevention or agreement enforcement, then deleted or de-identified when that reason ends. Correspondence for account-deletion requests follows the separate 90-day-after-completion period above.
Your choices and rights
You may use the Application without an account, choose cloud features, decide what to send to support, manage purchases in Google Play or your Apple Account and delete local app data through your device. Depending on your location, you may request access, correction, deletion, restriction or a copy of personal information by contacting support. Uninstalling stops future collection from that installation but does not itself delete an account or cloud records.
Security
The Service Provider uses reasonable administrative and technical safeguards. Listed API connections use HTTPS, and Firebase documents encryption in transit for data collected by its Android SDKs. No storage or transmission method is completely secure.
International processing
Listed providers may process information in other countries. Their privacy documentation describes locations and safeguards. Online-feature data may be transferred where necessary to provide the feature, subject to applicable law.
Children
Membership Tracker is not directed to children under 13 and does not knowingly collect their personal information. Contact support if you believe a child provided information so it can be investigated and deleted where appropriate. A higher minimum age may apply in some countries.
Changes to this Policy
The Policy may change with the Application, providers or legal requirements. The effective date will be updated, and material changes may also be communicated in the Application or store listing where appropriate.
Canonical language
Translations are provided for convenience. If a translation conflicts with English, English is the canonical description except where applicable law requires otherwise.
Contact us
Privacy questions, rights requests and complaints: Siarhei K., maelstorm.dev@gmail.com, Membership Tracker (com.maelkotl.membershiptracker).