What's new in Keeper.sh

Every change to Keeper.sh, newest first: new features, improvements, and the bugs we fixed.

Follow by RSS
  1. v2.15.0

    Publish more than one calendar feed

    A calendar feed is a link you hand to another app, or another person, so they can see when you are busy. Until now you had exactly one, covering everything you had connected, so the link you gave a client showed the same events as the one you subscribed to yourself.

    Feeds are now named and you can keep as many as you need. Each covers the calendars you pick for it and carries its own event name settings, so a feed built for a client shows nothing but busy blocks while the one you use yourself keeps the real titles. Every feed gets its own page and its own link, in a field you can select and copy.

    Feed links are not derived from anything about you — the token is generated without taking any input from your account — so knowing your email tells nobody the address of your feed. Free accounts keep one feed; keeping several is part of a paid plan.

    Read more about what a paid plan adds.

    Fixed (1)
    • Google no longer deletes the copies it makes of meeting blocks, and descriptions are written as plain text where the field expects text.

  2. v2.14.0

    Choose how far back and how far ahead each calendar syncs

    Every connected calendar copied the same span of time, which is fine until one of them is a decade old. A calendar you joined for a single project would drag its whole history into the calendar you actually live in.

    Each calendar now carries its own window, set separately for the past and the future: one week, one month, three months, six months, twelve months or two years. The default is one month back and two years ahead, which suits most people without any change. Narrowing a window is not cosmetic — Keeper.sh stops fetching outside it, so a source that was slow because it held years of history gets faster, and events already copied outside the new window are cleaned up rather than left stranded.

    Changing a window does not wait for the next scheduled run. Saving it asks for a sync straight away, so widening a calendar to six months of history fills that history in rather than only collecting what arrives from then on.

    Read more about what a paid plan adds.

    New (2)
    • A newly connected calendar now hides event titles, descriptions and locations by default, rather than relying on the setting being applied afterwards.

    • Self-hosted installs bundle the assistant server into the standalone image, so running one no longer means running a second service alongside it.

    Improved (5)
    • Reconciling an iCloud, Fastmail or other CalDAV calendar now downloads only the copies Keeper.sh made, so a busy calendar syncs noticeably faster.

    • Large CalDAV calendars import every event instead of stopping partway through.

    • Errors now explain what actually went wrong instead of showing a status code and a URL.

    • Following a link from the bottom of a page opens the next page at the top.

    • Elevated surfaces in the light theme now stand apart from the page the way they do in dark.

    Fixed (16)
    • An event deleted on iCloud, Fastmail or another CalDAV calendar now removes its copy instead of leaving it behind.

    • Events no longer go missing when Microsoft rate-limits your mailbox, because writes now wait and retry.

    • An Outlook event with no title no longer stops the whole calendar from being read.

    • Connecting a Microsoft account works when Microsoft returns permissions in its resource-qualified form.

    • Connecting a Google account works when it has no readable calendars, or when one calendar has no name.

    • A deleted Google event is no longer deleted twice.

    • An event with no duration now arrives on the other calendar instead of being retried forever.

    • All-day events keep their date when the calendars either side of them sit in different timezones.

    • Events written to a CalDAV calendar carry their timezone, and one unreadable event no longer stops the rest arriving.

    • A calendar link whose events carry their own timezone now imports, instead of the whole feed failing.

    • A slow CalDAV server or a timeout no longer asks you to reconnect an account that is working.

    • Your published feed now stays inside the range you set for it.

    • The first import of a calendar link uses the range you configured, rather than a default.

    • Reading a repeating series too large to expand now returns a clear explanation instead of a generic error.

    • A paid plan no longer shows as free when the billing provider is slow to answer.

    • An error page in production no longer shows the development one.

  3. v2.14.0

    Ask an assistant to find free time, sync now, or pause a calendar

    An assistant connected to Keeper.sh could already read and write events, but not answer the question people actually ask it, which is when you are free.

    Finding free time works out the open slots across everything you have connected, over a range you give it. It reads availability rather than counting events: something marked free, or marked as working elsewhere, does not block a slot, while busy and out-of-office do. Give it working hours and working days in a named timezone and "find me an hour on Thursday" stops offering you 6am.

    The other two are about control. Syncing on demand clears the backoff on any source that had been backing off after errors and queues a push to every calendar you copy into, throttled to once a minute. Pausing stops a calendar syncing in both directions while leaving it connected and its settings intact. All three work over the REST API as well, so the same actions run from a script.

    Read more about everything Keeper.sh does.

  4. v2.13.5

    Changes to a repeating event now reach your other calendars

    Repeating events are the ones a calendar gets wrong quietly. The original series copies across correctly, and then someone changes it — the weekly call moves an hour later, a date gets skipped, the whole thing shifts when the organiser changes timezone — and the copies carry on describing the old arrangement. Nothing errors, so nothing tells you the two calendars stopped agreeing.

    Changes to a series now reach the copies. Editing the repeat rule updates them, skipping a single date removes that occurrence rather than leaving it stranded, and moving the series to another timezone moves every occurrence with it rather than shifting the first and leaving the rest behind.

    Single occurrences are handled as their own thing. Moving next Tuesday's instance of a weekly meeting changes next Tuesday, and the rest of the series stays where it is — which is what the original calendar does, and therefore what the copy should do.

    Read more about everything Keeper.sh does.

    Improved (1)
    • Each calendar you sync into runs on its own, so a slow one no longer holds up the rest.

    Fixed (9)
    • Events you marked as free show as free in the feed you share.

    • The home page no longer sits on Syncing long after a sync has finished.

    • A deleted event is no longer left behind when the lookup that finds it fails.

    • Replying to one occurrence of a repeating invitation no longer changes the rest.

    • mailbox.org calendars connect on the first try.

    • An event with no series identifier no longer stops a sync.

    • A request that stops responding is given up on after 30 seconds, so the sync finishes.

    • A rescheduled event no longer leaves the old copy behind on your other calendars.

    • A sync running over two minutes keeps its claim on the calendar it is writing to.

  5. v2.12.0

    Turn midnight-to-midnight events into all-day events

    Not every calendar publishes all-day events properly. A good number of subscription links — conference schedules, school calendars, sports fixtures — describe a day off as a timed event that starts at midnight and ends at midnight the next day. It is technically the same span of time and it reads completely differently: instead of a quiet banner across the top of the day, you get a solid twenty-four hour block that buries everything else.

    Keeper.sh can now recognise that shape and copy it as a genuine all-day event. It is a per-calendar setting rather than something applied everywhere, because the interpretation is a guess — a real event that happens to run midnight to midnight is rare, but it is not impossible, and the right answer depends on the calendar you are reading.

    Turn it on for the subscription that keeps swallowing your week, and leave it off for the calendars that publish all-day events correctly to begin with.

    Read more about everything Keeper.sh does.

    New (1)
    • An assistant can set an event's timezone, such as America/New_York, when it creates one.

    Improved (1)
    • A calendar that keeps failing to fetch backs off and retries, while its events still go out.

    Fixed (12)
    • A repeating event in your Keeper.sh feed expands properly instead of showing once.

    • A skipped date no longer drops the whole repeating series from your feed.

    • Events in your Keeper.sh feed show at their local time in Outlook, not in UTC.

    • Events that failed to write on every single sync now go through.

    • Events written to iCloud, Fastmail and other CalDAV calendars keep their own timezone.

    • Calendars that returned an error and never fetched any events now sync.

    • When a calendar link cannot be loaded, the events already synced from it are kept.

    • Calendar links that write dates in an unusual form now import.

    • A calendar your provider reports as missing is retried instead of being switched off.

    • An edit to an event's title, description or location reaches your other calendars.

    • A slow provider no longer freezes a sync part-way through.

    • An account wrongly flagged as needing reconnection keeps syncing.

  6. v2.9.34

    Connect a calendar server that uses digest sign-in

    Not every calendar server asks for a password the same way. Most accept the straightforward exchange Keeper.sh already used, but a good number of self-hosted and university servers expect digest authentication, where the server issues a challenge and the client answers with a hash rather than the password itself. Keeper.sh could not answer that challenge, so those servers rejected credentials that were perfectly correct.

    Both schemes now work. When a server asks for digest, Keeper.sh completes the exchange and the connection goes through on the details you already had — nothing about how you enter them changes, and there is no setting to find.

    Which scheme your server wants is recorded the first time it tells us, so later syncs answer correctly on the first attempt instead of getting turned away and trying again. If a server refused your details at the connect screen before, it is worth another go.

    Read more about the calendars Keeper.sh works with.

  7. v2.9.34

    Sync starts the moment you connect a calendar

    Connecting a calendar used to end in a wait. The account was linked, the calendars were listed, and then nothing visibly happened until the next scheduled run came around — which on the free plan could be half an hour of staring at an empty destination wondering whether the setup had worked.

    Connecting now triggers a sync straight away. Events start arriving while you are still on the page, which turns the first minute after setup from a question into a confirmation, and means a mistake in your mapping shows up immediately rather than after the delay.

    The same applies when you change something that affects what gets copied. Adjusting which calendars feed a destination asks for a sync rather than waiting for the schedule to notice, so the thing you just changed is the thing you can go and check.

    Read more about everything Keeper.sh does.

    Improved (6)
    • Access for each account is renewed one request at a time, so accounts stay signed in.

    • Google's working from home entries are always left out, and the option to include them is gone.

    • Large Google and Outlook calendars are fetched in smaller pages, so they stall less often.

    • The check your email screen reminds you to look in spam or junk.

    • A calendar link that comes back unchanged is no longer rebuilt from scratch.

    • Keeper.sh runs many more syncs at once, and a repeat sync replaces the one already waiting.

    Fixed (15)
    • You can delete your account when you signed in with Google or Microsoft.

    • A request for events between two times returns exactly that window.

    • Times read correctly in zones with a single-digit offset, such as Montevideo.

    • Repeating events show every occurrence in your Keeper.sh feed, not just the first.

    • All-day events read as all-day in the feed Keeper.sh publishes.

    • Calendar and feed settings save the value you typed.

    • Sync progress only moves forward, and reaches the end when the sync is done.

    • An event already sitting in the calendar you sync into is replaced with the current version.

    • Keeper.sh waits and retries the way Google asks when it is being rate limited.

    • Ordinary hiccups from a CalDAV server no longer ask you to reconnect.

    • Events land in the calendar you chose, not the default one, and stop repeating.

    • An account that returns no email address now connects.

    • Events no longer fail when Microsoft returns no identifier for them.

    • Calendar links hosted by Google load again.

    • A calendar you turned off is no longer synced on every scheduled run.

  8. v2.9.33

    Assistants can now book, change and reply to events

    Reading a calendar answers half the question. The other half is doing something about it, so an assistant connected to Keeper.sh can now create an event, edit one, delete one, see the invitations waiting for a reply, and RSVP to them. It can also list your connected accounts and fetch the link to your combined calendar feed, which is usually the thing you actually want when someone asks for your availability.

    Every one of those abilities is available directly as an API as well. A new API tokens page under Settings lets you create tokens and revoke them individually, so a script you wrote once can be cut off without disturbing an assistant you still use.

    Free accounts include 25 calls a day, which covers a person checking their week and booking the occasional thing. Pro removes the cap on both assistant and API access.

    Read more about what Pro includes.

  9. v2.9.33

    Connect Keeper.sh to Claude and other AI assistants

    Keeper.sh can now be added as a connector in Claude and other assistants that speak the same protocol. Once it is connected, the assistant can see which calendars you have linked, look up the events in a date range and a timezone you specify, and count how many fall inside it — so "what does my Thursday look like" is answered from your actual calendars rather than from whatever you last pasted into the conversation.

    You approve the connection once, on a consent screen in your browser, and the assistant signs in with OAuth rather than holding a password. Access is yours to revoke at any point, and revoking it cuts the assistant off without touching the calendars themselves.

    At launch this is deliberately read-only. The assistant can look and it cannot change anything, which is the right place to start for something that has your whole schedule in view and occasionally misunderstands you.

    Read more about everything Keeper.sh does.

    New (1)
    • Visitors in the EU, EEA and UK are asked whether Keeper.sh may use analytics and advertising cookies, and the choice is remembered.

    Improved (2)
    • A connected assistant stays signed in considerably longer before it asks you to connect again.

    • A calendar you sync into that hits a passing error keeps retrying on the normal schedule instead of being switched off.

    Fixed (13)
    • Connecting Keeper.sh from Claude Desktop goes through, instead of failing before the approval screen.

    • Events no longer appear on your other calendars, vanish on the next sync, and come back again.

    • Copies of the same event no longer pile up, one more added on every sync.

    • Calendars that label times the Microsoft way, such as Eastern Standard Time, now arrive at the right hour.

    • An ordinary hiccup no longer flags a working account as needing to be reconnected.

    • A calendar deleted at your provider is switched off instead of failing on every run.

    • An empty or cut-short error from Google no longer stops the whole sync.

    • Your calendar list still loads when a provider declines to hand it over.

    • The checkout window on the upgrade page opens instead of coming up blank.

    • Starting a Microsoft 365 connection takes you to the Microsoft sign-in page instead of failing immediately.

    • An occurrence of a repeating meeting moved or retitled on a CalDAV calendar now comes across.

    • CalDAV servers that return unusable data for repeating events, Lark among them, now sync.

    • One event copied into two Google calendars is no longer treated as a duplicate of itself.

  10. v2.2.20

    All-day events, out of office and working location

    An all-day event is not a meeting that happens to last twenty-four hours, and treating it as one made a mess. A day marked off for travel arrived on the other calendar as a timed block running midnight to midnight, which pushed everything else down the day and made a week look far busier than it was. All-day events now stay all-day when they are copied, across Google, Outlook and CalDAV.

    Availability travels with them. An event you marked free stays free rather than turning into a solid block, which matters for the things people put on a calendar to remember rather than to reserve time — a birthday, a deadline, a release date.

    Out-of-office and working-elsewhere entries keep their type too. A week marked out of office arrives as out of office rather than as a wall of busy, so the calendar receiving it can show it the way it means to, and colleagues reading your availability see the difference between you being away and you being in back-to-back meetings.

    Read more about everything Keeper.sh does.

    Improved (2)
    • Your plan shows on the settings page as soon as it loads, instead of filling in a moment later.

    • keeper.sh without the www prefix redirects to the www address, so every link lands in the same place.

    Fixed (16)
    • Marketing pages, the dashboard and long settings screens scroll again, and size themselves to the visible area on mobile.

    • Hover hints no longer stick to the screen on phones and tablets.

    • Passkey sign-in is only offered where it can complete, says why it failed, and leaves the password field in place for autofill.

    • A freshly loaded page shows the signed-in menu straight away, rather than the signed-out links first.

    • Events written to a CalDAV calendar are matched to the copies already there instead of written twice.

    • A connected calendar keeps the name it had when you connected it, instead of being rewritten on every sync.

    • Moving between calendars refills the details and destination list, instead of leaving the last one on screen.

    • The name a CalDAV calendar carries on its server is now shown in the calendar details.

    • A CalDAV account whose credentials are refused is marked as needing to be reconnected, instead of retrying forever.

    • A calendar you only write to is no longer read from as well.

    • The refresh handles genuine subscription links only, instead of reading connected accounts as calendar files.

    • A request Google or Microsoft never answers is given up on after fifteen seconds, so the sync moves on.

    • The exclude toggles for all-day, focus time, out of office and working location apply to every calendar you sync into.

    • Events stored before all-day and event-type support arrived are matched to their incoming version, not deleted and recreated.

    • A row inside a switched-off section now looks switched off.

    • The sitemap, llms.txt and llms-full.txt are published with the site and reachable again.

  11. v2.1.7

    Name your copied events however you like

    By default a copy carries the name of the calendar it came from, which keeps the original title private but tells you very little when three calendars all feed the same destination. You can now write the title yourself, per calendar, using a template.

    The template takes plain text plus two placeholders: the original event's name and the name of the calendar it came from. Writing "Work — {{calendar_name}}" labels every copy in a way you will recognise at a glance, while "{{event_name}}" passes the real title straight through for a calendar where privacy is not the concern.

    Because it is set per calendar, one connection can pass full titles through while another shows nothing but a block. That is usually the shape people actually want: your own calendars readable, and the ones other people can see reduced to when you are busy.

    Read more about everything Keeper.sh does.

  12. v2.1.7

    A new Keeper.sh website

    The old site asked you to take a fair amount on faith. It said Keeper.sh synced calendars, and left the questions people actually have — which calendars, how quickly, what it costs, what happens to the contents of your events — to be discovered after signing up.

    The rebuilt site answers those up front. There are pages for what it does and what it costs, the providers it works with are named rather than implied, and the privacy behaviour is stated plainly: what a copy carries by default, what a shared link shows, and what is never copied on any plan.

    It is also honest about the shape of the product rather than only its best angle. The free plan's limits are written down next to the paid one's, and running Keeper.sh yourself is documented rather than buried, on the grounds that people who want to read the code before trusting it with their calendar should not have to go looking.

    Read more about everything Keeper.sh does.

    New (13)
    • Keeper.sh follows your system's light or dark appearance, across the website and the dashboard.

    • A saved passkey is offered as soon as you focus the email field, and passkeys can be added and removed from settings.

    • A Forgot password link emails you a reset link, and a screen for choosing a new password.

    • Settings brings your account controls into one place: change your password, manage your passkeys, and delete your account.

    • The dashboard opens with a bar graph of your event activity over time, with a running total and a count for the day you hover.

    • On Pro, you decide per calendar whether an event's title, description and location travel with it.

    • You pick which calendars appear in your Keeper.sh link, and Pro adds control over names, descriptions, locations and all-day events.

    • A calendar feed behind a username and password can be added by ticking a box and supplying them.

    • Syncing looks back seven days as well as forward, so events from earlier in the week come across.

    • Connecting an account walks you straight into choosing which calendars to sync, and where their events go.

    • A live progress ring shows how many events have been processed, and when your calendars last finished syncing.

    • Free covers two linked accounts, three sync connections and the aggregated calendar link; Pro lifts the limits and syncs every minute.

    • The upgrade page has a monthly and yearly toggle, and Pro subscribers get a Manage plan option that opens their billing portal.

    Improved (1)
    • Each calendar has its own settings page, where you choose which calendars it sends events to and, on Pro, what is carried across.

    Fixed (13)
    • A repeating event whose first occurrence has passed is kept as long as it still has occurrences ahead, and its skipped dates are respected.

    • An event keeps the timezone it was created in, so it no longer shifts hours on the way to another calendar.

    • All-day events published without an end time, holiday calendars among them, now come across.

    • Copies of events that have already started are left alone, instead of being deleted.

    • A newly connected calendar copies only the calendar's name onto the events it sends on; titles, descriptions and locations stay behind.

    • A freshly connected calendar is picked up by the scheduled sync as soon as it can receive events.

    • The sync indicator returns to idle when the work is done, instead of claiming a sync is still running.

    • Toggling destination calendars in quick succession applies your changes in order, instead of losing one.

    • Two overlapping attempts to connect the same account leave you with one account, not two.

    • Deleting your account finishes cleanly when your billing record has already been removed.

    • The sign-in page checks for passkey support first, and falls back to email and password.

    • Dragging along the event graph on a phone reads daily counts instead of scrolling the page.

    • The header follows your actual session, and the sign-in page sends you to your dashboard if you are already signed in.

  13. v2.1.7

    A rebuilt dashboard

    The old dashboard listed the accounts you had connected and left you to work out what was actually happening between them. That was tolerable with two calendars and confusing with five, because the thing you want to see is not a list of accounts but which calendar is copying into which.

    The rebuilt dashboard is organised around those connections. Each one shows where events come from, where they land, and what is being copied, so checking that your work calendar is blocking out your personal one is a matter of looking rather than reconstructing it in your head. Each calendar has its own page for the settings that apply to it, instead of every option living in one long form.

    Sync status is visible rather than inferred. You can see when a calendar was last read, whether the last run had a problem, and what that problem was — which turns "I think it stopped working" into something you can confirm in a few seconds.

    Read more about everything Keeper.sh does.

  14. v1.11.5

    Connect Google Calendar by signing in

    Reading a Google calendar meant finding its secret iCal address and pasting it in — a link that is awkward to locate, easy to leak, and impossible to revoke without regenerating it. You can now connect the account itself and pick which of its calendars Keeper.sh reads.

    Signing in also means Keeper.sh knows what it is looking at. It lists the calendars on the account by name, so choosing between a personal calendar and one shared with you is a matter of ticking the right box rather than working out which link belongs to which.

    A calendar can now be both a source and a destination without feeding itself. Keeper.sh recognises the events it created and skips them on the way back in, so pointing two accounts at each other produces one copy in each direction instead of a loop that grows on every run.

    Read more about everything Keeper.sh does.

    New (2)
    • When you add a Google source you can uncheck Focus Time, Out of Office and Working Location, so those blocks stay out of your other calendars.

    • Visitors in the EU, EEA and UK are asked whether Keeper.sh may use cookies for analytics, with a link to the privacy policy.

    Improved (1)
    • Adding a Google or Outlook calendar as a source starts a sync straight away, rather than waiting for the next scheduled run.

    Fixed (5)
    • A Google or Outlook account that stops accepting Keeper.sh is marked as needing to be reconnected, instead of failing quietly.

    • Events Keeper.sh left on a calendar that no longer match anything in your sources are removed, not just the ones in the past.

    • An event with no description no longer stops Outlook syncing in either direction.

    • A sync that runs into a problem ends the run, instead of showing progress that never finishes.

    • Deleting your account only asks for a password when your account actually has one.

  15. v1.11.5

    Connect Outlook as a source, not just a destination

    Outlook could receive your busy time but not supply it. If your work calendar lived in Outlook — which for most people is exactly where it lives — the one calendar that most needed to block out your evenings could not be read at all.

    Signing in with a Microsoft account now works the same way Google does. Choose the calendar you want read, and Keeper.sh keeps its busy time flowing to every destination you have set up. A single account can be both ends at once: reading your work calendar and receiving your personal one, in the same connection.

    Both providers now run through the same sync path rather than each carrying its own. That is invisible when things work, and it is why a fix to how repeating events or timezones are handled lands for Google and Outlook together instead of being written twice.

    Read more about everything Keeper.sh does.

  16. v1.11.5

    Connect iCloud, Fastmail and other CalDAV calendars

    Google and Outlook cover a lot of calendars, but not the Apple one on your phone or the Fastmail account you moved to. Both speak CalDAV, an open standard for calendar access, and Keeper.sh now connects to anything that speaks it.

    Connecting takes your address and an app password rather than your real one — a separate credential you generate for a single application and can revoke on its own, without changing the password you sign in with. The connect dialog links to the page where iCloud and Fastmail issue them, because both bury it somewhere different.

    Once connected, a CalDAV calendar behaves like any other source. It is read on a schedule, its busy time reaches your other calendars, and it can be a destination as well as a source, which means a self-hosted or standards-compliant server works without Keeper.sh needing to know the product by name.

    Read more about the calendars Keeper.sh works with.

  17. v1.7.0

    Choose which calendars copy into your Google calendar

    Connect a Google account and Keeper.sh writes your busy time straight into that calendar. Nothing is copied wholesale, though: you choose which of your connected calendars feed it. Events from a source you have not mapped to that destination are filtered out rather than written and cleaned up afterwards.

    That mapping is the part worth setting deliberately. A work calendar can feed your personal one without the reverse being true, and a shared calendar you only read can stay out of both. Each pairing is its own choice, so copying runs one way unless you set up the other direction as well.

    Keeper.sh tracks every event it creates at the far end. As your sources change, the copies it made are updated or removed to match, which is what keeps the destination an accurate picture rather than an accumulating pile of stale blocks.

    Read more about everything Keeper.sh does.

Can Keeper.sh use cookies for analytics?