Privacy Policy
Last updated: February 17, 2026
UCals is an AI-powered calendar assistant built by a solo founder. We take privacy seriously because we handle something deeply personal: your time. This policy explains exactly what data UCals collects, why we collect it, and how we protect it.
We do not sell your data. We do not share your data with third parties for advertising. We do not use your data to train AI models. These are not aspirational statements. They are how UCals works today and how it will continue to work.
1. Who We Are
UCals is operated by UCals LLC. For privacy inquiries, you can reach us at privacy@ucals.com. Our website is ucals.com.
For the purposes of the EU General Data Protection Regulation (GDPR), UCals LLC is the data controller of your personal data.
2. What Data We Collect
2.1 Account and Authentication
When you create a UCals account, we collect the following identity data through your chosen authentication provider:
- Google Sign-In: Email address, display name, and profile photo URL via Google's OAuth 2.0 protocol
- Apple Sign-In: Email address and name (provided only on first sign-in, per Apple's privacy design)
We also generate and store a unique account identifier (Firebase UID) to associate your data across the service.
2.2 Calendar Data (Google Calendar)
When you connect your Google account for calendar sync, UCals accesses your Google Calendar data through Google's OAuth 2.0 protocol. The OAuth scopes we request are: openid, email, profile, and https://www.googleapis.com/auth/calendar (full read/write access to your calendars). This includes:
- Event titles, descriptions, times, and durations
- Event locations (name, address, and coordinates)
- Event attendees (names, email addresses, and RSVP status)
- Calendar names and metadata
- Recurring event patterns and exceptions
Third-party attendee data: When your Google Calendar events include other people as attendees, their names and email addresses are imported into UCals. Attendee email addresses are stripped before being sent to the AI assistant to protect third-party privacy. Attendee data is stored only within your account and is not shared with other UCals users.
UCals performs two-way sync with Google Calendar: it reads your events to display them, and writes changes you make (through the AI assistant or directly) back to Google Calendar. Background sync runs every 15 minutes via our server to keep your calendar up to date even when the desktop app is not running. You can revoke this access at any time through your Google Account permissions.
UCals' use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
2.3 AI Conversations
When you use the AI assistant, your messages and relevant calendar context are sent to Anthropic's Claude API for processing. Each AI request includes:
- Your text messages to the assistant
- Your complete calendar event data (event names, times, locations, categories, notes, cost data, notification settings, and participant names — but not participant email addresses, which are stripped before sending)
- Your current timezone, city, and date
- Your personalization preferences and behavioral rules
- Your conversation history for the current session
Data minimization: Before sending calendar data to the AI, we filter out soft-deleted events, strip attendee email addresses, and remove internal sync metadata. We also strip large payloads (such as ICS content and full diff objects) from tool results sent back to the AI.
Conversation storage: Your full AI conversation history (including messages, assistant responses, and tool interactions) is stored in Firebase Firestore for cross-device sync and persistence. Conversations persist until you clear them using the /clear command or delete your account.
Anthropic does not use API data to train its models. Anthropic's data handling is governed by their privacy policy and API terms. Anthropic retains API logs for up to 30 days for trust and safety purposes, per their retention policy.
2.4 Cloud Sync Data (Firebase)
UCals uses Google Firebase (Firestore) to sync your calendar data across devices. The data stored in Firebase includes:
- Calendar events and their properties (titles, times, locations, descriptions, categories, cost, notifications, meeting links, participants)
- User settings and preferences (timezone, city, currency, theme, connected services)
- AI conversation history (see Section 2.3)
- Behavioral patterns and personalization data (see Section 2.10)
- Integration tokens for connected services (Google Calendar, Zoom) in server-only collections not accessible from client code
- Survey responses
- Referral codes and redemption records
- Sync metadata (timestamps, change tracking)
This data is associated with your authenticated account and is not accessible to other users. Firebase data is stored on Google Cloud infrastructure in the United States (us-central1 region) and is governed by Google's Firebase privacy and security documentation.
Debug logs: If you enable remote debug logging (for support purposes), log entries (category, level, message, timestamp, platform, and app version) are stored temporarily in Firebase Realtime Database and automatically deleted after 24 hours. Debug logs do not contain calendar content or personal messages.
2.5 API Keys and OAuth Tokens
UCals requires an Anthropic API key to power the AI assistant. You provide your own API key, which is stored in your operating system's secure credential storage (macOS Keychain on desktop, Secure Store on mobile). API keys are never transmitted to UCals servers or stored in our cloud infrastructure.
When you connect Google Calendar, your OAuth tokens are stored locally on your device (encrypted via macOS Keychain). If you enable background calendar sync, your Google OAuth tokens are also stored server-side in Firebase to allow scheduled sync operations when the desktop app is not running. These tokens are stored in a server-only collection that is not accessible from client-side code.
2.6 Location Data (Mapbox)
When you use location-related features (adding locations to events, calculating travel times), UCals sends location queries to Mapbox for geocoding and distance calculations. Mapbox receives:
- Address or place name queries you enter
- Coordinates for distance and direction calculations
Mapbox's data handling is governed by their privacy policy. Location queries are only sent when you explicitly use location features.
2.7 Web Search (Tavily)
When the AI assistant performs web searches on your behalf (to find business hours, venue details, etc.), search queries are sent to Tavily's API. Tavily receives:
- The search query text
Web searches only occur when you ask the AI assistant to look something up. They do not happen in the background.
2.8 Analytics
Website analytics (ucals.com)
The ucals.com website uses the following analytics services to understand how visitors interact with the site:
- Google Analytics 4 (GA4) — Page views, navigation patterns, device type, and browser information. Uses Google Consent Mode v2: analytics storage defaults to
denieduntil you accept cookies. Ad storage, ad user data, and ad personalization are alwaysdenied. - PostHog — Page views, custom events (e.g., CTA clicks, pricing views, FAQ expansions). Data is sent to PostHog's US servers (
us.i.posthog.com). PostHog is only initialized after you accept the cookie consent banner. Person profiles are set toidentified_only(no anonymous person profiles are created).
Our website displays a cookie consent banner. Analytics services only collect data if you accept. If you decline, only essential functionality storage (your consent preference in localStorage) is used. You can change your preference at any time by clearing your browser's local storage for ucals.com.
We honor the Global Privacy Control (GPC) signal. If your browser sends a GPC signal, we treat it as an opt-out and do not load non-essential analytics.
Website attribution tracking
When you visit ucals.com, we capture UTM parameters (utm_source, utm_medium, utm_campaign, utm_content, utm_term) and the referring URL from your browser. These are stored in your browser's localStorage (not cookies) as first-touch and last-touch attribution data. This data helps us understand which marketing channels are effective. It is not sent to third parties and remains only in your browser.
Desktop app analytics
The UCals desktop application uses Firebase Analytics to understand feature usage and improve the product. This includes anonymous usage events (such as which features you use, onboarding completion, subscription funnel progress, and referral activity). No calendar content, event titles, or personal messages are included in analytics. You can opt out of desktop analytics at any time using the toggle in the app's Settings panel. The app also honors the Global Privacy Control (GPC) signal and will disable analytics if GPC is detected.
2.9 Payments (Stripe)
UCals uses Stripe to process subscription payments. When you subscribe, Stripe collects:
- Payment card information (handled entirely by Stripe — card details never touch UCals servers)
- Email address (for receipts and billing communication)
- Subscription status and usage metering data
Stripe's data handling is governed by their privacy policy.
2.10 Video Meetings (Zoom)
If you connect Zoom, UCals can create meeting links for your calendar events. When connecting, you authorize UCals via Zoom's OAuth flow. We store your Zoom access token, refresh token, email address, connection timestamp, and token expiry in Firebase in a server-only collection not accessible from client code. When creating a meeting, UCals sends the meeting topic, start time, and duration to Zoom's API. Zoom's data handling is governed by their privacy policy.
2.11 Behavioral and Personalization Data
To improve the AI assistant's suggestions over time, UCals learns and stores behavioral patterns derived from your calendar usage. This includes:
- Default event durations by category (median duration and frequency)
- Preferred time slots by category
- Frequently used locations (name, address, and usage count)
- Common event templates (name, category, duration, and frequency)
- A personalization depth score (0–100) indicating how much the AI can personalize
This data is derived entirely from your own calendar events. It is stored in Firebase under your account and included in the AI system prompt to provide personalized suggestions. It is deleted when you delete your account.
2.12 Error Monitoring (Sentry)
UCals uses Sentry for error monitoring and crash reporting. When an error occurs in the desktop application or our cloud functions, Sentry receives:
- Error stack traces and diagnostic information
- Device and operating system information
- An anonymous user identifier (your Firebase UID — not your name or email)
- App version and release information
No calendar content, event titles, AI conversations, or personal messages are sent to Sentry. Error monitoring is only active in production builds. Sentry data is processed in the United States. Sentry's data handling is governed by their privacy policy.
2.13 Email Communications (Loops.so)
If you opt in to marketing emails (during signup or via the newsletter), we send your email address, first name, and subscription status to Loops.so for email delivery. Loops.so handles:
- Onboarding email sequences
- Subscription lifecycle notifications (trial started, converted, cancelled)
- Newsletter communications
Marketing emails are only sent if you explicitly opt in. You can unsubscribe at any time via the link in any email. If you delete your account, your contact is also deleted from Loops.so.
2.14 Sunrise and Sunset Data
UCals displays sunrise and sunset times on your calendar view. To calculate these times, we send your city's latitude and longitude coordinates to the Sunrise Sunset API. No personal identity information is sent — only geographic coordinates and date. Results are cached locally on your device.
3. Why We Collect Data (Legal Basis)
We process your data under the following legal bases (per GDPR Article 6):
- Contract performance (Art. 6(1)(b)) — Calendar sync, AI assistant, cloud sync, payment processing, and account management are necessary to deliver the service you subscribe to. Behavioral personalization data improves the AI assistant's accuracy, which is a core feature of the service.
- Consent (Art. 6(1)(a)) — Google Calendar access is granted through explicit OAuth consent. Apple Sign-In is granted through Apple's authorization flow. Zoom access is granted through Zoom's OAuth consent. Website analytics cookies require your opt-in through the cookie consent banner. Marketing emails require explicit opt-in. Desktop analytics can be opted out of in Settings.
- Legitimate interest (Art. 6(1)(f)) — Error monitoring (Sentry) helps us maintain service reliability and security. Debug logging (when enabled) helps us diagnose issues you report. These interests are balanced against your rights through data minimization (no calendar content in error reports) and short retention periods (24 hours for debug logs).
4. How We Use Your Data
We use your data for the following purposes and no others:
- Providing the service — Displaying your calendar, processing AI requests, syncing across devices, creating meeting links, calculating travel times, and displaying sunrise/sunset times
- Personalization — Learning your scheduling patterns to improve AI suggestions (e.g., suggesting appropriate durations based on event category, or frequently used locations). This personalization is not used to profile you for third parties — it solely improves your experience within UCals
- Improving the product — Aggregated, non-identifying analytics help us understand feature usage and improve the product
- Communication — Sending subscription lifecycle emails, onboarding sequences (if opted in), and responding to support inquiries
- Security and reliability — Error monitoring, rate limiting, and detecting unauthorized access to protect the service and your account
We do not use your data for profiling for third parties, automated decision-making with legal effects, targeted advertising, or any purpose unrelated to delivering and improving UCals.
5. Third-Party Services
UCals integrates with the following third-party services. Each receives only the minimum data necessary to perform its function:
| Service | Purpose | Data Shared | Server Location |
|---|---|---|---|
| Google (OAuth, Calendar, Firebase, Analytics) | Authentication, calendar sync, cloud storage, desktop analytics | Calendar events, user identity, sync data, anonymous usage events | United States |
| Apple (Sign in with Apple) | Authentication | Apple Services ID, nonce (Apple provides name and email) | United States |
| Anthropic (Claude API) | AI assistant | Conversation text, calendar context (with attendee emails stripped), preferences | United States |
| Mapbox | Geocoding, directions | Location queries, coordinates | United States |
| Tavily | Web search | Search query text (max 500 characters) | United States |
| Stripe | Payment processing | Email, name, payment info (via Stripe Elements — card details never touch our servers), usage metering | United States (global infrastructure) |
| Zoom | Video meeting creation | Meeting topic, time, duration; OAuth tokens stored server-side | United States |
| Loops.so | Email communications | Email address, first name, subscription status, UTM attribution (only if you opt in) | United States |
| Sentry | Error monitoring | Error reports, device/OS info, anonymous user ID (no calendar content) | United States |
| PostHog (website only) | Website analytics | Page views, custom events (only after cookie consent) | United States |
| Sunrise Sunset API | Sunrise/sunset times | Latitude, longitude, date (no personal identity) | Unknown |
We do not share your data with data brokers, advertising networks, or any service not listed above.
6. Data Retention
- Calendar and sync data — Retained in Firebase for as long as your account is active. Soft-deleted events retain a
deletedAttimestamp and are purged after 48 hours. All data is deleted when you delete your account. - AI conversations — Conversation history is synced to Firebase (Firestore) for cross-device access and persists until you clear the conversation (via the
/clearcommand) or delete your account. Anthropic retains API logs for up to 30 days per their retention policy. - Behavioral/personalization data — Retained for the lifetime of your account. Deleted when you delete your account.
- API keys — Stored in your device's secure storage until you remove them or uninstall the app.
- Debug logs — Automatically deleted after 24 hours.
- Desktop analytics — Retained per Firebase Analytics default retention period (typically 14 months). No calendar content is included.
- Website analytics — GA4: typically 14 months (configurable in GA4 settings). PostHog: per PostHog's retention settings.
- Payment data — Retained by Stripe per their retention policy. UCals stores only your Stripe customer ID and subscription status in Firebase.
- Email marketing data — Retained in Loops.so until you unsubscribe or delete your account (at which point your Loops.so contact is deleted).
- Zoom integration tokens — Retained until you disconnect Zoom or delete your account.
- Rate limit data — Per-user rate limit documents are automatically cleaned up every 6 hours.
- Cookie consent and UTM data — Stored in your browser's
localStorageindefinitely until you clear it.
7. Data Security
We protect your data through the following measures:
- All data in transit is encrypted via TLS/HTTPS
- API keys are stored in your operating system's secure credential store (macOS Keychain), not in plain text
- Google OAuth tokens are stored securely and refreshed automatically; we never see your Google password
- Firebase data is protected by Google Cloud's security infrastructure, including encryption at rest
- The UCals application runs locally on your device; your calendar data is processed on your machine, not on our servers (AI requests are the exception, sent directly to Anthropic)
8. Your Rights
8.1 Rights Under GDPR (EU/EEA/UK Residents)
If you are located in the EU, EEA, or UK, you have the following rights:
- Access — Request a copy of the personal data we hold about you
- Rectification — Request correction of inaccurate data
- Erasure — Request deletion of your data ("right to be forgotten")
- Portability — Receive your data in a structured, machine-readable format (UCals supports ICS export of all calendar data)
- Restriction — Request that we limit processing of your data
- Objection — Object to processing based on legitimate interest
- Withdraw consent — Withdraw consent at any time (e.g., revoke Google Calendar access, decline analytics cookies)
To exercise any of these rights, email privacy@ucals.com. We will respond within 30 days. You also have the right to lodge a complaint with your local data protection authority.
8.2 Rights Under CCPA/CPRA (California Residents)
If you are a California resident, the California Consumer Privacy Act as amended by the California Privacy Rights Act (CCPA/CPRA) provides you with the following rights:
- Right to know — Request disclosure of the categories and specific pieces of personal information we have collected about you
- Right to delete — Request deletion of your personal information
- Right to correct — Request correction of inaccurate personal information
- Right to opt out of sale/sharing — We do not sell or share your personal information for cross-context behavioral advertising, so there is nothing to opt out of
- Right to limit use of sensitive personal information — We only use sensitive personal information (such as precise geolocation from your city setting) as necessary to provide the service
- Right to non-discrimination — We will not discriminate against you for exercising your privacy rights
To exercise these rights, email privacy@ucals.com. We will verify your identity and respond within 45 days.
In the preceding 12 months, UCals has not sold any personal information and has not disclosed personal information to third parties for business purposes beyond what is described in Section 5 of this policy.
8.3 Do Not Sell or Share My Personal Information
UCals does not sell or share your personal information with third parties for monetary or other valuable consideration. We do not engage in cross-context behavioral advertising. Because we do not sell or share your data, there is no need to opt out — but we honor this commitment unconditionally.
UCals recognizes the Global Privacy Control (GPC) signal. If your browser sends a GPC signal (Sec-GPC: 1), we treat it as a valid opt-out request under CCPA and will not load non-essential analytics or tracking scripts.
9. Data Export and Deletion
You are in control of your data:
- Data export (JSON) — You can export a complete copy of all your personal data (events, settings, preferences, conversation history) as a JSON file directly from the UCals app. OAuth tokens are excluded from the export for security.
- Calendar export (ICS) — You can export all your calendar events as standard ICS files at any time. ICS is an open format compatible with any calendar application.
- Google Calendar access — Revoke UCals access to your Google Calendar at any time through your Google Account settings.
- Account deletion — You can delete your account directly from within the UCals app (Settings → Account → Delete Account). This comprehensively deletes: all Firestore data (events, conversations, settings, integrations, surveys, referral records), debug logs, cancels any active Stripe subscription, removes your contact from Loops.so, and deletes your Firebase Auth account. You can also email privacy@ucals.com to request deletion. We will process email requests within 30 days.
- Local data — Uninstalling the UCals app removes all locally stored data, including cached calendar data and API keys stored in your system's secure credential store.
10. International Data Transfers
All UCals cloud infrastructure and third-party services process data in the United States. If you are located outside the US (including in the EU/EEA/UK), your personal data will be transferred to the US. These transfers are protected by:
- Google's participation in the EU-US Data Privacy Framework (for Firebase, Google Calendar, and Analytics)
- Stripe's compliance with the EU-US Data Privacy Framework
- Standard Contractual Clauses (SCCs) with service providers where applicable
- Anthropic's data processing terms and security measures
- PostHog's compliance with applicable data protection requirements
See the "Server Location" column in the third-party services table (Section 5) for where each service processes data. We ensure appropriate safeguards are in place for all international transfers and will update our transfer mechanisms as regulatory requirements evolve.
11. Children's Privacy
UCals is not intended for use by anyone under the age of 16. We do not knowingly collect personal data from children. If you believe a child has provided us with personal data, please contact us at privacy@ucals.com and we will delete it promptly.
12. Changes to This Policy
We will update this privacy policy when our data practices change. When we make material changes, we will:
- Update the "Last updated" date at the top of this page
- Notify active users via email or in-app notification for significant changes
- Provide a summary of what changed
We will not reduce your rights under this policy without your explicit consent.
13. Contact
For any privacy questions, data requests, or concerns:
- Email: privacy@ucals.com
- Website: ucals.com
We aim to respond to all privacy inquiries within 7 business days.