Reference · Tools
Coda
Manage table rows, view rows, formulas, and controls in Coda documents
The Coda node connects your BusyBot workflows to Coda documents, letting you create, retrieve, update, and delete table rows, pull formula values, and interact with controls and buttons programmatically. You could, for example, automatically append a new row to a Coda project tracker whenever a form is submitted elsewhere. It covers four resource types: Tables, Views, Formulas, and Controls.
- Node type
- Action
- Parameters
- 32
- Outputs
- Output, Error
- Credentials
- Coda API
Coda
Manage Coda document data: tables, views, formulas, and controls.
Overview
Coda is a collaborative document/spreadsheet platform. This tool connects to the Coda API v1 to manage data within Coda docs. It supports CRUD operations on table rows, view rows, column metadata, formula values, and control values. Resources: Table (create/get/getAll/delete rows, get/getAll columns, push button), View (get/getAll views, get/getAll/delete/update rows, get columns, push button), Formula (get/getAll), Control (get/getAll).
Category: Productivity
Tool Name: coda
Version: 1
Appearance: Icon: si-coda | Color: #F46A54
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Coda API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Control | control |
| Formula | formula |
| Table | table |
| View | view |
Operations
| Resource | Operation | Value | Description |
|---|---|---|---|
| Table | Create Row | createRow | Create/insert a row |
| Table | Delete Row | deleteRow | Delete one or multiple rows |
| Table | Get All Columns | getAllColumns | Get all columns in a table |
| Table | Get All Rows | getAllRows | Get all rows in a table |
| Table | Get Column | getColumn | Get a column |
| Table | Get Row | getRow | Get a row |
| Table | Push Button | pushButton | Push a button in a table row |
| View | Delete Row | deleteViewRow | Delete a view row |
| View | Get | get | Get a view |
| View | Get Columns | getAllViewColumns | Get all view columns |
| View | Get Many | getAll | Get many views |
| View | Get Rows | getAllViewRows | Get all view rows |
| View | Push Button | pushViewButton | Push a button in a view row |
| View | Update Row | updateViewRow | Update a view row |
| Formula | Get | get | Get a formula |
| Formula | Get Many | getAll | Get many formulas |
| Control | Get | get | Get a control |
| Control | Get Many | getAll | Get many controls |
Parameters
Table: Create Row
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Options (options) | collection | No | {} | Optional settings for this operation. |
| — Disable Parsing | boolean | No | false | Whether the API will not attempt to parse the data in any way. |
| — Key Columns | string | No | — | Optional column IDs, URLs, or names specifying columns to be used as upsert keys. If more than one, separate by comma. |
Table: Delete Row
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Row ID (rowId) | string | Yes | — | ID or name of the row. Names are discouraged because they are easily changed by users. If using a name, be sure to URI-encode it. |
Table: Get All Columns
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Table: Get All Rows
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Options (options) | collection | No | {} | Optional settings for this operation. |
| — Query | string | No | — | Query used to filter returned rows, specified as <column_id_or_name>:<value>. If using a column name, you must quote it (e.g., “My Column”:123). |
| — RAW Data | boolean | No | false | Whether to return the data exactly as received from the API. |
| — Sort By | options | No | — | Specifies the sort order of the rows returned. |
Options: createdAt, natural | ||||
| — Use Column Names | boolean | No | false | Whether to use column names instead of column IDs in the returned output. |
| — Value Format | options | No | — | The format that cell values are returned as. |
Options: simple, simpleWithArrays, rich | ||||
| — Visible Only | boolean | No | false | Whether to return only visible rows and columns for the table. |
Table: Get Column
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Column ID (columnId) | string | Yes | — | The ID of the column. For pushButton, this must be a button-type column. |
Table: Get Row
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Row ID (rowId) | string | Yes | — | ID or name of the row. Names are discouraged because they are easily changed by users. If using a name, be sure to URI-encode it. |
Options (options) | collection | No | {} | Optional settings for this operation. |
| — RAW Data | boolean | No | false | Whether to return the data exactly as received from the API. |
| — Use Column Names | boolean | No | false | Whether to use column names instead of column IDs in the returned output. Fragile if columns are renamed. |
| — Value Format | options | No | — | The format that cell values are returned as. |
Options: simple, simpleWithArrays, rich |
Table: Push Button
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. Find it in the URL: https://coda.io/d/DocTitle_d<docId> |
| Table ID | string | Yes | — | The ID of the table. Find via Coda > Doc > Table settings. |
Row ID (rowId) | string | Yes | — | ID or name of the row. Names are discouraged because they are easily changed by users. If using a name, be sure to URI-encode it. |
Column ID (columnId) | string | Yes | — | The ID of the column. For pushButton, this must be a button-type column. |
View: Delete Row
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
Row ID (rowId) | string | Yes | — | ID or name of the row to operate on. |
View: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
View: Get Columns
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
View: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
View: Get Rows
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Options (options) | collection | No | {} | Optional settings for this operation. |
| — Query | string | No | — | Query used to filter returned rows, specified as <column_id_or_name>:<value>. |
| — Use Column Names | boolean | No | false | Whether to use column names instead of column IDs. |
| — Value Format | options | No | — | The format that cell values are returned as. |
Options: simple, simpleWithArrays, rich | ||||
| — RAW Data | boolean | No | false | Whether to return the data exactly as received from the API. |
| — Sort By | options | No | — | Specifies the sort order of the rows returned. |
Options: createdAt, natural |
View: Push Button
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
Row ID (rowId) | string | Yes | — | ID or name of the row to operate on. |
Column ID (columnId) | string | Yes | — | The ID of the button column to push. |
View: Update Row
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| View ID | string | Yes | — | The ID of the view. Find via the Coda API or doc settings. |
Row ID (rowId) | string | Yes | — | ID or name of the row to operate on. |
| Key Name | string | Yes | columns | The name of the key in the input JSON that contains the column-value pairs to update. Defaults to “columns”. |
Options (options) | collection | No | {} | Optional settings for this operation. |
| — Disable Parsing | boolean | No | false | Whether the API will not attempt to parse the data in any way. |
Formula: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| Formula ID | string | Yes | — | The ID of the formula to retrieve. |
Formula: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Control: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
| Control ID | string | Yes | — | The ID of the control to retrieve. |
Control: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Doc ID (docId) | string | Yes | — | The ID of the Coda document. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to a given limit. |
Limit (limit) | number | No | 50 | Max number of results to return. (shown when Return All is false) |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
The Coda response becomes the output item’s JSON — it replaces the incoming JSON rather than being nested under a property, so reference fields directly, e.g. {{ $json.id }}. Binary data already on the input item is forwarded to every output item.
Seven operations fan out, emitting one output item per record returned: Table: Get All Rows, Table: Get All Columns, View: Get Many, View: Get Rows, View: Get Columns, Formula: Get Many and Control: Get Many. When one of them matches nothing, it produces no output items at all. Every other operation emits exactly one output item per input item.
| Resource / Operation | Output item JSON |
|---|---|
| Table: Create Row | The input item, passed through unchanged. |
| Table: Delete Row | The input item, passed through, plus _deleted: true. |
| Table: Get All Columns | One item per column object. |
| Table: Get All Rows | One item per row: id plus one field per cell value — or the raw API row object when RAW Data is on. |
| Table: Get Column | The column object. |
| Table: Get Row | id plus one field per cell value — or the raw API row object when RAW Data is on. |
| Table: Push Button | The button response, or success: true when the API returns no body. |
| View: Delete Row | The delete response, or success: true with deleted: true when the API returns no body. |
| View: Get | The view object. |
| View: Get Columns | One item per column object. |
| View: Get Many | One item per view object. |
| View: Get Rows | One item per row, shaped like Table: Get All Rows. |
| View: Push Button | The button response, or success: true when the API returns no body. |
| View: Update Row | The input item, passed through unchanged. |
| Formula: Get | The formula object. |
| Formula: Get Many | One item per formula object. |
| Control: Get | The control object. |
| Control: Get Many | One item per control object. |
Two operations send data instead of returning it, which is why they pass the input item straight through:
- Table: Create Row builds the new row from the input item’s own top-level fields — one cell per field, using the field name as the column. Fields whose name starts with
_are skipped, so error and metadata fields never become columns. - View: Update Row reads the column-value pairs from the input item property named by Key Name (
columnsby default), so the upstream item needs a nested object there.
Row-returning operations key each cell by column name unless you add Use Column Names to Options and switch it off, in which case column IDs are used instead.
Usage Examples
- Get all rows from a Coda table
- Create a new row in a Coda table
- Delete a row from a Coda table
- Get all views in a Coda document
- Read a formula value from a Coda document
- Push a button in a Coda table row
- Update a row in a Coda view
Example Configuration
Read a filtered, sorted page of table rows — each row arrives as its own item:
{
"type": "coda",
"parameters": {
"resource": "table",
"operation": "getAllRows",
"docId": "AbCDeFGH",
"tableId": "grid-pqRst",
"returnAll": false,
"limit": 50,
"options": {
"query": "Status:\"Active\"",
"sortBy": "createdAt",
"useColumnNames": true,
"valueFormat": "simple",
"visibleOnly": true
}
}
}
Upsert a row keyed on the Name column — the cells come from the incoming item’s fields:
{
"type": "coda",
"parameters": {
"resource": "table",
"operation": "createRow",
"docId": "{{ $json.docId }}",
"tableId": "grid-pqRst",
"options": {
"keyColumns": "Name"
}
}
}
Update a view row from a columns object on the incoming item:
{
"type": "coda",
"parameters": {
"resource": "view",
"operation": "updateViewRow",
"docId": "AbCDeFGH",
"viewId": "table-abc123",
"rowId": "{{ $json.rowId }}",
"keyName": "columns",
"options": {
"disableParsing": false
}
}
}
Read a single formula value:
{
"type": "coda",
"parameters": {
"resource": "formula",
"operation": "get",
"docId": "AbCDeFGH",
"formulaId": "{{ $json.formulaId }}"
}
}
List every control in a doc, one item per control:
{
"type": "coda",
"parameters": {
"resource": "control",
"operation": "getAll",
"docId": "AbCDeFGH",
"returnAll": true
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage table rows, views, formulas, and controls in Coda documents via the Coda API.
Error Prevention Tips
- Use row IDs instead of names when possible (names can change)
- URI-encode row names if you must use them
- Verify document, table, and view IDs before operations
- Check button column types before pushing buttons
Frequently asked questions
What credential does this node require?
It uses the Coda API credential type (codaApi), which wraps your Coda API token. You generate this token from your Coda account settings and store it once in BusyBot — every Coda node in your workspace can then reuse it.
Should I reference rows by name or by ID?
Use row IDs wherever possible. Row names can be edited by anyone with access to the Coda document, which will silently break any workflow that references the old name. IDs are stable. If you must use a name — for example, when bootstrapping a workflow before you have an ID — URI-encode it to avoid errors with spaces and special characters.
What happens when an operation fails — does the workflow stop?
The node has two separate outputs: Output and Error. A failed operation routes to the Error output rather than halting the entire workflow, so you can branch on failures — for instance, logging the bad row data or sending an alert — without losing the rest of your execution.
Can I click a button column in a Coda table from a workflow?
Yes. The Table and View resources both expose a 'push button' operation. Before using it, confirm that the target column is actually a button-type column in Coda; pushing against a non-button column will produce an error. Use the get/getAll column operations first if you need to verify column types programmatically.
What's the difference between the Table resource and the View resource?
The Table resource operates on the underlying Coda table directly and supports creating rows, which the View resource does not. Views are filtered or sorted projections of a table; the View resource lets you read, update, and delete rows within that filtered context, and push buttons, but you cannot create new rows through a view. If you need to add data, use the Table resource.
Build with the Coda node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Coda API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.