Effective date: 2026-10-10
This policy covers two Android TV apps published on Google Play by CLAPPS:
| App | Package | Business model |
|---|---|---|
| TVmail | not.a.bug.tvmail | Free, with an optional "TVmail Premium" subscription |
| TVmail Pro | clapps.be.tvmail | Paid upfront, no subscription and no in-app purchases |
Both apps are built from the same code and use the same backend (a Google Firebase project), so everything below applies to both, except where a section says "free app only". "TVmail" below means either app.
Contact: ralf@clapps.be
TVmail asks Google for two Gmail permissions: gmail.readonly and gmail.modify. It uses them only to:
Your emails and attachments are fetched directly from Gmail by your TV and are stored only on the TV: in TVmail's private database, in its image cache, and, when you open an attachment, as a file in TVmail's storage on the TV, which is then handed to the viewer app you choose. Search terms you type are sent to Gmail only. For each Gmail label, TVmail writes the subject, sender and preview image of recent emails to the TV's system home-screen database (Android TV's TvProvider), so that they can be shown in home-screen rows. They appear on the home screen only for the rows you add, and they are deleted when you sign out or delete your account.
Our servers never receive the content of your emails, their subjects, senders or attachments.
To show a small icon for each sender, TVmail asks Google's public favicon service (www.google.com/s2/favicons) for the icon of the sender's domain (for example example.com). Only the domain is sent, never the full address or anything from the message. Images inside an email are loaded from the servers that host them, as in any email app.
TVmail's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements. In particular:
The backend runs on Google Firebase / Google Cloud (Cloud Firestore, Cloud Functions in the us-central1 region, Firebase Cloud Messaging). It holds:
a) New-mail notification registration. Your Gmail address and the push-notification token (FCM token) of the TV (or TVmail app) that registered most recently (each signed-in TV registers again whenever the app opens and syncs), plus the time of the last update. When Gmail signals new mail, Google sends TVmail's server a notification that contains only your email address and a mailbox change number (Gmail "history ID"). The server looks up the TV's push token and sends that TV a push message with the same two values. The TV then fetches the new email from Gmail itself. There is normally one registration per Gmail address (an address first registered by version 1.5.3 or older with capital letters can have a second one). It is shared by TVmail and TVmail Pro and by all your TVs, and only one TV receives the push, normally the one that registered last.
b) Sign-in hand-off (temporary). You sign in by scanning a QR code on the TV with your phone. That opens tvmail-97ca9.web.app and then Google's sign-in page. When you approve, the authorization code goes to TVmail's Cloud Function. The function exchanges it with Google for your OAuth tokens (an access token and a refresh token). It then stores them, with the granted permissions and expiry times, in a temporary Firestore document named after the random code shown on your TV. The TV reads this document and deletes it immediately. A document the TV never collects can no longer be read after 10 minutes. A scheduled clean-up job deletes it within the next 15 minutes, and a Firestore time-to-live policy removes it as a backup. (With app version 1.5.3 and older, this document holds only a one-time authorization code, which the clean-up job deletes after 15 minutes.)
c) Token refresh. Every hour or so the TV sends its refresh token to a TVmail Cloud Function, which asks Google for a new access token and returns it. The refresh token is not stored on the server. Since version 1.6.0 the app no longer contains TVmail's Google client secret: the current secret is kept only on the server (see Security).
d) Legacy sign-in record. People who signed in with the older "Sign in with Google" button (2023–2025) also have a Firebase Authentication account record: email address, name, profile photo link and Google account ID. Current versions do not create new records. These records are deleted when you delete your account (section 6).
e) Account status (since version 1.7). Accounts that started using the free TVmail app with version 1.7.0 got a 7-day Premium trial. Since version 1.7.1, new accounts start directly with the free features of new accounts, with no in-app trial (Google Play may offer a free trial of the annual Premium subscription, see section 4). Accounts that used TVmail before version 1.7 keep the free features they always had. To apply this the same way on all your TVs, after a reinstall and on a new TV, the server keeps a record keyed by your Gmail address with: the date TVmail first saw the address, whether the address used TVmail before version 1.7, the start and end dates of the trial (accounts that got one), and whether the account started without a trial (version 1.7.1 and later). It is created automatically for any TVmail account, whichever app you use (TVmail or TVmail Pro), when our server handles a request for your address: a new-mail alert registration, a Gmail new-mail signal, a sign-out, an account deletion or a free-app status check. It is used only by the free app, only to decide which features are free for you, and no app or browser can read or change it (Firestore security rules). Signing out does not delete it; deleting your account does (section 6). The free app also remembers, on the TV only, whether TVmail was installed on that TV before version 1.7 (from the app's install date); such a TV keeps the original free features, and the app tells the server so with each status check, which marks the address as having used TVmail before version 1.7. With that information the app may send the anonymous RevenueCat ID of the TV, so the server can ask RevenueCat when that ID was first seen. Only that date is used, and the ID is not stored on our servers.
The sign-in web page on your phone uses no cookies and no analytics. It loads the Roboto font from Google Fonts. For older app versions it also loads the Firebase JavaScript library from Google.
When the server needs to confirm which mailbox a request comes from (push registration, account status, sign-out, account deletion), it first asks Google to confirm that the access token sent by the TV was issued to TVmail, then asks Gmail for the address that owns it. It uses that access token only for this check, to stop the Gmail new-mail signal and, when you delete your account, to revoke TVmail's access (together with the refresh token the TV sends for that purpose, which is not stored), never to read your email.
| Service | What it receives | Used by |
|---|---|---|
| Google sign-in (OAuth) and Gmail API | Your Gmail requests from the TV; from our server, the sign-in, token refresh, push registration, account status, sign-out and deletion requests described in section 2 | both apps |
| Google Firebase (Firestore, Cloud Functions, Cloud Messaging, Authentication for legacy sign-ins) | The data in section 2, the TV's push token and Firebase installation ID | both apps |
| Firebase Crashlytics | Crash and error reports, and app-start session events (see section 5) | both apps |
| Google favicon service | Sender domains (section 1) | both apps |
| RevenueCat | An anonymous app user ID generated on the TV, your Google Play purchase and subscription records (product, purchase token, dates), technical data such as app and Android version, and a label saying whether your account started using TVmail before version 1.7 (legacy) or after (new). For a TV that had TVmail before version 1.7, TVmail's server may also ask RevenueCat when that anonymous ID was first seen (section 2 e). RevenueCat never receives your Gmail address or any Gmail data. | free app only; TVmail Pro does not include RevenueCat |
| Google Play billing | Your purchase, including any free trial of the subscription, handled by Google Play under your Google account | free app (subscription), TVmail Pro (app purchase) |
Like any internet service, these services see the IP address of your TV when it connects to them.
No analytics, no advertising. TVmail contains no analytics SDK (Google Analytics for Firebase was removed in version 1.6.0), no advertising SDK, and it does not access the Android advertising ID. We do not sell or share your data with anyone for advertising or any other purpose.
When the app crashes or hits an error, Firebase Crashlytics sends a report containing: the error and stack trace, the time, the app version, the device model and manufacturer, the Android version, technical device state (such as free memory and disk space, orientation, whether the device is rooted) and a random Crashlytics installation identifier. TVmail does not attach your email address, the content of your emails or your tokens to these reports. Firebase keeps crash reports for 90 days. Crashlytics also sends a small session event each time the app starts, even without a crash. It holds a random session ID, the Firebase installation ID, the app version, the device model and the Android version, and is used to compute crash-free rates. It contains no email data.
Sign out (Settings → Log Out):
Delete account & data (Settings → Delete account & data):
You can also:
Deleting your account does not cancel a TVmail Premium subscription (free app). To stop billing, cancel it in Google Play under Payments & subscriptions → Subscriptions. TVmail Pro has no subscription.
All connections use HTTPS. Firestore security rules stop any app or browser from reading the notification registrations and account status records, and a sign-in hand-off document can only be read by someone who knows its random code, and (for app version 1.6.0 and later) only for 10 minutes. Since version 1.6.0 the app no longer contains TVmail's Google client secret; it is kept on the server. An older secret embedded in versions 1.5.3 and earlier remains active only until those versions are retired, and will then be disabled. No method of transmission or storage is 100% secure, and we cannot guarantee absolute security.
TVmail is not directed at children under 13, and we do not knowingly collect personal information from children under 13. If you believe a child has provided personal information, contact us and we will delete it.
We may update this policy. Changes are posted on this page with a new effective date. Significant changes will also be mentioned in the app's release notes.
For questions about this policy or your data, or to request access to or deletion of your data, email ralf@clapps.be.