Resources · n8n integration

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

Why automate

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.

Connect

How do you connect SeaTable to n8n?

  1. 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.

  2. 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.

  3. 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.

Triggers

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.*2
    updated.*1

      Configuration notes

      01Set Up the SeaTable TriggerThe 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.

      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.
      Use cases
      one trigger per table and per event, with the view acting as the filter instead of an IF node.
      02New Row and New SignatureThe 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.

      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.
      When to use it
      whenever the meaningful moment is creation. A row that appears means work to do, and the workflow can enrich it, route it or announce it right away.
      Use cases
      a signed quote triggers the archive branch, a new row in a support table opens a ticket elsewhere.
      03New or Updated RowThe 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.

      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.
      When to use it
      for status-driven processes, where the row already exists and its value comes from what changed.
      Use cases
      a deal marked Won starts the onboarding sequence, a corrected address pushes the fix back to the tool that holds the customer record.
      Actions

      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.

      Resources × operations matrix
      ResourceCreateGetUpdateAddDeleteCollaboratorPublic URLGet ManyLockMetadataSearchSnapshotUnlockUpload
      Row✓✓✓✓✓✓✓✓
      Base✓✓✓
      Link✓✓✓
      Asset✓✓

      Row

      8 operations
      01

      Create a row

      row.create

      What 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: autoMapInputData when the incoming properties already match the column names, defineBelow to set each column by hand.
      • Columns to Send: column and value pairs, with strict formats. Dates as YYYY-MM-DD or YYYY-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.
      Use cases
      a web form submission becomes a row in the intake table.
      02

      Delete a row

      row.remove

      What 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.
      Use cases
      clearing rows that a deduplication branch flagged as copies, or emptying a staging table once its rows have been pushed into the real one.
      03

      Get a row

      row.get

      What 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.
      Use cases
      reloading an order row before generating the document that quotes its values.
      04

      Get many rows

      row.list

      What 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.
      Use cases
      a weekly run reads the view of overdue invoices and sends one reminder per row through Gmail.
      05

      Add a row lock

      row.lock

      What 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.
      Use cases
      a validated expense line gets locked once it has been exported to accounting, so a later edit cannot silently break the match between the base and the export.
      07

      Remove a row lock

      row.unlock

      What 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.
      Use cases
      a correction procedure that unlocks an archived line, applies the fix through an update node, then locks it again at the end of the same run. Running this before an update also avoids the failure you get when a workflow tries to write into a frozen row.
      08

      Update a row

      row.update

      What 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: autoMapInputData maps incoming properties onto matching columns, defineBelow sets 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.
      Use cases
      writing an enrichment result back onto the row that triggered the run.

      Base

      3 operations
      09

      Create a snapshot

      base.snapshot

      What 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.

      Use cases
      a scheduled workflow takes a snapshot every morning before the import job runs, so a broken mapping can be compared against a known state. The same node placed in front of a mass update gives you a before picture that nobody has to remember to take by hand.
      10

      Get metadata of a base

      base.metadata

      What 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.

      Use cases
      a generic workflow that adapts to whatever columns exist, instead of hardcoding names. Reading the metadata first also answers the question that blocks the search operation, since the output shows which type each column actually uses before a workflow tries to search it.
      11

      Get username from email or name

      base.collaborator

      What 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.
      Use cases
      a ticket arrives with the assignee email, this node converts it, and an update node drops the result into the collaborator column.

      Asset

      2 operations
      15

      Get the public URL from asset path

      asset.getPublicURL

      What 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.
      Use cases
      building the link to a signed document before pushing it to a message or to an external archive, right after the trigger reports a new signature.
      16

      Upload a file or image

      asset.upload

      What 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, data in 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.
      Use cases
      storing a generated PDF on its row.
      Need help

      Need help automating SeaTable with n8n?

      A person reads every message.

      FAQ

      SeaTable and n8n: the questions that come next

      01Is the SeaTable n8n integration free?
      On the n8n side, yes. The SeaTable node and the SeaTable Trigger ship with n8n, so there is nothing to install and nothing extra to pay, whether you run n8n Cloud, the hosted offer, or your own instance through Docker or npm under the Community Edition and its Sustainable Use license. A workflow behaves the same in both cases, which means you can build it on one and move it to the other. What you do need is a SeaTable account, on the cloud service or on a self-hosted SeaTable server, since the credential is generated from inside a base. What that account costs is a SeaTable question, not an n8n one.
      02What credentials do you need to connect SeaTable to n8n?
      One credential, using an API key, shared by both nodes. Three fields to fill. Environment says whether your SeaTable instance is Cloud-Hosted or Self-Hosted. API Token (of a Base) takes a Base-Token, generated inside SeaTable from the base options, then Advanced, then API Token, and it should carry Read-Write permission if the workflow creates, updates or deletes anything. Timezone is the timezone of your SeaTable server, and getting it wrong shifts the dates a workflow writes. The token belongs to a base rather than to a user, so automating a second base means a second credential. Once saved, the credential appears in the dropdown of every SeaTable node in every workflow.
      03What are the limits of the SeaTable node in n8n?
      The node covers 4 resources, row, base, link and asset, with 16 operations in total. Anything the SeaTable API offers outside that list has no dedicated operation, and the answer is the HTTP Request node, which calls any endpoint and reuses the same SeaTable credential through predefined authentication. Two details bite in practice. The search operation does not support every column type, so a lookup on an unusual column may need a list step plus your own comparison. And writing to the Big Data backend only happens when the option is switched on in the node and the backend has been activated in the base, otherwise rows land in the normal backend.
      04Does the SeaTable Trigger react in real time?
      No, and it is worth saying plainly. The SeaTable Trigger works by polling: n8n asks the SeaTable API whether something new appeared, at the interval you set in Poll Times, and the fastest setting checks once a minute. There is no webhook to register on the SeaTable side, which makes setup simpler, but it also means a row is picked up after a delay equal to your interval. Plan processes accordingly: a signature that starts an archive branch a minute later is fine, a workflow that must answer a user while they wait is not the right shape. Each trigger node watches one event, since there is no wildcard option.
      05n8n or Make for SeaTable?
      It depends on four criteria, and neither tool is the wrong answer. Hosting: Make is hosted by Make with no self-hosting option, while n8n runs on your own server or on n8n Cloud. Data control follows from that, and it usually decides the question when the base holds personal or contractual data. Cost model: Make bills per operation, so a workflow that loops over many rows is priced by its volume, while a self-hosted n8n is priced by the machine it runs on. Visual logic: both draw a workflow on a canvas, with different branching and error handling habits. Look at the 16 operations you actually need, then decide.