Contractor Estimate Maker Privacy Policy for Android

Effective date: 2026-10-30

Notice version: 1.8.1

1. Scope and local documents
This policy applies to the Android version of Contractor Estimate Maker. No app account is required. Estimates, quotes, invoices, business and client details, line items, notes, history, client signatures, business logos and generated PDFs are stored on your device. The app does not upload this business content to our servers or to RevenueCat. You choose when to save a file outside the app or share it with another app. The recipient then handles that copy under its own terms. Device-level backup is controlled by Android and your device settings; keep your own copies of important documents.

2. Images, signatures and permissions
The system image/document picker gives the app access only to the image you select for your business logo. The app does not request broad photo, media or storage access, or contacts, camera, microphone or location access. Client signatures are drawn and stored with the document on your device. PDF preview and calculations run locally. Internet access is used for purchase services, explicitly requested review access and links you choose to open.

3. Purchases and subscriptions
Google Play processes Android Pro payments. RevenueCat verifies purchases, restores access and keeps the Pro entitlement current after renewal, expiry, refunds or revocation. RevenueCat receives purchase history, transaction and product identifiers, an anonymous app user identifier, and app/device information needed for purchase functionality and purchase analytics. Automatic device advertising identifier collection is disabled; the app does not supply your business details, client information, name, email, estimate amounts, signatures, logos or PDFs as customer attributes. We do not receive payment card details. Purchase status is not included in document backups. See https://www.revenuecat.com/privacy and https://policies.google.com/privacy.

Review access: only when an authorized reviewer enters a review code and taps Activate, the code and the current anonymous installation ID are sent over HTTPS to our Estimate service. We validate the code and use RevenueCat to grant 14 days of Pro without a purchase or renewal. The private claim record contains the anonymous ID, grant/expiry and revocation status, for code limits, abuse prevention and revocation. It does not contain business content. Re-entering the code does not extend the period. Codes expire after at most 90 days and accept at most 20 installations. Review claim records are retained only for the review window and necessary security/deletion handling; contact support to request deletion or revocation. Secret service credentials and the code are not included in the app. Once access expires or is revoked, the app refreshes RevenueCat status and returns to Free without deleting documents.

4. Analytics and advertising
Optional Firebase Analytics is off by default. Your separate Analytics choice in app Settings is saved on this device and restored after restart only when the app build and current privacy policy permit collection. Turning it off stops collection and clears pending analytics data on the device; it does not delete data Google already received. Document creation, saving and Pro access do not require analytics. We do not initialize Crashlytics or advertising SDKs or request an advertising identifier. RevenueCat purchase analytics described above is part of subscription processing and is separate from product-event analytics. With your opt-in, five custom events measure successful estimate saves (estimate_saved), actual PDF saves (pdf_export_saved), Pro offer views (paywall_viewed), and verified new trials or purchases (trial_started, purchase_completed). Cancelled, failed or restored purchases do not generate those purchase events. Our custom metadata is only Android platform, app version and build number; no prices, product identifiers, document IDs, business/client details, PDFs, signatures, images or other business content are attached, and we never set a Firebase user ID.

Google Analytics for Firebase also processes app-instance/installation identifiers, device and operating-system information, language, timestamps, and session/engagement metadata. The SDK can generate automatic lifecycle events such as first_open, session_start, user_engagement and app_update under its triggering conditions. These are separate from the five custom events. Automatic screen reporting is disabled in this Android build. This measurement is not fully anonymous.

Google Analytics processes IP addresses to derive approximate location such as country or region; Google states that Analytics does not log or store IP addresses. Our shared Analytics property has city-level location and detailed device collection disabled for all regions. This does not remove all device/OS, country/region or session metadata. The app requests no location permission. Advertising storage, advertising ID collection, advertising user data and ad personalization are disabled in this Android build; the property also disallows ads personalization in all regions. Disabling these settings does not erase previously collected data.

We use measurement to improve successful saves and the Pro experience. Data is transmitted to Google under its applicable terms and privacy information: https://policies.google.com/privacy. These settings do not remove Google's processing of the measurement data described above. RevenueCat purchase processing remains separate and is not made optional by the Analytics switch. The app does not display ads or sell personal information.

5. Retention and your choices
Current GA4 retention controls retain event data for 2 months and user data for 14 months. New activity can restart the user-data retention period. Expired data is removed through Google's monthly deletion process. These controls do not apply to standard aggregated reports in the same way and are not a universal deadline for deletion of all data.

Turning Analytics off stops dispatch and requests a reset of local Analytics data and the app-instance identifier; it does not delete data Google already received. There is no in-app remote Analytics deletion feature. You may contact support for privacy requests, but we cannot promise to locate or delete a particular historical Analytics record. Because the app has no account and its Analytics identifier can change, a support email may not identify your previous Analytics data. A process for remotely deleting these records has not been implemented. Do not send client documents, payment card details or other business content with a request.

Local records remain until you edit or delete them, clear the app data or uninstall the app. Exported/shared copies remain wherever you saved or sent them. Google Play and RevenueCat may retain purchase records for access restoration, accounting and legal requirements after uninstalling the app. Manage or cancel renewals in Google Play subscriptions; deleting the app does not cancel a subscription. Contact support for access, correction or deletion requests concerning support or purchase-service records. We may need a purchase reference to find an anonymous purchase record; do not send payment card details or client documents. Support records are retained only as needed to respond and meet legal obligations. Some purchase records may have to be retained as required by law.

6. Children and contact
The app is a business utility and is not directed to children. For privacy or purchase-data requests, contact caoqun6666@gmail.com. Developer and privacy contact: Kevin.

Support and privacy requests ยท Terms of Use