Privacy Policy
Last updated: 2026-10-13. WhenMeet.me uses Google and Microsoft Free/Busy endpoints. If you add a public iCloud calendar, its iCalendar feed is downloaded temporarily so we can calculate busy times; only busy intervals and keyed event identifiers are retained for availability. Other signed-in users who look up your email see only your availability status (free/busy), never event details; you can see who looked and block them. We never sell or train AI on your calendar data.
Information we collect
Account
- Email address and name from the calendar account you sign in with (Google or Microsoft). We use only an address the provider has verified as yours, so nobody can sign in to your account with an unverified copy of your email.
- Your time zone, so meeting times render correctly.
Calendar availability
Google and Microsoft availability is Free/Busy only: requests use their Free/Busy endpoints and do not download event details. A public iCloud calendar works differently: the published iCalendar feed contains event data, so our server downloads and parses it temporarily to expand recurring events and calculate busy intervals. We discard event titles, descriptions, locations, attendees and notes. We retain only busy intervals, a keyed hash of each event UID used to avoid counting a WhenMeet booking twice, and the encrypted public feed URL needed for future refreshes. The merged availability for a scheduling request is cached at the edge for 60 seconds.
Anyone who has an iCloud public calendar link can view its published events while the owner keeps Public Calendar enabled. WhenMeet.me does not show that link or event details in your account. Turn off Public Calendar in Apple Calendar to revoke the link, then remove the feed from Settings → Calendars.
OAuth scopes we request
- Google:
openid,email,profile,https://www.googleapis.com/auth/calendar.freebusy,https://www.googleapis.com/auth/calendar.events; optionallyhttps://www.googleapis.com/auth/calendar.calendarlist.readonlyto read every calendar you keep visible, not just the primary one. - Microsoft:
openid,email,profile,offline_access,https://graph.microsoft.com/Calendars.ReadWrite. Microsoft offers no narrower scope that both reads free/busy and creates events; we use it only as described under “Calendar access”.
Meetings you create
- The meeting’s time, optional title, chosen conference type (Google Meet / Microsoft Teams) and the participant email addresses you enter — stored so we can render the share page and send invitations.
Booking links
- If you use booking links: your booking profile (nickname, display name, welcome text, time zone and working hours) and the settings of each link.
- For every booking made through your link: the visitor’s name and email, any guests they add, their answers to your questions, notes and campaign (utm) tags — so we can create the calendar event, send the emails and show your bookings. Cancel and reschedule links use a random token of which we store a hash, plus an encrypted copy so the visitor’s reminder email can carry their own cancel/reschedule link.
- Reminder emails: before each booked meeting we email the visitor and their guests a short reminder at the times set on the link (24 hours and 1 hour before by default; the link owner can change or turn them off). We keep a record of which reminders were sent so none goes twice.
- Team links: the email addresses of teammates you invite. Until a teammate joins, their free/busy is read only through your calendar account and only where your organisation already lets you see it; after they join, through their own connected calendar. Each teammate’s own working hours (from their booking profile) decide which times are offered; they are never shown to visitors. A team link’s own address (e.g. whenmeet.me/@acme-sales) and team name are public.
Manual availability
If you mark free time by hand at /free, the time ranges you paint are stored against your email address so they can feed into the group heat-map. Nothing else is collected there. Painted times are shared with everyone you schedule with only once the address is shown to be the painter’s (signed in with it, or the confirmation link we email to it was clicked). Times painted through a personal link a host sent you are shown only to that host until you choose to share them with everyone and confirm by email. Otherwise we keep the painted times as an unconfirmed save for up to 7 days and send that address one email with a confirmation link; nothing is shared until the link is clicked, and an unclicked save simply expires. At most 3 such emails go to an address per day from the same sender, and 10 in total.
Contacts
Email addresses (and names) of people you’ve invited, kept to power autocomplete the next time you schedule.
Availability lookups
When another signed-in user (in the app, through an API token or MCP) checks availability for your email and your connected calendar answers, we log who looked, when and how often (one row per person per day). You can see this log in Settings → Privacy and block anyone in it; a blocked person sees your calendar as “unavailable” and is not told about the block. Each viewer can look up at most 30 other people’s calendars per hour and 50 per day. Blocking does not affect your public booking link, which shows only open times.
Authentication & anti-abuse
- OAuth tokens for calendar access (and for Salesforce or HubSpot if you connect them), a Pipedrive API token if you paste one — all encrypted at rest — plus a signed session cookie (and, while you sign in, a 10-minute cookie that ties the sign-in to your browser).
- For each public iCloud feed you add: its URL encrypted at rest, a keyed URL hash for duplicate detection, the display name and time zone, sync status and the current busy-interval snapshot. The plaintext feed response is not retained.
- On the anonymous forms (suggest-a-time, mark-free, booking) we may send a Cloudflare Turnstile token and your IP to Cloudflare to block bots.
How we use your information
- To find common availability and let you book a meeting.
- To run your booking links: show open times, book meetings, and notify you, your team and the integrations you connected.
- To send meeting invitations, notifications, booking reminders and availability confirmation emails.
- To prevent abuse and to detect and fix technical issues.
Calendar access
WhenMeet.me only:
- Reads Google and Microsoft Free/Busy to compute availability; for a public iCloud feed, temporarily downloads and parses calendar data to compute busy intervals;
- Creates an event when you confirm a meeting time or someone books you through your link;
- Moves or cancels only events it created itself (when a booking is rescheduled or cancelled) — it never modifies or deletes your other events;
- Does not show calendar event details to people you schedule with; public iCloud event data is temporarily present in the downloaded feed during parsing and discarded after busy intervals are calculated;
- Shares only your availability status (free/busy) with other signed-in users who look up your email — never event titles, descriptions, locations or attendees. Guests on a meeting share page see only aggregated “N of M free” counts and booking-page visitors see only open times;
- Reads availability at most 60 days ahead (booking links: up to 60 days, with the last slot's length and buffers checked in full).
Data sharing and third parties
- Calendar providers: Google and Microsoft, to read Free/Busy and create events you confirm. For an iCloud feed, WhenMeet.me requests the public iCalendar URL you supplied over HTTPS to read event timing; Apple makes that feed available to anyone who has its link.
- Cloudflare: hosting and infrastructure (Workers, D1 database, KV cache) and Turnstile bot protection.
- Mailgun: delivery of transactional email (invites, notifications, booking reminders and availability confirmation emails).
- Integrations you connect: only if you connect them, booking details (time, link type, visitor name, email, answers, notes) are sent to HubSpot, Salesforce or Pipedrive, to your Slack channel, or to the webhook URL you set. In Salesforce we find the visitor’s Contact or Lead by email or create a Lead (name, email, a company taken from their answers or email domain) and log the meeting as an Event; in Pipedrive we find or create the person and log a meeting activity; cancellations and reschedules update those records. Their tokens and secrets are encrypted at rest; disconnect any time (Salesforce and HubSpot access is revoked on disconnect). A Calendly token pasted for an import is used for that one request and never stored.
- CODER AI widgets (coderai.dev): our pages load the CODER AI apps switcher and feedback widget from coderai.dev. If you send feedback or a bug report through the widget, coderai.dev receives your message and the email address you give it.
- Google Analytics: aggregate usage measurement (page views, sign-ups, sign-ins, meetings created, booking links created, and booking-page steps — viewed, time picked, booked, cancelled, rescheduled — with only the link length, personal or team, and embedded or direct). We never send emails, names, meeting titles or meeting links to it, and strip query strings (other than campaign tags such as utm_source) from page URLs.
- Legal requirements: we may disclose information if required by law.
We do not sell, rent, or transfer your personal information or Google user data to third parties for marketing or any purpose unrelated to running WhenMeet.me.
AI/ML statement: data obtained through Google Workspace APIs (or any calendar provider API) is not used to develop, improve or train generalized AI or ML models. It is used only for the scheduling functionality of this app.
Data storage and security
- All data is encrypted in transit (TLS).
- OAuth tokens and public iCloud feed URLs are encrypted at rest; only keyed hashes are used for duplicate detection. Only the current busy intervals and keyed event UID hashes are retained from a feed, not the raw iCalendar response.
- Merged availability is cached at most 60 seconds. Public feeds are checked about every 15 minutes and can be refreshed manually.
Data retention
- We read and keep calendar availability no more than 60 days ahead (iCloud feeds are read one extra day ahead so the last bookable slot is checked in full, and their stored snapshot keeps up to two extra days).
- Meetings, bookings, CRM/integration delivery logs, manually-painted availability and availability lookup logs are deleted automatically 30 days after they end.
- Your account, contacts (for autocomplete), booking-link settings and connected calendar settings are kept until you delete them or ask us to.
- The current busy intervals and keyed event UID hashes for an iCloud feed are refreshed as the feed changes and deleted when you remove that feed or delete your account. Unconfirmed painted availability expires after 7 days.
- Disconnecting a calendar (Settings → Calendars → Disconnect) stops change notifications, revokes the Google token, deletes the stored tokens and the connection record, and clears cached availability. Disconnecting an integration removes its stored tokens.
- Account deletion: request full account deletion at any time via Support; we delete your account and its data.
Your rights
- Access your personal information;
- Correct inaccurate information;
- Request deletion of your information;
- Withdraw calendar access by disconnecting a calendar in Settings → Calendars;
- See who looked up your availability and block them in Settings → Privacy;
- Export your data.
Changes to this policy
We may update this policy and will revise the “Last updated” date above.
Contact
Questions about privacy? Contact us through our Support form.