Email when a connection needs you
Sent when a calendar has stopped syncing and will not recover by itself — an expired token, a revoked permission, a CalDAV server that has moved. Not sent for a retry that succeeded.
Reliability
Something with write access to your calendar has to say how it fails, not only how it works. This is the failure behaviour in full: what BusyWait retries, what it refuses to guess at, how you hear about it, and what is left in your diary if it stops running.
Speed
Each provider tells BusyWait when something in a connected calendar has changed, and the mirrored block is written on the back of that notification. In normal conditions that is a few seconds end to end. It is a typical figure rather than a guarantee, and it depends on a provider we do not control choosing to tell us promptly.
So notifications are the fast path, not the only path. A sweep runs behind them, comparing both sides of every sync and correcting whatever a missed notification left behind. When the fast path fails you lose the seconds, not the sync.
Change-driven
BusyWait acts when a provider says something moved, rather than sweeping every calendar on a timer and hoping the timer is short enough.
Swept as a backstop
A reconciliation pass compares both sides of each sync, so a dropped notification costs latency rather than correctness.
Idempotent writes
Every mirrored block carries an opaque ID tying it to its original. A retry updates that block; it never leaves a second copy behind.
Failure modes
Six situations, what BusyWait does about each, and what you see while it happens.
| Situation | What BusyWait does | What you see |
|---|---|---|
| A provider is slow, rate-limiting or returning errors | The change is queued and retried with a widening gap between attempts. Nothing is dropped and nothing is written twice. | Sync runs behind for as long as the provider is unhappy. Blocks already written are untouched. |
| A change notification never arrives | Notifications are the fast path, not the only one. A periodic sweep compares both sides of every sync and writes whatever the notification missed. | The gap closes on its own, without you reconnecting anything. |
| An access token expires or is revoked | One retry, in case it was transient, then BusyWait stops writing to that calendar rather than guessing. It does not half-sync and say nothing. | The connection is marked as needing attention and you get an email. Reconnecting takes about as long as it did the first time. |
| You revoke access at the provider | Writing stops at once. Blocks BusyWait has already created stay where they are, because they are ordinary events in your calendar. | Nothing disappears from your diary without you asking. Removing the blocks it created is one action on the connection screen. |
| BusyWait itself is down | Nothing is written while it is down. Provider changes are re-read and reconciled when it comes back. | Your calendars carry on working normally. They just stop learning about each other until it returns. |
| A sync is paused or deleted | You choose whether the blocks that sync created are removed or left in place. Events you created yourself are never candidates for either. | A clean exit, on your terms, from the connection screen. |
The floor
Not promises about how carefully it is run. These hold because of how narrowly the writes are scoped in the first place.
Honestly
If BusyWait is behind, your calendars are behind with it. Someone with write access to one of them can put a meeting in during that window, and if a slot at the same time is confirmed through a booking link in the same window, the clash is real. The sweep surfaces it afterwards. It cannot un-book it.
Blocks BusyWait has already written are ordinary events, which is what makes them survive an outage — and also means a stale one can sit in your diary looking like a commitment until the sweep catches up. That direction makes you look busier than you are, which is the failure worth having of the two.
There is no public status page yet. Today the honest signals are the last-synced time against each calendar and an email when a connection needs you. When there is a status page it will be linked from here.
How the service itself is secured — encryption, access control, and how to report a vulnerability — is set out in the Security policy.
Telling you
A sync tool that breaks quietly is worse than one that was never there, because you have stopped checking.
Sent when a calendar has stopped syncing and will not recover by itself — an expired token, a revoked permission, a CalDAV server that has moved. Not sent for a retry that succeeded.
Every connected calendar shows when it last completed a sync. A number that has stopped moving is the first thing to check, and you can check it without contacting anybody.
There are no "everything is running normally" emails. A message from BusyWait means something wants your attention, which is the only way an alert stays worth reading.
The long term
It is a small product from a small company, and the fair thing is to say what that means rather than let the confident tone of the rest of the site imply otherwise.
FAQ
Free for two calendars, for as long as you like. The best evidence for any of the above is a few weeks of not having to think about it.