Your dentist appointment is in iCloud. Your coworkers book you in Outlook. Neither calendar knows the other exists, so the 2pm you already gave away gets taken again.
Keeper.sh blocks that time in Outlook automatically, and nobody at work learns what you are doing at 2pm. One Apple password step is the only fiddly part, and Keeper.sh walks you through it on screen.
What lands in Outlook
Your dentist appointment becomes a busy block on your Outlook calendar. Keeper.sh copies events one direction at a time, so iCloud into Outlook is one connection.
Work meetings turning up on your iPhone would be a second connection, pointing the other way. Build only the first and nothing is ever written into iCloud.
Why Apple makes you generate a second password
Apple will not let Keeper.sh read your iCloud calendar with your normal Apple Account password. That one password also opens your photos, your purchase history and Find My.
So you issue a separate password that reaches your calendar and nothing else, and cancel it whenever you want. Keeper.sh shows you these steps on the connect screen, and Apple documents them too:
- Navigate to appleid.apple.com
- Sign in with your Apple ID
- Select "App-Specific Passwords"
- Click the "+" next to "Passwords"
- Label it, generate it, and copy the password — you will paste it into Keeper.sh in the next step
The option only appears once two-factor authentication is on. Apple displays the password a single time, so copy it before the box closes.
Connect iCloud
iCloud goes in first, because it holds the appointments you want protected. Create a free account — two accounts and three connections, no charge — then open Import Calendars and choose Connect iCloud.
The screen is headed Connect Apple Calendar and asks for two things:
- Apple ID — the email address you sign in to Apple with
- App-Specific Password — the one you just generated, not your usual password
Press Connect. Keeper.sh finds every calendar on your Apple account, brings them all in, and takes you into setup.
Invalid credentials is the password nearly every time. Either your normal Apple password went in by mistake, or the generated one has since been canceled.
Connect Outlook
Outlook is the work calendar those busy blocks will land on. Back on Import Calendars, choose Connect Outlook.
Keeper.sh lists what it is about to ask Microsoft for:
- See your email address
- View a list of your calendars
- View events, summaries and details
- Add or remove calendar events
Press Connect and sign in to Microsoft as normal.
Point your iCloud calendar at Outlook
Setup asks a short series of questions about the iCloud calendars you just brought in.
Which calendars would you like to configure? Tick the personal calendar your appointments actually live in. You do not have to set up the rest now.
Rename Your Calendars. iCloud calendars often arrive called "Home" or "Personal". Renaming here leaves iCloud untouched, and the new name is what your coworkers end up seeing on the busy blocks.
Where should 'Home' send events? Tick your Outlook calendar. That is the connection made.
The next question is the mirror image, asking which calendars should feed events back into 'Home'. Leave it empty if you only want personal time showing up at work. Tick Outlook instead to also get work meetings onto your iPhone.
Press Next to finish. You can change where 'Home' sends events later, under Send Events to Calendars on its own page.
This fits on the free plan
iCloud is one connected account and Outlook is the other, which is exactly what the free plan covers.
Personal into work spends one of your three connections. Adding work into personal spends a second, so there is still one in hand.
The meter counts accounts, not calendars. An iCloud account with six calendars inside it is still one of your two.
What your coworkers actually see
Every iCloud calendar you connect starts private. What lands in Outlook is a start time, an end time, and a title borrowed from the calendar it came from. No description, no location.
Your team sees "Home, 2pm to 3pm". Not the dentist, not the address, not the interview.
Three Pro switches under Sync Settings decide that: Sync Event Name, Sync Event Description and Sync Event Location. They start off.
Turn one on with Pro and that detail begins crossing over. Leave them alone and none of it does. Free accounts run on the private default and keep it.
Keep birthdays off your work calendar
iCloud calendars tend to carry birthdays and public holidays, and those land in Outlook as day-long blocks across your working week.
Exclude All Day Events stops that. It is a Pro switch under Exclusions, one section below those three.
Keep birthdays and holidays out of Outlook with Pro.
Nobody gets invited twice
Keeper.sh leaves the guest list behind, so your dentist never gets an invitation addressed to your team. Meeting links and reminders stay in iCloud as well.
What Outlook receives is a block of time, not a second working version of the appointment. Edit that block in Outlook and Keeper.sh restores it to match iCloud on the next pass, so it cannot quietly drift.
How quickly the block appears
Keeper.sh reads iCloud every minute on both plans. Writing into Outlook is where the plans differ: every minute on Pro, every thirty on free.
End to end that is usually about a minute on Pro, against about fifteen on free. Two minutes and thirty-one minutes are the outside cases.
That is the difference between the block landing before a coworker sees an empty afternoon and landing after they have booked your 2pm.
Nothing is instant on iCloud for anyone. Apple publishes no way to be told the moment an appointment changes, so every tool that touches iCloud checks on a timer.
Pro is $5 a month whatever you connect. Nine client calendars is $25 per user a month at OneCal, billed annually, and CalendarBridge stops at eight for $40 a month (August 2026).
How far ahead the blocks reach
Keeper.sh copies iCloud appointments from a month back to two years ahead. A specialist appointment booked eight months out is already holding its slot against anyone browsing your Outlook availability.
Pro sets that range per calendar. Widen it to two years of history, or set a deliberately tighter one, which clears the copies falling outside it.
If something looks off
Blocks stopped appearing and nothing looks broken. Changing your Apple Account password cancels every app-specific password you have ever made, including this one, without telling you. Generate a fresh password and reconnect iCloud.
An Outlook calendar will not accept the blocks. Calendars shared with you by someone else, and ones you subscribed to from a link, usually arrive read-only. Keeper.sh can copy appointments out of one, but it cannot write into it.
Pick an Outlook calendar you created yourself instead.
A calendar pauses, then catches up. Keeper.sh holds calendar servers to five requests at a time on purpose, because plenty of them are small and easily overwhelmed. When a request is rejected, that calendar waits longer before trying again, and the wait survives a restart on our side.
An appointment you deleted is still in Outlook. Check which direction you actually built. Deleting in Outlook does nothing to iCloud unless you set up that second connection.
Why 2pm stays 2pm
Exchange labels time zones in its own vocabulary — Eastern Standard Time where a standard zone name should be — and Google rejects those outright. Keeper.sh carries a table of roughly 140 of them, built from Unicode's reference data, so a 2pm block stays a 2pm block.
Behavior like that is held in place by 1,086 tests, including regression runs against ten real calendar feeds captured from Google, GOV.UK, Meetup and an Exchange server.
Would you rather run it yourself?
Keeper.sh is public under AGPL-3.0, and the keeper-standalone image brings up the database, the workers and the web app in one container. Every Pro feature is included when you run it, the privacy switches and the one-minute writes among them. The database then sits on hardware you own, with nothing reported back unless you configure a collector.
You also buy the server and the domain, apply the updates, keep the backups, and get paged when it stops. Outlook sign-in needs your own Microsoft app registered before it works at all.
The hosted version is the same code, on our servers, with Microsoft's sign-in already handled.
Stop losing the 2pm you already gave away
Connect iCloud and Outlook, tick one calendar, and your personal commitments start holding their own time at work.