Privacy Policy
Effective Date: 2026-07-03
This document defines the Privacy Policy for Wordrop — a macOS menu-bar vocabulary learning application. It covers the general (production) app and the Beta version, which adds a small amount of additional data collection on top of the standard app.
1. Overview
Wordrop stores your learning data locally by default. The app operates entirely on your device for its core learning features, and no personal account, cloud sync, or third-party analytics SDK is used. The only data that ever leaves your device is what you explicitly choose to send us — a vocabulary report, feedback or a feature request, an app rating, or (for Beta testers) your registration details. Nothing else is transmitted. See §3 below for exactly what that covers.
- Product Manager: Daniel
- Contact: support@tannguyen.info
2. Data Stored Locally Only
All data listed below is stored exclusively on your device using macOS UserDefaults, SQLite (via GRDB), and the app's Application Support container. None of this data is ever transmitted to any server — it stays on your Mac unless you uninstall the app.
| Data | Purpose | Storage |
|---|---|---|
| Vocabulary words and quiz history (word, translations, SRS state, review timestamps) | Core learning functionality | SQLite (GRDB) — local |
| Daily learning records (streak, words completed, heatmap data) | Progress tracking | SQLite — local |
| App settings (language pair, daily word goals, quiz modes, session config) | User preferences | UserDefaults — local |
| Pricing tier and daily word-count counter | Freemium feature gating | UserDefaults — local |
| Notification preferences (reminder interval, snooze state) | Quiz delivery scheduling | UserDefaults — local |
| Focus/blocking preferences (calendar blocking, screen-share blocking, video-call blocking) | Context-aware delivery | UserDefaults — local |
| Word pack identifiers (active pack slug) | Vocabulary set selection | UserDefaults — local |
2.1 System Permissions Requested
| Permission | Reason | When Requested |
|---|---|---|
| User Notifications | To deliver quiz reminders when the quiz window cannot be shown (e.g., fullscreen mode) | On first launch |
| Screen Recording / Accessibility | To detect full-screen windows and suppress quiz popups during focused work | On first toggle of fullscreen detection |
| Calendar (Read-only) | To detect active calendar events and suppress quiz popups while the user is in a meeting | On first launch, or when enabled in Settings |
These permissions are standard macOS entitlements. No screen content is captured, stored, or transmitted. Calendar data is read locally on-device only — event titles and attendees are never stored or sent anywhere.
2.2 In-App Purchases (StoreKit 2)
Wordrop uses Apple's StoreKit 2 framework for paid-tier subscriptions and one-time purchases (Monthly, Annual, Lifetime). Purchase transactions are processed entirely by Apple; Wordrop does not store or transmit payment information. The resolved tier is persisted locally in UserDefaults.
3. Data You Choose to Share With Us
These are the only ways any data leaves your device, and they only happen when you take an explicit action. This applies to every build of Wordrop, not just the Beta version.
3.1 Vocabulary Reports
If you spot a word, translation, or example sentence that looks wrong, you can report it directly from the app. Reporting a word sends:
| Data Sent | Purpose |
|---|---|
| The word/entry being reported (word, translation, example sentence) | So the developer can review and fix the entry |
| Issue type (wrong translation, wrong example, typo, other) | To categorize and prioritize fixes |
| Your optional note describing the problem | Additional context for the fix |
| App version and macOS version | To reproduce the issue |
A vocabulary report does not include your name or email unless you are a Beta tester (see §4.1) or you choose to add them in your note.
3.2 Feedback & Feature Requests
Tapping "Send Feedback" in the app sends your message text, along with app version and macOS version, directly to the developer. If you are a Beta tester, your registered name and email are attached so the developer can follow up; otherwise, no identifying information is sent unless you include it in your message.
3.3 App Ratings
Tapping "Rate this app" sends your star rating (1–5) and an optional message, along with app version and macOS version. As with feedback, your name and email are only attached if you are a Beta tester.
3.4 How This Data Is Sent
Vocabulary reports, feedback, and ratings are all sent to a Telegram bot controlled by the Wordrop developer, over TLS-encrypted HTTPS. No third-party analytics services are used, and no data is sent if the Telegram bot token is not configured in the build.
4. Beta-Only Additional Data Collection
The Beta version of Wordrop is a pre-release build distributed directly to invited testers. In addition to §3 above (which applies to every build), it collects a small amount of extra data to run the trial and gather engagement feedback. This layer is only present in builds where the compile-time beta flag is enabled.
4.1 Beta Registration Data (Collected Once at Onboarding)
During onboarding (BetaRegistrationView), beta users are asked to provide:
| Field | Purpose |
|---|---|
| Name (optional) | To identify the tester in reports |
| Required to send production-access requests after trial expires | |
| Job / Role (optional) | To understand the user demographic |
| Consent checkbox | Explicit opt-in consent to beta data collection |
This data is stored locally in AppSettings (UserDefaults). It is only transmitted alongside a §3 action (vocabulary report, feedback, rating) or an automatic milestone report (see §4.2), so the developer can identify and follow up with you.
4.2 Beta Engagement Data (Collected Automatically)
After the consent checkbox is ticked, the following usage data is recorded locally and transmitted at milestone intervals:
| Data | Purpose | Transmitted? |
|---|---|---|
| Words completed per day (count per date string) | Engagement metric | Yes — at milestones |
| Word packs used (set of pack IDs across all days) | Usage pattern | Yes — at milestones |
| App version string and macOS version | Device context for bug reports | Yes — in all reports |
| Beta install date | Milestone calculation (D+3, D+7, D+14, D+30) | Not directly; used locally |
Milestone reports (D+3, D+7, D+14, D+30) send your name, email, job, language pair, words-per-day log, word packs used, app version, and macOS version — automatically, once per milestone on app launch.
4.3 Production Access Requests
When a Beta trial expires, tapping "Request Production" in the PLAN tab sends your name, editable email, preferred pricing tier, and an optional message, along with app version and macOS version. This is a Beta-only action, since only Beta testers have a trial to convert.
4.4 Beta Trial Window
The beta version grants full paid-tier access for 30 days from first launch. This date is stored locally only. When the trial expires, the app reverts to free-tier restrictions (5 words/day, flashcard-only mode).
4.5 Beta Data Retention
Beta data (daily word logs, pack usage set) is stored on-device and remains until the app is uninstalled. The developer retains transmitted Telegram messages for the duration of the beta program.
4.6 Legal Basis for Beta Data Collection (GDPR)
For users in the European Economic Area, data collection during the beta program is based on consent (GDPR Article 6(1)(a)). Consent is given via the checkbox in BetaRegistrationView. Beta testers may withdraw consent by contacting the developer, who will delete their transmitted data and remove them from the program.
5. Third-Party Services
| Service | Used In | Data Shared | Link |
|---|---|---|---|
| Apple StoreKit 2 | Production + Beta | Purchase transaction processing (handled by Apple) | Apple Privacy Policy |
| Telegram Bot API | All builds (vocabulary reports, feedback, ratings) + Beta only (registration, milestone reports, production requests) | Vocabulary reports, feedback, ratings, and (Beta) registration info | Telegram Privacy Policy |
6. What We Never Collect
- No background telemetry or automatic network calls — data is only ever sent when you take an explicit action described in §3 or §4
- No advertising identifiers (IDFA, IDFV)
- No crash reporting SDKs (e.g., Firebase Crashlytics, Sentry)
- No analytics SDKs (e.g., Mixpanel, Amplitude)
- No screen content or keystrokes
7. Children's Privacy
Wordrop is not directed at children under the age of 13. The app does not knowingly collect personal information from children.
8. Data Security
All locally stored data is protected by macOS App Sandbox. Data transmitted to Telegram is sent over TLS-encrypted HTTPS. The developer does not use the transmitted data for any purpose other than improving the product.
9. User Rights
All users: your learning data stays on your device. You can delete all local app data by uninstalling Wordrop. The only data we ever retain on our side is what you explicitly sent us under §3 or §4 above.
You additionally have the right to:
- Access the data transmitted about you (contact the developer)
- Request deletion of transmitted data
- Withdraw Beta consent at any time by contacting the developer
10. Changes to This Policy
The developer may update this Privacy Policy. Beta users will be notified of material changes through the app's PLAN tab.
11. Contact
For privacy-related questions, contact our product manager: support@tannguyen.info