Launched: Improvements to Subtables

Subtables in Coda give you a powerful and intuitive way of managing connected data such as tasks for a project, but we know that they can have a tricky learning curve. As part of our ongoing efforts to make Coda simpler and easier to use, we’ve added a number of improvements that make it much easier to discover, setup and use subtables:

  • Subtables can now be enabled on default layouts, eliminating the need for a custom layout. You can also easily see the connected data in any of our supported views, such as timeline, calendar, and card views.
  • The process of adding or choosing rows for a subtable is now smoother, more consistent, and requires fewer steps. You can also quickly add new rows with just a single click.
  • You can now easily re-order data in subtables.
  • Rows can be dragged and dropped between grouped sections in subtables.
  • Many other smaller fixes and quality of life improvements have also been included in this update to make the subtable experience better for you and your collaborators.

With these improvements, we hope that using and editing subtables is more accessible than ever. Try them out today and let us know how they help you manage connected data in Coda more effectively!

Sub table - default layout

Sub table - add row

Sub table - drag and drop


Woo, thank you! Subtable reordering was a recent pain point.


Working with Subtables was the FIRST and and most important concept I learned when I started using Coda!

My Projects have Tasks - my Tasks have Sub-tasks; My Projects, Tasks and Sub-tasks also have Notes that can be added to each (a Notes sub-table for each).

Thank you so much for continuing to make the use of Sub-tables easier to use in Coda!

The one thing I ran across w/my use of Sub-tables was my “parent” tables (Projects & Tasks) were not having their modified timestamps updated, for example when adding say a Note to a Project or Task. (I consider adding a new Note or modifying a note for a particular Task being an update to that Task as well, since I noticed when searching for the “latest updates”, that people had added new notes, but the Task’s modified date was from weeks ago when the task was originally created! :astonished:)

I had to create intricate formulas to lookup ALL my related sub-table items and rollup their modified timestamps, and modify the main table’s modified timestamp to reflect the latest sub-table modifications:


I wish Coda, perhaps as an option, could update the Parent table’s Modified timestamp automatically account for sub-table modifications!

As always, thanks for making, and keeping Coda Fresh & New-Sexy! :+1:


I was struggling with reordering rows in subtables, adding new ones and finding existing ones from the original table.

1 Like

Great update! Used to take multiple roundtrips to configure columns for subtables, so much easier to use now.

1 Like

Great work! This is will be game changer.

One thing is missing from this, see summarized column in subtable too. For christmas please :christmas_tree: :santa:


Do you guys have any plans to support subtables inside forms? I’ve had some instances where I needed to use them, but it’s not yet supported.


Same, as an e-commerce company we need it for a lot of forms. Example: I have a form for registering returns, where I want our staff to list each product that was returned, the quantity of each item and if it’s possible to sell it again or not. Right now I have to create 10x3 fields for that and hope the returned items dont exceed 10pcs. Having a subtable inside a form would eliminate this issue and save a lot of pain. It’s also very hard to create statistics for what items are being returned etc without subtable inside the form.


i also agree with you
summarized column in subtable will be great


Hey @William_Bell ,

What you want can be much simpler than what you have done:
Step by step:
Add a date-time field to your main table and name it something like LastModifiedSubTableName
Add a formula to that field that looks something like this:
Subtable.Filter(currentvalue.SomeField = thisRow.SomeField).ForEach(Modified(thisRow)).Max()
That is not very complicated and works like a charm.

Greetings, Joost


Hi Joost, thanks for your suggestion - I was learning Coda’s formulas at the time w/help from @Pch, who showed me the ListCombine function and a bunch of other tips. :+1: :hearts:

Coda has such a marvelous and talented community!

1 Like

hi @William_Bell , you have been served by one of the best! :wink:


Yes! This fixes a key flow-breaking behavior, and now I can rip out pages/tables/buttons we added just to re-order. Thank you Coda!

Great! Please enable the filter bar in sub-tables! I’d use this feature in every build. Right now I still have to add separate columns in the primary table to allow a user to search/filter the sub-table.


just, even if i’m a dev and i built enourmous complex docs on coda and lookups is a very well known concept for me, it still is counter intuitive for me to add a new row / link a new row in a table in a detail view. And I also really struggled to teach/explain it to my 21yo dev/ux/pm students in my no-code class…

I think a solution would just be to find and display better wordings. For example:
“+ Add new” could become “+ Create a new Task linked to Help Content Creation” (Add a new [table name] linkedin to [row title]) for a verbose version,
or “Create a row and attache it to this row” / “Create new attached row” / “Create new selected row” / Create new /…

And I think the worst is the “v” to select an existing row, the select dropdown should definitely have a label, “v Attach an existing row” / “v Add existing row” / “v Add new linked row from existing rows” / “Link another row” / “:mag_right: Link row”


Yes, please, I really miss this!

yes, I also miss this!

Another vote here to make subtables editable in Forms!


This is the most meaningful update to the Detail view we’ve seen - thank you team!!

I apologize if this is documented somewhere, but I’m trying to use the order of items on a subtable to drive calculations within the column. In a “regular” table this is possible using the OrderID property, but it seems the formulas in the table don’t have the context of the row they’re order in a subtable.

I am able to see and use the items from the subtable in order in other columns on the detail view where the subtable is embedded, and I even tried to use a helper column below the subtable to let each item of the subtable lookup it’s order id from the helper column list, but nothing seems to work for me. For example the formula for this Google Maps Embed pack works fine on the detail view where a subtable of “Itinerary” is linked. If there are more than two entries in the subtable, it adds the additional ones as waypoints and you simply drag them to re-order.

[Google Maps Embed]::Directions(
thisRow.Itinerary.Count() > 2,
thisRow.Itinerary.Slice(2, thisRow.Itinerary.Count() - 1)
[Event Destination].Address

However, if I want the sub-table to show driving time between rows, the context changes to the whole table where other event/destination combos from other detail views are mixed. I know I could manually fix previous row dependencies, but it’s not as elegant/intuitive as dragging. So that’s when I tried looking up the index value from a helper field on the event, where it can see the subtable elements and order, but couldn’t get it right.

Any thoughts? Thanks!