Privacy Policy
1. Who we are
Calendar+ 2 (“the app”, “we”, “us”) is developed and published by Joshua & Company Inc. This Privacy Policy explains what information the app accesses on your device, why it accesses it, and how it is handled.
If you have any questions about this policy, you can reach us at admin@joshuanco.com.
2. Information the app accesses
Calendar+ 2 acts as a client for the calendar database that already exists on your device (Android Calendar Provider on Android, EventKit on iOS). It does not maintain a cloud account for your calendar data and never stores your events on our servers. The only server we operate is a small backend that powers the optional AI features described in section 2.8, and it is contacted only when you actively use one of those features. Separately, if you connect one or more Google accounts, the app calls Google’s own APIs directly from your device for the features described in section 2.9 — those requests never pass through our backend.
2.1 Calendar data
- The app reads and writes calendar events, reminders, attendees, and calendar-account metadata through the operating system’s calendar APIs.
- Events you view or edit in Calendar+ 2 are the same events stored by the calendar accounts you have already configured on your device (for example, Google, iCloud, Exchange, or a local-only calendar).
- Routine synchronization of those accounts is performed by the operating system and by the account providers, not by Calendar+ 2. Whether your events are uploaded to a cloud provider depends on the account you chose in the OS — not on this app.
- Apart from what the optional AI features send for a request you make (section 2.8), the app does not transmit your events to us, and it does not store them on any server we operate.
- One exception, which you control: if you connect a Google account, a few features send data to Google’s own APIs directly from your device (reading an event’s attachments, writing an attachment or a guest change back to the event, uploading an attached file to your Google Drive, and — if you use the Tasks feature — reading and writing your Google Tasks). This is described in full in section 2.9.
2.2 Contacts
- If you grant the contacts permission, the app reads contact names, email addresses, and contact photos so it can suggest attendees while you type and display a photo or initial next to a participant.
- Contact lookups happen entirely on the device. The app does not upload your contact list.
- You can revoke the contacts permission at any time in your system settings; attendee autocomplete and photos will simply be disabled.
2.3 Notifications
- The app schedules and posts local notifications for event reminders and snooze. These notifications are generated on your device by the operating system — we do not operate a push server.
- The app may request the notification permission and, where applicable, the exact-alarm permission so reminders fire at the correct moment.
2.4 App settings and preferences
- Your in-app preferences (theme, week start day, view type, widget configuration, default reminder, quick responses, holiday filter, etc.) are stored locally on your device.
- These settings are not sent to us, with one exception you control: when you ask the AI Assistant to look at or change a setting, the current values of the app’s settings are sent with that request (see section 2.8). They may be included in your standard operating-system backup (Android Auto Backup / iOS device or iCloud backup) if you have that feature enabled; that backup is managed by the OS vendor, not by us.
2.5 Photos / images (widget background)
- If you choose a photo from your library as a widget background, the app reads that single image and stores a derived (e.g. blurred) copy in its own app-private storage so the widget can render it.
- The app does not scan your photo library beyond the image you explicitly pick, and it does not upload any image.
2.6 Purchases and subscriptions
- Premium features, if any, are unlocked through Google Play Billing (Android) or the App Store (iOS). The payment, billing address, and subscription state are handled by Google or Apple under their own terms and privacy policies.
- Calendar+ 2 only receives a signal from Google Play or the App Store that indicates whether your purchase is currently active. We do not see your payment instrument, name, or billing address.
- Subscriptions and the “is this purchase active?” entitlement check are managed for us by Adapty, a subscription-management provider. Adapty assigns a pseudonymous profile identifier (a random ID, not your name or email), which is also used to check your monthly allowance for the AI features in section 2.8. The underlying payment and billing details remain with Google or Apple. See Adapty’s Privacy Policy.
2.7 Usage analytics
- To understand how the app is used and to improve it — for example, which calendar views and features are popular and whether onboarding leads to a purchase — the app uses Google Firebase Analytics.
- Firebase Analytics collects anonymous, aggregated information such as the in-app actions you take (for example, switching calendar views, creating an event, opening the upgrade screen, or completing a purchase), general device and operating-system information, a randomly generated app-instance identifier, and an approximate (city-level) location derived from your IP address.
- We deliberately do not send the content of your events, reminders, or contacts to analytics. Event-related metrics are recorded only as non-identifying counts and categories (for example, “an event was created”) — never the titles, notes, attendees, times, or locations of your events.
- We do not use the iOS advertising identifier (IDFA) or the Android advertising ID, and analytics is not used for advertising or cross-app tracking.
- This data is processed by Google as our service provider. See Google’s Privacy Policy and how Firebase uses data. Event-level data is retained for a limited period under our Firebase configuration; aggregated, non-identifying reports may be kept longer.
- Where required by law — for example, for users in the European Economic Area (EEA), the United Kingdom, or Switzerland — analytics is automatically disabled and no usage data is collected. The app determines the applicable region at launch and does not collect analytics from those users.
2.8 AI features (optional)
Calendar+ 2 offers optional AI-assisted features: Fill with AI (the ✨ button in the event editor, which turns a phrase like “lunch with Sam Friday 1pm” into the event’s details), the AI Assistant (a conversation in which the assistant looks at your calendar and proposes adding, changing, moving, or deleting events, or changing app settings, and on iOS also your Apple Reminders), and the AI Daily Planner (turn a free-text to-do list into a time-blocked schedule). Unlike the rest of the app, these features send data off your device, so they are described separately here.
- They are opt-in. Nothing is sent unless you actively type into one of these features and ask it to generate a result. They never run in the background.
- What is sent. For Fill with AI and the AI Assistant: the text you type, plus your current time, time zone, and language so the result is interpreted correctly. For the AI Daily Planner, additionally — so it can schedule around what you already have — the titles and start/end times of your existing events in the days being planned, and the display names of the calendars you can write to (for example “Work” or “Personal”) so a suggestion can be filed to the right one.
- The AI Assistant conversation. The AI Assistant works as a
conversation. Each request carries the conversation so far — your messages and
the assistant’s earlier replies — so it can follow up. To answer, the
assistant may look things up on your device, and the results of those lookups are sent
with the next request:
- for existing events in the date range it looks at for your request: the title, start and end times, whether the event is all-day, recurring, or editable, and which calendar it is in; when it looks at specific events, also their reminder times and travel time;
- the display names of your calendars, whether each one can be written to, shown, or is the default, and a calendar number that the device uses internally to tell your calendars apart (a local number, not your account address or any identifier of your account with Google, Apple, or another provider);
- when it suggests a time, the free time slots it found in your calendar;
- when you ask it to look at or change an app setting, the current values of the app’s settings (for example theme, week start day, or text size);
- on iOS, when it looks at your Apple Reminders (section 2.10): for reminders on the lists you chose to show in the app, the title, due date or time, whether it is completed, recurring, or on a list that can be changed, and its priority; and the display names of those lists. Reminders on lists you hide in the app are not looked at.
- What is not sent. We do not send your calendar account addresses or account IDs, event or reminder identifiers, attendees, locations, notes (including reminder notes and links), or your contacts, and we do not send events outside the range being planned or looked up for your request. Your name, email, and payment details are never sent to the AI features.
- How requests are identified. To check your monthly usage allowance, each request includes a pseudonymous subscription profile identifier from our payments provider, Adapty (see section 2.6). It is a random ID, not your name or email.
- Who processes it. The request is received by our own backend, which runs on Cloudflare (which also routes the AI request), and is processed by Anthropic (the maker of the Claude AI models) to generate the response. They act as our service providers. Under Anthropic’s commercial API terms, your inputs and the generated outputs are not used to train its models and are retained only for a limited period.
- What we store. Our backend does not store the text you send, your events, or the AI’s responses. It keeps only a per-month usage counter, a per-month total of the estimated AI processing cost (used to cap usage), and a cached subscription-status flag, all tied to the pseudonymous Adapty identifier above. Our server logs record only the aggregate processing size (token counts) and its estimated cost, never the content of your request.
- In transit. All AI requests are sent over an encrypted (HTTPS/TLS) connection.
- Availability. Unlike analytics (section 2.7), the AI features are available in all regions, including the EEA, the UK, and Switzerland. If you use them there, the data described above is sent and processed to provide the feature you requested. Because Anthropic and Cloudflare may process the request on servers outside your country (including the United States), using an AI feature may involve an international transfer of the data you submit.
See Anthropic’s Privacy Policy and Cloudflare’s Privacy Policy for how those providers handle data on our behalf.
2.9 Google Account access (Google Calendar API, Google Drive, and Google Tasks)
A few features need to talk to your Google account directly, because your device’s calendar database does not carry the information they need — file attachments on an event, for example, are not exposed by the operating system at all. This is entirely optional. It begins only when you connect a Google account in the app’s settings, and the app asks for each additional permission only at the moment you first use the feature that needs it.
You can connect more than one Google account. Each connection is separate: you grant permissions to each account on its own, the app only ever uses an account’s own permission to reach that account’s calendars and Drive, and disconnecting one account leaves the others untouched. Attachments do not move between accounts — if you move an event to a calendar belonging to a different account, the app tells you that its attachments will not come along.
These requests go from your device straight to Google
(googleapis.com). They do not pass through our backend, and we do not
receive, store, or log their contents.
- What we ask for, and why.
calendar.events.readonly— to read the file attachments on an event, so the app can show that the event has them.calendar.calendarlist.readonly(iOS only) — to work out which Google calendar an event on your device belongs to. iOS does not give the app that identifier.calendar.events— requested only when you add or remove an attachment, or edit an event’s guests on iOS, so that change can be written back to the event.drive.file— requested only when you add an attachment. This permission is limited to files this app creates or that you explicitly pick; it does not give the app access to the rest of your Drive.tasks— requested only when you first open the Tasks feature, so the app can show your Google Tasks lists and let you create, edit, complete, and delete tasks. A read-only alternative would not work here, because the whole point of the feature is to change your tasks; Google also classifies the read-only variant as sensitive, so asking for less would not reduce what you are asked to share.
- Attaching a file uploads it. When you attach a file to an event, the app uploads a copy to your own Google Drive, into a folder named “Calendar+ 2”, and then links it to the event. The file stays in your Drive and under your control. Where the app can tell that you picked a file it has already uploaded, it reuses that copy instead of making another one.
- Attachments are shared with the event’s guests. So that people invited to the event can open the file, the app grants each guest view access to that Drive file, using the email address on the invitation. Removing the attachment from the event afterwards does not delete the file from your Drive and does not withdraw access that was already granted — you can change or remove both in Google Drive at any time.
- Google Tasks. If you use the Tasks feature, the app reads your task lists and the tasks in them, shows them in the app and alongside your events in the calendar, and writes your changes — new tasks, edits, completion, and deletion — back to Google. As Google’s own consent screen points out, tasks can contain sensitive information, such as things you plan to purchase or notes from private conversations. That content travels only between your device and Google: we never receive, store, or log it, and it is not sent to the AI backend described in section 2.8.
- What is kept on your device. The email address of each account you connected — so the app knows which accounts are connected and can show them in settings — a small index of which files this app has already uploaded (so it does not create duplicates), and, if you use the Tasks feature, a local copy of your task lists and tasks so they can be shown without waiting for the network and your edits survive being offline. All of it stays on the device and is never sent to us. On Android the app does not write an access token to disk at all; it asks Google for a fresh one each time. On iOS, Google’s own sign-in library keeps its credential in the system Keychain. Your events and attachment contents are never written to our storage on the device or anywhere else.
- Turning it off. You can disconnect any connected account at any time in the app’s settings — each account has its own switch, and turning one off does not affect the others. You can also review or revoke the app’s access at myaccount.google.com/permissions. Files that were already uploaded remain in your Drive until you delete them there.
Calendar+ 2’s use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
2.10 Apple Reminders (iOS)
- On iOS, if you turn on the reminders option and grant the Reminders permission, the app reads your Apple Reminders through the operating system (EventKit) — reminder titles, due dates, completion status, and list colors — so they can appear alongside your events in the app and its Home Screen widgets, and so you can create, edit, complete, or delete them from the app.
- This is the separate Apple Reminders app, which is different from the event alert notifications described in section 2.3.
- Reminder lookups and changes happen on the device, and Calendar+ 2 changes a reminder only when you do so yourself or approve a change the AI Assistant proposed. Your reminders are not uploaded, except that on iOS the optional AI Assistant sends the reminder details listed in section 2.8 when you use it.
- You can revoke the Reminders permission at any time in your system settings; the app and widgets will simply stop showing reminders.
3. Information we do not collect
- We do not operate a server that stores your events, reminders, or contacts, and we never receive the content of your calendar data — except for the optional, opt-in AI features described in section 2.8, where data you submit is sent to generate the result you asked for.
- Some optional features do send data off your device, but to Google, not to us: the Google account features in section 2.9 (reading and writing attachments and guests, uploading an attached file to your Drive, and reading and writing your Google Tasks). We do not receive, store, or log any of it.
- We do not use advertising SDKs, attribution SDKs, or advertising identifiers (Apple’s IDFA or Android’s Advertising ID), and we do not use analytics for cross-app tracking. Our only analytics is the anonymous usage measurement described in section 2.7.
- We do not assign you an account or require a sign-up. Firebase Analytics uses a randomly generated app-instance identifier that is not tied to your identity.
- We do not sell, rent, or share your personal information with data brokers or advertisers.
4. Permissions explained
The following permissions may be requested, depending on platform and feature usage. You can grant or revoke each of them in your system settings at any time.
- Calendar (read & write) — required for the core feature: viewing, creating, editing, and deleting events.
- Contacts (read) — used only for attendee suggestions and avatars. Optional.
- Reminders (iOS, read & write) — optional; only if you turn on the reminders option, so your Apple Reminders can appear in the app and widgets and you can change them from the app.
- Notifications — required to deliver local event reminders.
- Exact alarms / full-screen intent (Android) — allows reminders, including snoozed reminders, to fire at the precise time and to show a heads-up popup.
- Photos / media (when selecting a widget background) — used only at the moment you pick an image.
- Billing — required by Google Play / the App Store to process in-app purchases.
- Google account (optional) — only if you connect one, and only for the features in section 2.9. Each additional Google permission is requested at the moment you first use the feature that needs it, and can be revoked at myaccount.google.com/permissions.
5. Children
Calendar+ 2 is a general-audience productivity app and is not directed at children under 13. The app does not knowingly collect personal information from children. If you believe a child has provided personal information to us directly, please contact us at the address below and we will help address it.
6. Security
Because Calendar+ 2 stores its data locally on your device, security primarily depends on your device’s own protections (screen lock, full-disk encryption, OS account security). We rely on standard platform sandboxing so that other apps cannot read Calendar+ 2’s private files.
When you use an optional AI feature (section 2.8), the data for that request is transmitted to our backend and AI service providers over an encrypted (HTTPS/TLS) connection.
Calendar accounts that you have configured on your device (Google, iCloud, Exchange, etc.) are managed by their respective providers and are subject to their security and privacy practices.
7. Your choices
- You can revoke any of the app’s permissions at any time in your system settings.
- You can delete the app to remove all locally stored Calendar+ 2 data (settings, widget configuration, and any locally cached widget backgrounds). Events stored in your device’s calendar accounts are not deleted by uninstalling Calendar+ 2 — they belong to the underlying account (e.g. Google, iCloud) and must be deleted from there if you wish.
- You can manage or cancel any subscription through Google Play or the App Store, under your own account settings.
- You can disconnect a connected Google account at any time in the app’s settings, and revoke the app’s access at myaccount.google.com/permissions. Files the app uploaded to your Drive, and the guest access granted to them, remain under your control in Google Drive and are not removed by disconnecting or by uninstalling the app. Tasks the app created or changed likewise stay in your Google Tasks — disconnecting only withdraws the app’s access, and you can edit or delete those tasks in Google Tasks at any time.
- We do not use advertising identifiers, and analytics is limited to the anonymous usage data described in section 2.7. You can reset the random app-instance identifier at any time by reinstalling the app, and you can contact us at the address below to request that we limit or delete this data.
8. Legal bases (GDPR / UK GDPR)
Where the GDPR or UK GDPR applies, our limited on-device processing is performed on the following bases:
- Performance of a contract — providing the calendar functionality you have asked the app to perform.
- Consent — for permissions you explicitly grant (contacts, notifications, photo selection).
- Legitimate interests — basic, on-device operation of the app, protection against abuse, and the anonymous usage analytics described in section 2.7 (to measure feature usage and improve the app). You may object to analytics processing by contacting us.
- Your request — when you actively use an optional AI feature (section 2.8), we send the data described there to our service providers to produce the suggestion you asked for.
The optional AI features (section 2.8) involve sending the data you submit to service providers (Anthropic and Cloudflare) that may process it outside your country, including in the United States. Those providers process the data under their own privacy terms, which include international data-transfer mechanisms.
We do not store your calendar content on our own servers, so for that data we are generally not in a position to provide an export or deletion of information we do not hold — to exercise rights against data held by your underlying calendar account provider, please contact that provider. For the anonymous usage analytics described in section 2.7, which is processed by Google on our behalf, you may contact us to request access or deletion, and we will act on it together with Google where technically possible.
9. California residents (CCPA / CPRA)
We do not “sell” or “share” personal information as those terms are defined by the CCPA/CPRA. Our analytics is configured without Google Signals or ad-personalization features, and we do not knowingly process the personal information of California consumers for cross-context behavioral advertising.
10. Changes to this policy
We may update this Privacy Policy from time to time, for example to reflect new features or legal requirements. When we do, we will revise the “Last updated” date at the top of this page. Material changes will be highlighted in the app or on the page where this policy is hosted.
11. Contact
Questions, requests, or concerns about this Privacy Policy or about Calendar+ 2 can be sent to:
Joshua & Company Inc.
Email: admin@joshuanco.com