Is the end of Coda Cross Docs near?

Add or update rows in your target doc using a webhook

Christiaan Huizer
7 min readMar 15, 2023

--

In my previous blog on my for free webhook pack, see below, I explained how to set up a webhook that moves data row by row to the next doc. The webhook works fast. It takes about a minute and that is faster than the 60 minutes the automation takes. In this set up only changes are pushed, no needless automations are consumed that run day & night every hour. This solution has no limit of 10K rows, it works on any table, regardless of the size, unless Coda decides to cap it one way or the other.

This solution supports per column one image URL or one image or one file, but not multiple images of image URLs or files per column. Just make sure the column settings in the two tables match. The technical reason is that Coda does not communicate to the receiving party where a column begins or ends.

This pack may replace many cross doc related actions. Keep on reading to find out more about it!

The webhook pack is — as said — for free and accessible via the link below.

Cross Doc Difficulties

The Cross Docs pack allows you to bring in a sort of duplicate of the source table in your target doc together with the updates you make in the source doc. However not real time (once every 60 minutes max) and even after refreshing it takes a while before the updates are visible. You also have to make views of the main table and to cross doc these views to avoid that others see more than you want them to see. Last but not least, cross docs are limited to 10K rows. As sais before, this solution works on any table, regardless the size and you define which rows are pushed to which doc. That makes it highly flexible. You can push one row to multiple docs using multiple webhooks.

[Update sept 2024: Coda has enhanced the Cross Doc pack, streamlining your workflow. You no longer need views of tables in your source document; instead, you can filter rows and select specific columns directly in the target document. The improved settings allow filtering up to 10,000 rows per target document. Even with a master table of 50,000 rows and five target documents, each target can now hold 10,000 rows.

As showcased in the referenced link, two-way sync is also available, but only when you have access to both the source and target documents. Coda promises this sync is lightning-fast, but this is not yet the case.]

While this update is a significant improvement, there’s still room for growth. For instance, referencing users via a people column is only possible when you explicitly provide their email addresses (either through cross-doc functionality or webhooks). As Joost points out, Coda has a few more kinks to iron out before the experience is truly seamless.

For good reasons, gifted makers have tried (or are still trying) to improve the cross doc experience [The described update has the potential to render this pack obsolete in the future].

I admire the effort, but I am not a fan of this approach, too difficult for my taste and it does not really solve the issue. On top, unlike in tools as AirTable, in Coda there is little room for descriptions to document your process and in complicated set ups, you easily get lost. I wrote about this shortcoming in the blog you find below. [update 2024: you can add descriptions — plain text — to your automations.]

In what follows I introduce a mechanism that may replace most of the actual cross doc logic with something simple and speedy. Every maker can use it. You install the pack, you create the button and set the automations.

Add Or Modify Rows

Coda offers the function AddOrModifyRows() in her toolbox and this is the one I apply in the example. That said, in my work for clients I also use an if statement to check if a value is present, if not we add, if present we modify. This technique proceeds faster since it does not have to recalculate the entire the complete table for each row. Most users won’t have 10K plus tables and certainly below 1K rows the proposed solution works fine.

All you need are two docs, two tables, the webhook pack and an automation in the source doc and one in the target doc. Let’s dive into it!

The set up

Below the set up to follow in a few basic steps:

  • You define the table in your source doc from which you want to push rows to the target doc.
  • In this table you define key that serves as the match value in the target table.
set up in source document
  • the match value we generated in the source table is only necessary when this table is subject to an addOrModifyRow logic. To have a coherent approach, I create all my tables that are webhook related in this manner.
  • In the target doc, I don’t have a key, but I have a match value.
  • In the target doc you set up your webhook triggered automation.
  • The match value is the first column in our source doc.
  • The value we are looking for is written as:
match.Contains(thisRow.[Step 1 Result].ParseJSON("$.column1"))
  • The rest of the logic is rather straightforward. To proceed fast I copy past the line above to any next column (I did not yet give a name to the columns in my target doc, so they have names as column 3, column 4 etc) and every time I change the number.
  • Then I push the button in the source doc, the row comes in and I change the name of the column.

Voila, this all goes super fast and is efficient, see below.

This logic makes it easy to to create all kind of views in your source doc and by adding a button that only presses the visible buttons (based on all sorts of filters) you can push the information of your liking to the next doc (s).

Do you need a button for the webhook?

Actually you don’t. The button logic can be reworked into an automation triggered by row change. It means you replace the shown logic by an automation logic. As such you have your set up fully managed by two automations and thus without any button.

  • sending the data over when the row changes
  • adding or modifying a row based on a webhook trigger

The button is easier for those who want to disable the button based on certain criteria and are a bit afraid to use filters in the automations. That is why I showed the easiest replacement logic for cross docs.

In short, when you put this in place, you may have a superior experience compared to the cross doc pack or any related solution.

My name is Christiaan and I support SMB with calculations (budgets and — Human Resource — planning) and I prefer using Coda to get the job done.

I hope this article was informative and helpful. Did it help you to solve a problem you unlike would have solved other ways? What about a donation?

My name is Christiaan, and I regularly blog about Coda. While this article is free, my professional services (including consultations) are not, but I’m always happy to chat and explore potential solutions. You can find my free contributions in the Coda Community and on X. The Coda Community is a fantastic resource for free insights, especially when you share a sample doc.

Coda Expert Christiaan on “The end of Coda Cross Docs”

--

--

Christiaan Huizer
Christiaan Huizer

Written by Christiaan Huizer

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

Responses (1)