Privacy policy
ccal is a single-user service operated by Conor Winders for his own use. It handles one person's data: his own.
What is accessed
With the owner's explicit Google consent, ccal reads calendar events from his Google Calendar account, and can create or modify events there once he approves a proposal. The scopes requested are:
- calendar.readonly — to read events and the calendar's timezone
- calendar.events — to create or change events, only after human approval
What is stored, and where
Event data is stored in a private Cloudflare D1 database accessible only to the service. It holds the fields needed to answer availability questions: title, start and end time, timezone, location, attendees and response status. Events from public feeds are stored the same way and carry no personal information.
Google OAuth tokens are stored in a separate encrypted key-value namespace, deliberately isolated from the event cache so that clearing cached calendar data cannot affect credentials.
Data from a Google account is never sent to the operators of a public feed, and ccal makes no request to any feed that carries calendar content. Reading a feed is an ordinary web request for a published file.
What is never done
- Calendar data is not sold, rented, or shared with any third party.
- It is not used for advertising, profiling, or training machine-learning models.
- There are no analytics, trackers or advertising networks on this site.
- No other person has an account, and no other person's calendar is accessed.
Applications belonging to the owner may query ccal, but each is granted the narrowest access that its function requires — most receive only opaque busy and free periods, never event details.
The seeCal waitlist
If you join the seeCal waitlist, your sign-up is kept by launch, the private service that holds the waitlists for Conor Winders's apps, in a database of its own, separate from any calendar data. It keeps your email address, which of Mac and iPhone you picked, when you joined, the country your connection came from, your browser's name, and the label of the link that brought you, if there was one. It is used to send you a welcome and to tell you when seeCal opens to more people. It is never shared or sold, and joining gives no access to anything here. To be removed, reply to any email from seeCal or write to the address under Contact, and it is deleted.
Retention and deletion
Cached events are refreshed continuously and are deleted when they fall outside the synchronisation window. The owner can revoke ccal's access at any time from his Google account permissions page, which immediately and permanently ends ccal's ability to read or write the calendar. Stored data can be destroyed by deleting the underlying database.
Contact
Questions about this policy: conor.winders@gmail.com.