icon picker
How to build scalable, interactive docs

Learn how to build a doc that grows with your team
📖 15 min read

A new way to work

Today’s world of work today looks different than it did a few years ago. The shift to hybrid work has sparked the need for better ways of collaborating and information-sharing, supported by more powerful, flexible tools.
The introduction of productivity software promised to improve online collaboration by streamlining teams’ processes. But it actually multiplied the work. Today, teams rely on dozens of docs, apps and communication mediums to accomplish overlapping objectives.
Prepackaged solutions make you adjust your processes to fit into their box, while other proprietary tools require talking to IT every time you need an update. Technology is entering a new phase where people won't want to buy one-size-fits-all solutions which are actually one-size-perfectly-fits-noneーthey want to make it themselves. And now with Coda, they finally can.

More than a doc

A doc in Coda is more than just a doc. It’s the home for all of your team’s needs. Below are the top tips to think about when creating a space for yourself and others that feels like home.
A good home starts with a solid foundation and a strong framework. Use this guide to help you think about building a great “home” for yourself and others.

What we’re covering

⭐ What you’ll learn

How to build a scalable doc
An overview of how data looks and works in Coda

🏗️ What you’ll use



As you work through this guide, you are going to see chips referenced throughout. Chips represent data coming from another location. They can be found in formulas or look-up columns. When you hover over a chip, you will see more information about the data it represents (e.g. what table it’s coming from and what other information is attached to it).
In formulas, chips with the same color come from the same place. Take the screenshot below for example. The Tasks chip and the Summary chip are both green because they are both from the Tasks table.
Screenshot 2023-02-16 at 9.57.58 PM.png

Getting started

Now that you have the intro down, let’s grab our tools and get into it. Create a new doc (type into a new browser tab to see something extra fun!) and naming it “Tasks.”
Note: Only users with 🔧 maker licenses 🔨 can create new docs. If you’re having trouble creating a new doc, reach out to your workspace admin to become a Maker.

🟨 Starting with tables

Tables are the nuts and bolts of your docs. Think of them like a jumping off point for all things database.
The easiest way to create a table is by typing ”/table” anywhere on a page. Let’s make a Tasks table to track your team’s progress on a set of initiatives.

Slash Table (Tasks) on Tand.gif

Once your table is set up, you can rename columns, change their data types and how the table is displayed to suit your team’s needs. For this step, change the Name column to Summary, Column 2 to Assignee, Column 3 to Status, and Notes to Due date.

Tasks column name change.gif

Look at the icons next to each column name - what do you see? We have a capital “T” on your first three columns (Summary, Assignee, Status) and a “page” icon for your last column, now titled Due date. These icons represent Coda’s various . You can change the column type by clicking on the icon.
💡Tip: There is a small bookmark on the Summary column, that designates it the “display column.” We’ll talk about display columns more in the Formulas section.
👈 Click the arrow to learn more about Column types
Next, change your table’s column types as follows:
Assignee to a People column type
Status to a Select list (Coda can even auto-populate your options!)
Due date to a Date column type
No need to change your Summary column, “Text” works in this case

Updating Tasks column types.gif

Our table is looking pretty bare, so we’re going to add some data. Make up a couple of tasks, and assign yourself as the Assignee. Set a Status and a Due date for each; be sure to make a task past due.

When do I use a select list verses a look up?

Great question, internet! Select lists and Look-ups help keep your data consistent as they allow you to choose from a set of options (e.g. different statuses). How does one know when to choose between a Select list and a Look up? Well, internet, like with all things Coda, it’s up to you!
Here are some things to keep in mind:
Select list: use when you only need the list for one table and there is no other data attached to the items in your list.
Look-up: use when you need the same list of data across multiple tables and/or there are other bits of information attached to the items in the list (e.g. Best email for a Contact or a definition of a key term).
💡 Tip: You can always convert a Select list to a Look-up as your doc evolves.

Next time you want to build a task table, you can make Coda do some work for you. Try opening a new page and type “/tasks,” select the “Tasks” template and watch the magic happen.
👈 Click the arrow to save time and learn about Coda’s Templates

Slash Tasks template.gif

✨ Conditional formatting to make your tables ✨ sparkle ✨

Tables and docs that are black and white aren’t classy — they’re just plain old boring. Add conditional formatting to your table by clicking Options located at the top right corner of your Tasks table (if you used the “/Tasks” template, you’ll see pre-populated conditional formatting).
Add a conditional format for your Due date column. If the Due date is before today, set the conditional format to red. Apply the conditional formatting to All Columns.
Conditional formatting of overdue tasks.gif

◻️ Before ◻️

Screenshot 2023-02-24 at 11.43.08 AM.png

✨ After✨

