- Home
- Resources
- Integrations
- SeaTable
SeaTable n8n integrationAutomate SeaTable with n8n.
A SeaTable base can keep working while nobody has it open. The SeaTable n8n integration exposes 16 operations across 4 resources, from a single row to a base snapshot, an asset upload or a link between two tables. Its trigger watches 3 events, so a new row can start a workflow on its own.
Verified Trustpilot reviews · AI, automation & growth agency
What does the SeaTable n8n integration actually do?
The SeaTable n8n integration links a SeaTable base to a workflow engine that runs on its own. n8n ships two nodes for it: the SeaTable node, which reads and writes your data through 16 operations spread over 4 resources, and the SeaTable Trigger, which starts a workflow when rows or signatures show up in a table.
Both nodes share one credential, a Base-Token you generate once inside SeaTable and then pick from a dropdown.
Take an intake table fed by a form. The trigger fires on newRow, the workflow looks up the company with an HTTP Request, then row.update writes the enriched values back into the same row. Nobody retypes anything, and the table stays the single place where the team looks. A message to Slack at the end of the run closes the loop.
Second pattern: a signature archive. The trigger listens on newAsset in a signature column, asset.getPublicURL turns the stored asset path into a URL, and the workflow files a copy in Google Drive before marking the row as archived. The file never leaves an inbox, because it never went through one.
Third pattern: keeping SeaTable aligned with another data source. A recurring workflow reads contacts from Google Sheets, uses row.search to see whether the person already exists, then branches between row.create and row.update. The same logic works against Airtable or a Postgres table when SeaTable is the operational front end and the database is the system of record.
The node covers rows, base, links and assets. Anything the SeaTable API exposes beyond those 4 resources has no dedicated operation, and that is where the HTTP Request node comes in: it calls any SeaTable endpoint and reuses the same credential through predefined authentication, so you do not manage a second token.
Two limits are worth knowing before you build. The trigger runs on polling, which means n8n asks SeaTable for new items at the interval you choose instead of being called by SeaTable, so a row is picked up with a delay. And the search operation warns that not every column type can be searched, so a filter on an exotic column may need a list plus your own comparison step.
How do you connect SeaTable to n8n?
- 01
Generate a Base-Token in SeaTable
Open the base you want to automate, go to the base options, then Advanced and API Token. The token you generate there is a Base-Token, tied to that base rather than to your user account. Give it Read-Write permission: a read-only token lets a workflow list rows but fails the moment it tries to create or update one. Any SeaTable account works, cloud or self-hosted server.
- 02
Create the credential in n8n
In n8n, open Credentials and pick the SeaTable credential, which uses an API key. Set Environment to Cloud-Hosted or Self-Hosted depending on where your SeaTable server runs, paste the Base-Token into API Token (of a Base), then choose the Timezone of that server. A credential is created once and shows up in the dropdown of every SeaTable node afterwards.
- 03
Point the node at a table
Drop a SeaTable node in the workflow, select the credential, then pick the operation. Almost every one starts with Table Name, a dropdown loaded from the base, and you can switch it to an expression when the table name arrives from an earlier node. The SeaTable Trigger works the same way and adds View Name when you only want part of a table.
What starts a SeaTable workflow?
SeaTable Trigger is the node that starts a workflow when something happens in SeaTable. It listens to 3 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your SeaTable account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
new.*2updated.*1Configuration notes
01Set Up the SeaTable Trigger
The SeaTable Trigger is version 2 of the node and works by polling: n8n asks the SeaTable API for new items at the interval set in Poll Times, at most once a minute, and emits one item per element found. Nothing is configured on the SeaTable side, and a row arrives in the workflow after a delay equal to that interval.
Key parameters
- Event: the parameter that selects which of the 3 events the trigger listens to. There is no wildcard, so one trigger node watches one event.
- Table Name: required, the table being watched, chosen from the list or set with an expression.
- View Name: optional, restricts the watch to one view so rows filtered out of that view never reach the workflow.
- Simplify: returns a trimmed response instead of the raw payload.
- Return Column Names: true returns column names, false returns column keys, which matters because the rest of the workflow reads those field names.
02New Row and New Signature
The new family holds 2 events. newRow fires on rows created since the last poll, which is the entry point for a form table, an order table or a request queue. newAsset fires on new signatures and is tied to a digital-signature column, so a workflow can react the moment a document gets signed instead of waiting for someone to notice.
Key parameters
- Signature Column: required for the signature event, this is the digital-signature column being tracked, picked from the list or set with an expression.
- Table Name: the table holding the rows or the signature column.
03New or Updated Row
The updated family holds 1 event. updatedRow covers rows that were recently created or modified, so it catches the edit that a creation event misses: a status moved to Done, an amount corrected, an owner reassigned.
Key parameters
- Table Name: required, the watched table.
- View Name: a view built on a filter turns this broad event into a narrow one, since only rows entering that view are returned.
- Return Column Names: leave it on when the branch that follows tests a human-readable column instead of a column key.
What can the SeaTable node do?
The SeaTable node exposes 16 operations across 4 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Update | Add | Delete | Collaborator | Public URL | Get Many | Lock | Metadata | Search | Snapshot | Unlock | Upload |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Row | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Base | ✓ | ✓ | ✓ | |||||||||||
| Link | ✓ | ✓ | ✓ | |||||||||||
| Asset | ✓ | ✓ |
Operations index
Row
8 operationsCreate a row
row.createWhat you see in n8n
Notes & use cases
Adds a row to a table and returns it, the way a workflow turns an incoming event into a visible record.
Key parameters
- Table Name: the destination table, from the list or an expression.
- Data to Send:
autoMapInputDatawhen the incoming properties already match the column names,defineBelowto set each column by hand. - Columns to Send: column and value pairs, with strict formats. Dates as
YYYY-MM-DDorYYYY-MM-DD hh:mm, durations as a number of seconds, checkboxes as true, on or 1, multi-select as a comma-separated list. - Apply Column Default Values: fills the new row with the column defaults, on the normal backend only.
Delete a row
row.removeWhat you see in n8n
Notes & use cases
Removes one row from a table for good. Nothing comes back except the confirmation, so anything the workflow still needs has to be read before this node runs.
Key parameters
- Table Name: the table the row belongs to.
- Row ID: the identifier of the row to delete, usually
{{ $json.row_id }}carried over from a search or a list step.
Get a row
row.getWhat you see in n8n
Notes & use cases
Reads a single row and returns its content, the usual way to fetch the full record when the trigger or a previous node only handed over an identifier.
Key parameters
- Table Name: the table to read from.
- Row ID: the row to fetch, from the list or an expression.
- Simplify: returns a trimmed version of the response instead of the raw data.
- Return Column Names: true gives column names, false gives column keys. Pick one and keep it across the workflow, because the expressions downstream depend on it.
Get many rows
row.listWhat you see in n8n
Notes & use cases
Pulls a batch of rows from a table or from one of its views, and emits one n8n item per row so the rest of the workflow loops naturally.
Key parameters
- Table Name: the source table.
- View Name: optional but often the real filter, since a view already carries the conditions the team defined in SeaTable.
- Simplify: trims the response when you only care about the values.
- Return Column Names: switches between column names and column keys in the output.
Add a row lock
row.lockWhat you see in n8n
Notes & use cases
Locks a row so it stops accepting changes. The record stays readable in the base, but the values are frozen until something unlocks it again.
Key parameters
- Table Name: the table holding the row.
- Row ID: the row to freeze, typically the one the current workflow just finished processing.
Search a row by keyword
row.searchWhat you see in n8n
Notes & use cases
Looks for a value inside one column and returns the rows that match, which is what a workflow needs when it knows an email or a reference but not a row identifier.
Key parameters
- Table Name: the table to search.
- Column Name or ID: the column being searched. Not every column type is supported here.
- Search Term: the value to look for, often
{{ $json.email }}. - Case Insensitive Search: ignores upper and lower case, which you almost always want on addresses.
- Activate Wildcard Search: true restricts results to perfect matches, false finds a row when the term is only part of the value.
Remove a row lock
row.unlockWhat you see in n8n
Notes & use cases
Releases a row that was locked earlier, putting it back in a state where both people and workflows can write to it.
Key parameters
- Table Name: the table holding the row.
- Row ID: the row to release.
Update a row
row.updateWhat you see in n8n
Notes & use cases
Writes new values into a row that already exists, leaving the columns you do not mention untouched. This is the operation that turns SeaTable into a living table rather than an append-only log.
Key parameters
- Row ID: which row gets rewritten, so a wrong expression here overwrites the wrong record.
- Data to Send:
autoMapInputDatamaps incoming properties onto matching columns,defineBelowsets each column explicitly. - Inputs to Ignore: a comma-separated list of properties to keep out of the write, handy when the incoming item carries technical fields.
Base
3 operationsCreate a snapshot
base.snapshotWhat you see in n8n
Notes & use cases
Freezes a copy of the whole base at the moment the node runs. No parameter to fill: the credential already points at one base, and that base is the one captured.
Get metadata of a base
base.metadataWhat you see in n8n
Notes & use cases
Returns the complete structure of the base: its tables, their columns and the types behind them, rather than the data inside. It takes no parameter.
Get username from email or name
base.collaboratorWhat you see in n8n
Notes & use cases
Resolves a person into the internal username SeaTable uses, which looks like 244b43hr6fy54bb4afa2c2cb7369d244@auth.local. Collaborator columns store that value, not an email, so a workflow that wants to assign someone has to translate first.
Key parameters
- Name or email of the collaborator: the email or the display name you already have in the workflow.
Link
3 operationsAdd a row link
link.addWhat you see in n8n
Notes & use cases
Connects two rows through a link column, the SeaTable way of expressing that this order belongs to that customer.
Key parameters
- Table Name (Source): the starting table, expressed as
table_name:::table_idwhen you use an expression rather than the dropdown. - Link Column: the column carrying the relation, in the form
column_name:::link_id:::other_table_id. - Row ID From the Source Table: the row you start from.
- Row ID From the Target: the row you link to.
List row links
link.listWhat you see in n8n
Notes & use cases
Returns every row connected to one row through a given link column, so a workflow can walk a relation instead of guessing it.
Key parameters
- Table Name: the table the starting row lives in.
- Link Column: the relation to follow, written as
column_name:::link_id:::other_table_id:::column_keyin expression form, which carries one segment more than the add and remove operations. - Row ID: the row whose links you want.
Remove a row link
link.removeWhat you see in n8n
Notes & use cases
Breaks an existing relation between two rows. Both rows survive, only the link disappears from the column.
Key parameters
- Table Name (Source): the starting table, in the
table_name:::table_idform when set by expression. - Link Column: the link column to clean.
- Row ID From the Source Table: the row you start from.
- Row ID From the Target Table: the row to detach.
Asset
2 operationsGet the public URL from asset path
asset.getPublicURLWhat you see in n8n
Notes & use cases
Turns the internal path of a file stored in SeaTable into a URL something else can open. Files in an image or file column are stored as paths, which is why a raw column value is rarely usable as is.
Key parameters
- Asset Path: the stored path, shaped like
/images/2023-09/logo.png.
Upload a file or image
asset.uploadWhat you see in n8n
Notes & use cases
Pushes a binary file coming from a previous node into a file or image column of an existing row.
Key parameters
- Column Name: the file or image column receiving the asset.
- Row ID: the row the file is attached to.
- Property Name: the name of the binary property holding the data,
datain most n8n nodes, and a mismatch here is the usual cause of an empty upload. - Replace Existing File: true overwrites a file with the same name, false keeps both and adds a numeral in parentheses.
- Append to Column: true keeps the files already in the column, false clears them first.
Need help automating SeaTable with n8n?
A person reads every message.

