Skip to content
Calendar Manager

icon picker
Start Here

Why I Built This Doc

Hi there. My name is Karina and I used to be a Fractional COO and Workflow Consultant. “Used to” only because I was fortunate enough to go full-time with one of my clients...but before that I had a major problem: too many meetings and not enough time to get any work done. (I still suffer from that sometimes, but now it’s for different reasons.)
The main reason for this problem was that I was juggling 4 to 6 clients at any given time, and 4 to 6 calendars. I discovered Calendly years ago and loved it... I integrated all my calendars, had may different event types...but there was no way to limit how many meetings were allowed across event types or calendars. I tried out many different calendaring tools, but the one that sort of had what I wanted had such a horrible UI, I quickly abandoned it.
Fast forward a year of calendar hardships and I came across a new calendaring tool: savvycal. I still use it—and love it—and it solved most of my problem since I could now limit how many meetings could be scheduled across all event types. I could even limit how many events could be scheduled in a given week! It was fabulous and had many nifty features, but it did not do one key thing: it didn’t count meetings that were not scheduled with one of its links, which meant internal meetings didn’t get counted.
My search continued. I had already discovered coda and built a dashboard to manage my freelance income (and published it as a too), but it took a wonderful webinar hosted by Maria Marquis where she demonstrated what she had done with the Google Calendar pack for me to realize that perhaps I could build the solution for myself. And I did.
This document is the result. I’ve been using it for quite a while now and finally took the time to convert it to a template because of the requests I’ve gotten...and in the hopes it helps some other beleaguered consultant out there manage his/her calendars better.

How This Doc Works

As powerful as this doc is, it’s also pretty simple and has only 2 parts:
the backend ( ) where you’ll connect all your calendars;
and the front end ( ) where everything rolls up and the coda magic happens.

click on and go to the “insert” option at the top right, then to “packs” and then to “Google Calendar”;
click on settings and add all your calendars by clicking on “+ Add a shared account” button;
follow the instructions to authorize the calendar, and choose one of them to be the primary account;
set the default refresh rate (I choose hourly for each) and the date range you want synced (I choose last 30 days and next 30 days);
disconnect my 2 dummy accounts; and
hit the synch now option and watch your events populate the table.

This table is not only where all the data lives, but where a lot of the formulas occur that roll up into the table.
Formulas and columns of note include:
Keep? checkbox and Duplicate Count— these work together to determine if any event is a duplicate and if so, only the first instance of any duplicated event is counted and “kept.” (This was needed since I sometimes had to share event invites with myself when I couldn’t share the client calendar with my main one.)
Exlcude?/Include?—I added these because sometimes there are exceptions to the other rules, which I will explain a bit more in the next bullet.
Event?—this formula looks at 3 things:
are attendees 2 or greater;
is keep? checked or not;
and are exclude and/or include checked or not.

Let me explain each part of the three elements a bit further.
Since I often add focus blocks to my calendar, I didn’t want those to count as meetings, so I had coda discount meetings with less than 2 people (ie, meetings for only myself). These meetings would not count as an “event.”
However, I realized that when I signed up for a webinar (for example, one of Maria’s), this would get added to my calendar and not count since there were no attendees listed, but I wanted it to count. I therefore added the include/exclude columns to easily allow me to mark exceptions.
The last part was to exclude duplicates and only count the first instance of any event (as explained earlier).
I pulled in many other columns and data available from the Google Calendar pack, but most of it can be hidden and/or ignored since it’s not actively used in this doc. The one exception is the duration, which will be rolled up into the table.

This subpage is just a calendar view of the table, and a good way to demonstrate how crazy (or not) your calendar is...or a quick way to double-check what’s come through on any given date.
And now for the “automagic” part.

The page has 3 main components:
the controls on top, which let you add more rows to the table;
the main button that is connected to a daily automation;
and the table with all its rollups, formulas, and buttons.

Let’s touch on each one a bit further.


There are actually 2 versions because I got 2 ways of doing this (thank you, coda support and coda community) and couldn’t choose between the 2:
the one on the left works best on the first day of every month, since it automatically set the start/end dates for the present month;
the one on the right, which is what I tend to use, allows you to set the start and end dates so it can be used at any point.

If you use the one on the left, just press the “New Month’s Rows” button; if the one on the right, first set the start and end dates and then press the “New Date Picker Rows.”
As you add new rows, they will automatically roll up and show data from your calendar—as long as you’re synching enough data (see instructions ).

Push All Buttons

This is the main button that will push any buttons that are enabled in the table, and is connected to an automation (currently turned off), that will run every day at 10 pm. This button can of course be pushed manually, but when the automation is turned on, you can literally set it and forget it: every evening, any days that reach the limit set (to be explained in the next section) will automatically be blocked off on your calendar.
All you have to do is remember to add more rows once a month...or automate this. I’ve thought of doing it and may get around to it some day....but it’s the only time I check on the doc, so for now am leaving it as is.

Now for the juicy parts. There are lots of great things going on in this table, so let’s touch on them all:
Days are added via controls mentioned above, and Day of Week is a formula
I added formatting to make it easier to distinguish between weekdays (white) and weekends (grey)
the current day is a dark grey so easy to find
Events and Duration are both rollups from the table
Limit Reached? is where you decide on when to consider any given day as booked
The formula is currently set to consider any day that has 5 or more events or a total of 300 or more minutes of events to be booked.
You can easily adjust this up or down, as I have, given my client load and/or the types of work I needed to do at a given time.
Slack Notification, as the name implies, sends a slack notification alerting that a given day has reached its limit. This can be removed or message updated as suits you. This button is only enabled when the limit is reached (ie, Limit Reached checkbox is true).
Calendar Event is the button that creates the all day event called “Meeting Limit Reached” on your calendar. This button is also only enabled when the daily limit is reached.
Notified? gets triggered when you (or the automation) presses the “Push All Buttons” button, and it then disables the buttons for that row. (You can also press each button individually, but then this will not be automatically checked off and will need to be done manually.)
Modified On just shows you at a glance when a row was last updated and can be hidden if not needed.

Calendar Management

There you have it.
I hope you find this helpful. If you have any questions, and/or any feedback, feel free to email me (
And just a warning before I leave you to your calendaring: even with this tool, overbooking is possible since you can obviously ignore the “Meeting Limit Reached” event. I have unfortunately done this more times than I should have, so I hope you are a better protector of your time than I’ve been...and I will continue to strive to do better.
Stay healthy and safe.

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.