Screenshot 2023-02-24 at 11.40.17 AM.png

👈 Click the arrow to add a little pizzaz with Conditional formatting

💫 Formulas

Our data’s organized in a table. That’s great, but with formulas, we can take our tasks to the next level. 🔼
Let’s see which tasks are In Progress. We’ll start by typing “=Tasks” in the space above your table. Then, you want to use Filter() to pull out the specific information; so, type “.Filter()” after your Tasks. Now, Filter() returns rows based on a true/false prompt. In this case, you are looking at the Tasks table and asking for any row where the Status column is In Progress. Note that capitalization and spelling matter!

Your formula should look something like this:
Screenshot 2023-02-16 at 11.47.48 PM.png

Remember, this formula shows every row (represented by the display column) where the Status column is In Progress. If you want to see somethings specific from the row (like the Assignee) all you have to use is our dot operator to extract out the specific thing.
Screenshot 2023-02-16 at 11.50.13 PM.png
Now your formula will show you the assignees for each task that is In Progress.

If you want to know how many tasks are in progress, you can throw the Count() formula on the end.
Screenshot 2023-02-16 at 11.52.21 PM.png
💡Tip: Try using the Count() formula in a progress bar to visualize your in flight tasks.
👈 Click the arrow to dive into Formulas

🏗️ Structuring your doc

As with building a house, there’s no one way to build your Coda doc. Just like there are tons of different house styles (a-frame, colonial, ranch, etc), there are many different ways to set-up your doc. No matter the style of your build, you need a good foundation, however, and here are some tips for setting up a doc without a leaky foundation.
Start by answering these questions:
Who is the audience you are building for (your team, cross functional, or leadership)?
What key information are you trying to share?
How will your audience use this doc?
Is this doc a write up? Will you use it primarily to deliver information and help drive decision making?
Is this a team hub? How much editing will others need to do?
Is this a project tracker? Who’s doing the tracking? Are there sections of the doc that need to be locked to prevent accidental editing?
Organize your doc with a front-end section and a back-end section. On top of a foundation, a well built home has solid framing to keep the thing standing up! Since we’re building a doc and not a home, our framework will be the front-end (the area that you interact with) and back-end (the “behind-the-scenes” area the makes the doc work).
Set up the back-end. This section houses your “base” tables which you can manipulate in other areas on the doc using “views.” With views in Coda, you (and your team) can see your data exactly how you want, exactly where you want, and everything updates in real time.
Create a new page for your back-end. Title it Back-end.
Move your Tasks table to your Back-end page. In other docs, this might be a project tracker, quarterly objectives and key results, or meeting notes.
💡Tip: You can drag and drop building blocks (like tables, paragraphs, or buttons) in Coda to rearrange them in a given page or to move them to a new page.

Moving Tasks table to backend.gif

Set up the front-end. Go back to your home page. Under your Count() formula, type “/table” and select Tasks. You’ve created a view. Add a few rows to the View of Tasks and make yourself the Assignee. Change the Status to “In Progress” and watch your Count() above the table update.

View of Tasks and adding rows.gif

If you return to your Back-end page, you will see the new rows there as well. If you make any adjustments to either table, both will reflect the changes. Change an Assignee or Due date on your Back-end table and it will match your view on the home page.
Go back to your home page and filter the View of Tasks table to only show tasks where the Current user is assigned. Adjust some values in your filtered view. Again, these updates automatically happen in your back-end view.
User() filter view.gif

🙌 Adding the finishing touches

Now it’s time to make your doc guest ready. While you can always add more pages and more views as you see fit, another scalable option is the filter bar. It’s a great way to make your doc more interactive.
Instead of creating a ton of views, you can add a filter bar to a table that is user specific. This is a great way to keep your doc performant when the structure of the data can be viewed the same way across teams while hiding superfluous data. Because the filter bar can be user specific, you don’t have to worry about messing up others’ views of the table.
Filter bar.gif

Another way to make your team feel at home in your doc is to add some buttons for interactivity. Above your view, create a button to add a row to the View of Tasks table. Type “/button” in the page. Label it “Add task” and choose the “Add row” action. Select View of Tasks as the table to add a row to. Then, toggle on “Open row for editing.” Add another task to your table.
💡Note: If you used the “/Tasks” template, this button is already there. Right click on it to see the button options and to toggle on “Open row for editing.”

Add task button.gif
When a teammate has a new task to add to the table, it’s clear how to add it, and the experience is seamless. Now your doc is ready for guests!

Using the Coda skills from this guide, there is no limit to what you can do.

Try bringing a standing meeting or project into Coda and see how you can keep everyone on the same page (pun intended) w/o the constant pinging/searching through your docs, emails and slack messages

🔑 More Resources

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