Microsoft 365 and Google Calendar
Your work and personal calendars,
finally in step.
MT-CalSync mirrors events both ways between Microsoft 365 and Google Calendar, so you stop double-booking your own life. It never adds an attendee, never sends a notification, and never leaves a trail of duplicates behind it.
No card required · cancel anytime · the whole engine is open source
Nobody gets an invitation
The obvious way to build calendar sync is to create the mirrored event the normal way. Then the calendar does what calendars do: it emails people. A mirrored meeting arrives as an invitation, colleagues are notified about an appointment that was never theirs, and someone declining a copy changes the original.
MT-CalSync is built so it cannot do that:
- A mirror never carries attendees. Not attendees removed after the fact: the write path refuses to set them at all, so there is nobody for a notification to be addressed to.
- Writes go out on the silent path. On Google every write is
sendUpdates=none; on Microsoft a mirror has no attendees, so Exchange has nothing to send. - Busy blocks when the detail is nobody else's business. Per pair, a mirror can carry the times and nothing else: Busy, no title, no location, no notes.
- Your originals are read, never written. Mirrors are created in the destination calendar only. The source side of a pair is only ever read.
One meeting. One copy. Even when Exchange changes its mind.
Duplicates are the normal failure of this category, and they have unglamorous causes. Exchange reissues an event's id when you accept or edit it. An invitation from outside your company arrives on both calendars already, with Outlook wrapping the shared identifier in a hex blob that does not compare equal to Google's plain one. A recurring series comes back from Microsoft with the title stripped out of every unmodified occurrence. Each of those makes a sync tool believe it is looking at something new, and create it again.
MT-CalSync matches on its own provenance stamp first, then on the calendar identifier (unwrapping Outlook's encoding so the two sides can actually agree), and then recovers the link through the original event's identifier when a provider reissues an id underneath it. Only once all three have missed does it create anything.
What it syncs
Microsoft 365 and Google
Exchange Online on one side, Google Calendar on the other, in either direction or both. You connect each account yourself; nobody has to hand over a tenant.
Any calendar, not just the default
Pick the exact calendar on each side. A dedicated Work calendar in Google, a secondary calendar in Outlook, or the primary one, whichever the pair should actually be.
Recurring and all-day events
Series are mirrored occurrence by occurrence, including the ones moved or cancelled on their own, and an all-day event stays all-day across the time-zone gap.
Calendars shared with you
Google calendars other people have shared with you can be mirrored into your Microsoft calendar, so a colleague's schedule shows up where you actually look.
Full detail, or busy blocks
Per pair. Copy titles, locations and notes across, or mirror nothing but the times so your personal calendar shows work as an opaque block.
Every few minutes, then again nightly
Changes cross within about 5 minutes. A full reconciliation runs once a day and repairs anything a change feed missed.
And what it refuses to do
Nag your colleagues
No invitations, no notifications, no mail announcing that an event was updated. The people on the original meeting never learn the mirror exists.
Fight itself
The origin wins. Editing a mirror by hand does not start a tug of war. The edit is simply replaced the next time the original moves.
Delete something it did not create
Every mirror carries a stamp naming the pair that wrote it. Removing a pair reads that stamp back per event, and leaves anything real exactly where it is.
Keep your tokens after you leave
Disconnect and the grant is revoked where the provider allows it, and the stored tokens are deleted. A trial that ends without a subscription has its tokens purged too.
Write your calendar into a log
Event bodies, attendee addresses and tokens are never written to our logs. Stored tokens are encrypted at rest with AES-256-GCM.
Your calendar, not your inbox
The consent screens ask for calendar access, plus the basic sign-in permissions that identify which account you connected and keep the sync running while you are away. No mail, no files, no contacts, no drive.
The hosted version runs the code you can download
MT-CalSync's sync engine is open source under the AGPL. Not a reduced community edition: the providers, the matching, the projection and the teardown, all of it, the same assemblies this site runs. You can read every call we make against your calendar, and if you would rather run it yourself you can, free, for ever.
So what are you paying us for? A machine that is awake when yours is not. Sync is only worth having if it happens while you are asleep, on a flight, or between laptops, and that means a server, a database, OAuth credentials of your own, and someone to notice when a token expires. That is the part worth hosting, and it is why we do not have to hold features back to sell it.
One plan. $4 a month.
Everything above, up to 10 calendars. No tiers, no feature grid.