← All articles

Sync your work and personal calendars without leaking your personal life

July 7, 2026 · 6 min read

The problem is symmetrical and almost universal. If your personal events aren’t on your work calendar, colleagues book over them — the dentist, the school pickup, the therapy appointment all get steamrolled by “found a slot that works!” But if your personal events are on your work calendar, then your employer’s directory, your calendar-visible coworkers, and possibly your IT admin can read your personal life like a feed.

Most people pick one bad option: either they let personal time get booked over, or they manually type fake “Hold” blocks into their work calendar and maintain that fiction by hand, forever. There’s a better pattern.

The pattern: busy-only mirroring

What you want is a one-way sync from personal → work that copies when you’re busy but not what you’re doing. Every personal event becomes a generic block — “Busy” — on the work side. Your availability is protected in every scheduling tool your colleagues use; the contents of your life stay on your own calendar. (Often you want the reverse direction too — work events appearing on your personal calendar — and there, full details are usually fine, since it’s your own account.)

Before setting it up, know what each method actually exposes.

What your work admin can see (worth being clear-eyed about)

On a corporate Google Workspace or Microsoft 365 account, admins can generally access the contents of calendars in that tenant. Anything you put on the work calendar — or sync into it with full details — is, in principle, visible to the organization. Events marked “private” in Outlook hide details from coworkers, but admins and some delegated roles can still see them, and plenty of org-wide settings override per-event privacy. The rule of thumb: the work calendar belongs to the company. Privacy has to happen before the event lands there, by stripping details at sync time — not after.

Free option 1: free/busy sharing

Google and Microsoft both let you share a calendar as free/busy only. Within one organization this is often enough. Across organizations — personal Gmail → corporate M365, say — it usually dies at the admin wall: external sharing is restricted or blocked in most corporate tenants, and even when it works, the shared overlay frequently doesn’t feed colleagues’ scheduling assistants (we covered why overlays don’t block time in sharing is not syncing). Try it first; just verify that a colleague’s “Find a time” actually shows you as busy before trusting it.

Free option 2: ICS subscribe with details hidden

You can subscribe to your personal calendar’s ICS URL from work. Beyond the staleness problem (Google and Outlook refresh subscribed feeds every several hours to a day — here’s why), most ICS routes carry full event details into the work tenant, which is exactly what you’re trying to avoid, and subscribed calendars typically don’t count toward your free/busy availability anyway. Wrong tool for this job.

Free option 3: Apps Script

A Google Apps Script can copy personal events into the work calendar as sanitized “Busy” blocks — title replaced, description dropped. This genuinely works and genuinely blocks time. Costs: it polls on a timer rather than reacting instantly, you own the maintenance (updates, deletions, recurring-event exceptions, quota limits), and it only helps when both ends are Google. If you’re technical and your setup is simple, it’s a fine answer.

The managed version

A sync service does the same thing with the rough edges handled: one-way personal → work with details stripped to a placeholder, two-way where you want full fidelity, changes propagating in seconds via push rather than on a timer, and deletions actually deleting (a cancelled dentist appointment shouldn’t leave a phantom “Busy” block colleagues schedule around). The privacy property worth checking in any tool you evaluate: can you configure, per sync pair, exactly which fields cross — and does the stripped copy live only on the destination calendar, with the real details never entering the work tenant?

That per-pair control is core to twocal. Personal → work as bare “Busy” blocks; work → personal with full details; client calendars kept mutually invisible — each pair has its own rules. Sync runs in seconds, and reliability is published on a live dashboard. $19/month flat for up to 15 calendars, 14 days free.

Tired of sync that drops events?

twocal does one thing — keeps your calendars in sync, reliably. 14 days free, no credit card.