Coda with two docs — always

Split data entry from data viewing: no more modals

Christiaan Huizer
6 min readFeb 4, 2024

--

Already for a while Coda makers wrestle with how to keep data out of sight. The recent update on the search box in a doc was somehow peculiar.

We’re always looking for ways to make it easy for you to find what you need on Coda.

The announcement ignored an ongoing discussion on how to disable this functionality.

I argued before that the Coda set up on how to keep data out of sight is misleading. Coda introduced user sensitive filters, which are respected by AI, but ignored by search and do not relate to how modals are shaped.

This discussion is not about security. It is about ensuring the integrity of a data modal.

Makers craft a doc to support users and decide what users should see and in what order. When users get access to information that is confusing or not meant for them (but for their boss or a team member) a maker will think twice before using Coda again.

Saying that Coda is mainly good for OKRs and Wiki logic is unfair seen the many functionalities if offers. However there are limitations that shape best practices and in this blog we share a few.

When you gather data and you want to make the results of the gathered data visible, you may consider at least two docs. One doc with forms to enter data and a second doc with a few visible pages for showing data. In this second doc, we don’t use modals.

No more modals for data entry

This approach avoids the usage of modals. Although they look nice, you are just one click away from the table that is mostly not meant to be seen. The alternative for a modal is a form. You can put the forms inside a second Coda doc, but also on your web site or share it via email. Although Coda forms are not as versatile as many form oriented solutions, they are good enough.

Transpose data

You need to learn how to transpose data and how to use helper tables to distribute the data correctly over rows using a button that counts the items per cell and distributes them over rows via Addrow().

When data gets in, your data is often not structured in line with best practices for tables. Examples in my blog. Once you see how this works, you are ready for what follows next.

Showing only relevant data

Using controllers and canvas functions enable you to show quite a lot of data. The controllers are of the typ ‘relations’, the previous lookup controllers. They permit for data you can relate to via other controllers and or filters inside the controllers, including buttons. You reference the name of the controller and you best come up with a naming logic for controllers that works for you.

Filtering data in a relation is not the easiest of all things. I wrote a few times about it already, like this one. An example may help.

One of my relations is about the legal state a client lives in. This can be the USA or Canada and you only want states related to the country of choice and not all countries. You filter the state on the selected country.

example filtering on other fields

Relation controllers are a great tool to offer choices. Buttons we only use to fill out and clear a show table on the same page. I define a show table as table that has no links to other tables, other than it contains a relation column, which you cannot access since we locked the page. The only remaining leak is the search box. The show table is empty when nothing is selected. In this table we have buttons (per row) resembling radio boxes permitting the user to select one. Via canvas functions additional info is shown.

using controllers

It took me some time to see the beauty of this approach, but a few controllers and a show table together ensures that your user stays on this page is does not get lost in tables the user needs not to be in.

In the docs we craft, the users only see a few pages, all the rest is hidden and should remain hidden and should ideally not be accessible via search.

One doc, one task

As you can imagine, in an earlier version I had modals showing data, but that resulted in confusion. Users arrived at places they should not. Splitting data entry and data visualisation honors a basic principle one doc, one task. By the way, we decided to ban all modals in our docs for the time being. Once Coda fixes a few things (and not only search) we may reconsider it, but I am afraid it won’t be any time soon.

Use the most up to date version

Imagine you enter wrong data, let’s say a birthday date via a form. What to do? Well the easiest thing is to submit the right birthday for that person afterwards. We now have two entries.

The form is based on a helper table that via a button transposes the data and adds it to the main table. The main table has a row based approach unlike the helper table which has a column based approach. When we present data, we filter on the most recent version in the main table.

Two docs do the job

We end up with two docs. One is the data entry doc for the data entry clerks with only forms distributed over several pages. The second doc has a few visible pages, about 4. Controllers, show tables and a few buttons do the job. No modals, no links to real tables or views of real tables.

one form per page

You need to prepare your work carefully to make sure it all runs well for your data entry clerks. Be aware that this set up is time consuming. What is simple for the users requires serious considerations on your behalf as maker. It is not for everybody. When you are reading this as a Coda consultant my advice is not to go below $ 10.000, it takes quite some time before you have it all set up properly.

I am a strong believer in that limitations force a stronger outcome. This approach proves that Coda modal leaks forced me to create a robust and better alternative. It is interesting for me, but would I be the the CEO of Coda, I would take a different turn.

My name is Christiaan and blog about Coda. Since the summer of 2023 often (but not only) about how to Coda with AI to support organisations dealing with texts and templates. The latest Coda AI update was on Dec 7, 2023.

Why I focus on Coda AI you can read here: ⤵️

I hope you enjoyed this article. If you have questions feel free to reach out. Though this article is for free, my work (including advice) won’t be, but there is always room for a chat to see what can be done. You find my (for free) contributions to the Coda Community and on Twitter.

Coda comes with a set of building blocks ー like pages for infinite depth, tables that talk to each other, and buttons that take action inside or outside your doc ーso anyone can make a doc as powerful as an app (source).

Not to forget: the Coda Community provides great insights for free once you add a sample doc.

--

--

Christiaan Huizer

I write about how to Coda . You find blogs for beginners and experienced makers. I publish about 1 / week. Welcome!