🚀 New Pack Preview: FetchCodaData() - Pull live data from any Coda table with a formula, no Cross-Doc Sync Table required

Hey Coda Makers! :waving_hand:

I built something for my own workflow and wanted to share it with the community to see if others find it useful, and to get your feedback on how to make it better. This is just a preview/demo. Thanks for your feedback!

FetchCodaData() lets you pull live data from any Coda table using a simple formula. No Sync Tables, no Cross-doc - just a formula that returns JSON or CSV.

My questions for you

  1. Would this be useful? How?
  2. Is there another method that’s better?

The Formula

The formula fetches the data on demand and returns it as a structured string you can parse, display, or feed into other formulas.

=FetchCodaData(
  docId: "d9bejBCT965",
  tableId: "grid-pqRst-U",
  columnIds: "c-f928331,c-f1298392",
  filter: 'c-f928331:"Active"',
  format: "json"
)

Why I built this

I manage dashboards for several clients, each with their own Coda doc containing their data. I wanted a central “hub” doc that could:

  1. Pull the latest data from each client’s doc

  2. Dynamically build prompts with that data

  3. Send those prompts to Claude AI

  4. Get back interactive HTML/CSS/JS dashboards

With this Pack, that entire pipeline is automatic and always uses the freshest data.

How it’s different from Cross-doc

  • Cross-doc: Sync Tables that periodically refresh on a schedule. Great for keeping docs in sync, but requires manual setup for each table and doesn’t give you raw, on-demand access to the data.

  • FetchCodaData: Formula-based, on-demand fetching. No syncing, no tables—just call the formula when you need fresh data. Perfect for dynamic workflows, one-time queries, or feeding data into other processes.

Key features

  • Flexible filtering - Use Coda’s query syntax to filter rows (e.g., c-f928331:"Active" or c-f902194:>10000)
  • JSON or CSV output - Choose the format that works best for your use case
  • Auto-pagination - Handles up to 5,000 rows across multiple API calls automatically
  • Rich metadata - Every row includes row ID, name, browser link, and timestamps
  • Hybrid authentication - Use your Coda account by default, or pass an API key for multi-doc access
  • Smart error handling - Returns partial data with warnings if timeouts occur

Real-world use cases

Here’s where I think this could be valuable:

  • AI/LLM integration: Fetch fresh data, build prompts dynamically, and generate AI-powered outputs (my main use case!)
  • Multi-client workflows: Pull data from different client docs into a central dashboard for unified reporting
  • Cross-doc aggregation: Combine tables from various sources for analysis without maintaining Sync Tables

Current limitations

Being transparent about what this doesn’t do (yet):

  • Column IDs required: You need to know the column IDs (like c-abc123), not just column names. The metadata includes the mapping, but it’s not as user-friendly as typing “Name” or “Status.”

  • Filter syntax: Uses Coda’s API query format, which supports single equality/comparison operators but not complex AND/OR chains.

  • Max 5,000 rows: API and performance limitations cap the results.

  • 50-second timeout: Long-running requests may return partial data with warnings.

Output format examples

JSON format:

{
  "data": [
    {
      "_rowId": "i-abc123",
      "_rowName": "Alice Cooper",
      "c-f928331": "Active",
      "c-f938210": 45000
    }
  ],
  "metadata": {
    "rowCount": 150,
    "timestamp": "2025-10-20T15:45:30Z"
  }
}

CSV format:

# Source: Doc AbCD, Table grid-xyz
# Rows: 150
_rowId,_rowName,c-f928331,c-f930738
i-abc123,Alice Cooper,Active,45000

Next steps

If there’s interest, I’m happy to:

  • Polish the documentation

  • Add the features you suggest

  • Publish it properly to the Pack Gallery

  • Create example docs showing common use cases

For now, I’m treating this as a preliminary launch to gather feedback. Is this something you’d find useful? What would make it genuinely valuable for your workflows?

Thanks for reading, and I look forward to your thoughts! :raising_hands:

13 Likes

hi @Jon_Dallas ,

the doc is invite only

there are webhook packs that bring in data as well, how does your solution differ from the webhook logic? Maybe it is simpler to set up?

In the end the Cross Docs issue has to be solved by the Coda team, it is on their to do list (already for a while).

cheers, Christiaan

2 Likes

Whoopsies, good catch! Just fixed the share settings. Thanks @Christiaan_Huizer!

I do see that similar functionality can be found in your CodaExpert_Webhook Pack

  1. The primary difference is the direction of the data flow: The webhook pack pushes data from the source doc, whereas this new pack fetches data.
  2. Also, there are no automation rules required (like with webhooks).
  3. Also, tbh, I simply find Coda’s webhook infrastructure to be unreliable sometimes.
  4. And lastly, Cross-doc requires a doc maker/admin to actually add a sync table to their doc… I create a lot of Docs for Coda users. This packs allows me to publish docs as web apps that let users enter their own docids/tableids and load their info into my web app.

Thanks for the brainstorming!

2 Likes

thanks @Jon_Dallas , it an interesting concept and indeed it will bring data rather fast from other tables. The logic assumes that all participants or have access to the main doc or share with you ids (doc & table). Well found!

in your context it may work very well, but I am afraid that for less technical users the generation of a json file is not helpful. When tables change, you need a new version and process that again, which may not be so easy for most people.

Cheers, christiaan

3 Likes

Bravo @Jon_Dallas, well done indeed.

This is an excellent utility to have in the tool box.

One question; I thought the API specification allowed us to optionally use NAMES instead of IDs for docs, tables, and columns - am I mistaken?

But an excellent pack - many thanks indeed!

Respect

Max

1 Like

v2 released!

Hey, thanks so much for the feedback @Christiaan_Huizer and @Agile_Dynamics! :folded_hands:

4 big improvements based on your feedback:

  1. Dropdown formulas that auto-populated with the docs/tables/columns (no typing IDs! - I think this is so cool)
  2. Accepts column/table names OR columnd/table IDs
  3. Lets you choose which metadata to see
  4. I added better handling for CSV output

5 Likes

even more brilliant

well done @Jon_Dallas

hi @Jon_Dallas , thanks for the update, although I appreciate the dropdowns you added (good work) it may not solve the output issue for non technical users. The fetched data is static, not dynamic and so users may need to learn how to update exisiting tables with this data. That seems the real bottleneck to me, not the id logic. chqers, christiaan

2 Likes

Very much appreciate the continued feedback @Christiaan_Huizer! :folded_hands:

To simplify the output for non-technical users, I’ve added a new formula called GetCellValue(), which returns the value of any cell in any doc/table/column/row.

3 Likes