Privacy Policy
hora Calendar is a native application for Google Calendar on macOS, iPhone and iPad (iOS and iPadOS), with optional Zoom and Microsoft Teams integration. Your privacy matters, so below is exactly what we access and how we use it.
Who We Are
hora Calendar is provided by NA SERIO Maciej Szamowski, the controller responsible for the personal data described in this policy. For privacy-related inquiries, contact support@horacal.app.
Data We Access
- Google Calendar: events and calendars (read & write)
- Google Other Contacts: names and emails (read only, for guest autocomplete)
- Google account email address
- Zoom account profile basics (user info needed to identify connected account)
- Zoom meeting data for meetings created or managed from hora Calendar (metadata such as meeting ID, join link, start link, passcode, schedule/status)
- Microsoft account profile basics (user info needed to identify connected account)
- Microsoft Teams meeting data for online meetings created or managed from hora Calendar (metadata such as meeting ID, join link, schedule/status, and related online meeting details)
How We Use It
- Display and manage your calendar events
- Provide autocomplete suggestions when adding guests to events
- Synchronize changes with Google Calendar
- If you connect Zoom: create, update, read, and delete Zoom meetings when you choose Zoom as the conference provider
- Show Zoom meeting details in the app UI (join URL, meeting ID, passcode) for your own events
- If you connect Microsoft: create, update, read, and delete Microsoft Teams meetings when you choose Microsoft Teams as the conference provider
- Show Microsoft Teams meeting details in the app UI (join URL and meeting metadata) for your own events
Zoom OAuth Scopes and Purpose
For v1, hora Calendar uses a minimal Zoom scope set required for meeting lifecycle only:
meeting:write:meeting: create Zoom meetings for events.meeting:update:meeting: update meeting details when event title/time changes.meeting:delete:meeting: delete/cancel Zoom meetings when events are removed.meeting:read:meeting: read meeting metadata needed to render and sync meeting details.user:read:user: read the authorized Zoom user profile to identify the connected Zoom account.
hora Calendar does not request webinar scopes and does not use Zoom data for ad targeting, profiling, or model training.
Microsoft API Access and Purpose
hora Calendar uses Microsoft APIs only when you connect a Microsoft account and choose Microsoft Teams as the conference provider. Requested permissions are limited to the meeting lifecycle and connected-account identification needed to create, update, read, and delete online meetings on your behalf.
hora Calendar does not use Microsoft account, calendar, or Teams data for ad targeting, profiling, or model training.
Calendar Push Notifications
To keep your calendar current without polling Google every minute, hora Calendar combines Google Calendar push notifications with Apple Push Notification service (APNs).
- Google's push notification carries no calendar data. The webhook receives an empty body and a header stating that something on a given resource changed.
- Our worker then wakes your device over APNs, and the app fetches the changed data directly from Google.
- No event, title, attendee, or description ever passes through our infrastructure.
What the worker does store, and we would rather say so plainly:
- A keyed hash of your Google account identifier (the OpenID subject), prefixed u1_. We do not store your email address or the raw identifier.
- The APNs device token for your Mac, iPhone or iPad
- The application bundle identifier
- Your calendar IDs, kept only as encrypted values that the app needs back in a push
- An expiry date; registrations of devices that have been inactive for more than 30 days are deleted
That is just enough to know which device to wake, and it is used for nothing else. Signing out in hora Calendar Settings unregisters the device with the worker. The worker's logs do not contain email addresses, calendar IDs, or push tokens.
Data Storage
- App data is stored locally on your Mac, iPhone or iPad using SwiftData
- OAuth tokens are stored in the Keychain (the macOS Keychain on Mac, the iOS Keychain on iPhone and iPad)
- hora Calendar does not operate a general-purpose backend that stores your calendar/meeting content. The only account data we keep on our servers is described under Direct Accounts and Purchases below
- OAuth callback infrastructure may transiently process authorization flow parameters required to complete sign-in securely
- This website counts visits anonymously with PostHog, without cookies, as described in Usage Statistics below
Direct Accounts and Purchases
- If you buy hora Calendar directly from horacal.app (the Direct edition), we create an account. The account database holds your email address (used to sign in with an emailed code or with Google and to match your purchase), a random account ID, and a record of your devices: a random device ID, an optional label, and the date it was last active. It stores no IP address, user agent, device name, or country. An account can have up to 5 devices.
- The account database is hosted with Supabase in the EU (Ireland, eu-west-1). Your email address is never sent to our analytics or to our push worker.
- Direct purchases are processed by Paddle, which is the merchant of record and handles your payment and billing details; we never see or store your card details. We receive transaction and licence information from Paddle. RevenueCat manages entitlements: it receives an opaque account identifier, not your email address, and the purchase status.
- Purchases through the App Store are handled by Apple (with RevenueCat for entitlements), and Setapp access is managed by Setapp. We do not receive your payment details.
- The Direct download is served through a proxy that does not record your IP address or user agent.
- You can delete your account at any time on horacal.app/account. This deletes your sign-in, devices, and sessions. It does not cancel a subscription, and Paddle keeps transaction records as the law requires.
Support Requests
When you submit the support form, the request is delivered by email through Resend, our email delivery provider, to Linear, which we use as our support intake and issue tracker. Emails you send directly to support@horacal.app are handled the same way. We use these services to receive, investigate, and respond to support requests.
- The support request may contain your name, email address, message content, selected category, app and operating system version, troubleshooting steps, and—when you ask about a direct-purchase refund—an optional Paddle transaction ID and requested refund outcome.
- The purpose is support handling, product diagnostics, and processing direct-purchase refund requests. We retain support data only for as long as needed to handle the request and meet legal, accounting, or claims obligations, then delete or anonymize it where appropriate.
- We also use PostHog for anonymous app and website counts, described in Usage Statistics below. This is separate from the support request workflow.
- To request access to or deletion of support data, contact support@horacal.app. We reply by email from support@horacal.app, and your replies are added to the same request in Linear.
Usage Statistics
This website uses no advertising trackers, pixels, or session recordings, and sets no cookies. We count a few things with PostHog so we know whether hora Calendar works for people:
- Website: PostHog counts pageviews and a few actions such as downloads and newsletter signups. It keeps everything in memory, never in cookies or localStorage, creates no visitor profiles, and discards your IP address without deriving a location from it.
- App: starting with the next app update, hora Calendar sends a few anonymous counts (for example, that a calendar was connected or the plans screen was shown) only if you turn on "Share anonymous usage counts" in Settings. It is off by default. Each count carries only the app version, platform, distribution channel, and OS version: no account, device identifier, IP address, or calendar data.
- Crash reports: hora Calendar can send crash reports through Sentry (EU region) only if you turn them on in Settings. It is off by default. Reports contain technical details of the crash, with no user identifier, email address, or device name.
Data Protection
- All communication with Google, Zoom, and Microsoft APIs is encrypted in transit via HTTPS (TLS)
- OAuth authentication tokens are stored in the Keychain (hardware-backed encryption, protected by your system login or device passcode)
- Local cached data remains inside the app sandbox on macOS and iOS/iPadOS
- hora Calendar requests the minimum practical scopes required for enabled features
- hora Calendar does not sell personal data and does not share user data with data brokers
- hora Calendar does not use your calendar, Zoom, or Microsoft Teams data for advertising personalization
Data Sharing
- We do not sell your data
- We do not share your calendar, Zoom, or Microsoft Teams content with third parties, except API processors required to provide the service (Google, Zoom, and Microsoft)
- We do not use your app data for advertising or profiling
Data Retention & Deletion
- Data is retained locally on your device for as long as you use the application
- Sign out in hora Calendar Settings to remove locally stored tokens and cached data
- You can disconnect providers at any time:
- Uninstalling hora Calendar removes application data from your Mac, iPhone or iPad
- Direct account data is kept until you delete your account on horacal.app/account
Contact
For privacy-related inquiries: support@horacal.app