← All articles

Two-way sync now has two modes: Mirror and Projection

June 30, 2026 · 5 min read

Two-way sync used to be a single switch: flip it on, and edits flowed in both directions. That switch was quietly doing two very different jobs, and cramming them into one setting forced a compromise nobody should have to make.

Starting today, two-way sync comes in two modes — Mirror and Projection. You choose per pair, under Sync mode, based on the relationship between the two calendars rather than by assembling low-level options.

The two jobs two-way sync was doing

Think about the two most common reasons people turn two-way on:

  1. “These are the same calendar, in two places.” A work Workspace and a personal Google account you both live in daily. A meeting might land on either side, and you want them to always agree — every field, both directions, no exceptions.

  2. “These should know about each other, without leaking.” A work calendar and a personal one where the whole point is that details don’t cross — the other side should see a “Busy” block, not your dentist appointment or your client’s name.

Those are opposite goals. The first wants maximum fidelity. The second wants maximum control. One toggle can’t be good at both — turn it on for job #2 and you leak everything; tune it down for privacy and you can no longer treat the calendars as one. So we stopped pretending it was one feature.

Mirror — for calendars you live in

Mirror keeps both calendars identical. Every field is copied faithfully, both sides are fully editable, and there’s no privacy filter in the way — it’s the “two places, one calendar” mode.

Because both sides hold the same event, conflicts resolve automatically — there’s no strategy to pick and no queue to babysit:

  • Different fields → they merge. Change the time on one side and the location on the other, and both survive.
  • The same field on both sides → most-recent-wins, silently. The later edit is kept. (Providers report modification times at coarse granularity, so two near-simultaneous edits can settle either way — deterministic, but don’t count on “whatever I saved last” down to the second.)
  • Delete beats a concurrent edit. Delete on one side while editing on the other and the event is removed from both. A deletion carries no timestamp to lose a tug-of-war with, so twocal treats it as final — which is exactly what stops “zombie” events from crawling back.

Reach for Mirror when you genuinely edit in both places and want them to be indistinguishable.

Projection — for calendars that should stay aware, not identical

Projection runs two independent, filtered one-ways — one in each direction — and each direction can hide or rewrite fields on its own terms. The flagship case is the privacy-masked work↔personal pair: personal commitments show up on your work calendar as plain “Busy” blocks, work meetings show up on personal the same way, and no titles or details ever cross.

Because each direction is its own filtered one-way moving a separate, tagged copy, the two streams never touch the same object — so there’s nothing to conflict over by construction. You get bidirectional awareness with per-direction rules, and none of the tug-of-war Mirror has to resolve.

Reach for Projection when both calendars should reflect each other but stay firmly separate.

Why two modes instead of one dial

The benefit of splitting them isn’t just tidier settings — it’s that each mode has exactly one job, so its behavior is predictable and safe:

  • You choose intent, not configuration. Pick Mirror or Projection based on what the two calendars are to each other. No conflict-strategy matrix to reason about.
  • Each mode is safe in a way the other’s job would break. Mirror’s automatic resolution is safe because both sides are the same event. Projection can’t conflict at all because its directions move disjoint, filtered copies. Neither inherits a footgun from the other.
  • No compromise between fidelity and privacy. You stop trading one for the other. Want them identical? Mirror. Want them aware but private? Projection. The mode you didn’t pick isn’t quietly weakening the one you did.

Which one you want

  • Two real calendars you edit daily and want kept in lockstep → Mirror.
  • Work and personal that should see each other’s busy time but never the details → Projection.
  • One calendar is clearly the master and the other only reflects it → you don’t need two-way at all; stay one-way. It’s simpler and has nothing to settle.

Practical notes

  • Speed. OAuth pairs (Google, Microsoft) sync in seconds via push notifications, in both directions. If anything ever looks out of step, Force full sync on the pair page re-reconciles from scratch.
  • ICS stays one-way. An ICS subscription is a read-only feed — there’s nothing to write back to — so a pair with an ICS source can’t be Mirror or Projection.
  • Switching modes doesn’t rewrite history. It starts keeping the two in step from that point forward; run a force full sync if you want an immediate top-to-bottom reconcile.

The short version

Two-way sync was doing two jobs. Now it says so out loud. Mirror keeps two calendars identical — full fidelity, both editable, conflicts settled automatically. Projection keeps them privately aware — two filtered one-ways that hide or rewrite fields per direction and can’t conflict by design. Pick the one that matches how you actually use the two calendars.

Want the mechanics in depth? See how two-way sync works. twocal keeps Google and Microsoft calendars in sync in seconds — and publishes its reliability on a public 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.