<!-- BusyBot node reference — https://busybot.net/tools/seatable-trigger/ -->

> Node: SeaTable Trigger (`seatable_trigger`) · Polling trigger · v1
> Category: Data & Storage · Credentials: SeaTable API (`seaTableApi`)
> Updated: 2026-08-16

# SeaTable Trigger

> Polls SeaTable for new or updated rows and signatures

## Overview

Polls a SeaTable base on a schedule to detect new rows, updated rows, or new digital signatures. Supports SQL-based querying with time-window filtering, view-scoped row listing, and digital signature tracking. Returns each matching record as a separate workflow item with optional column name conversion and simplification.

**Category:** Data & Storage  
**Tool Name:** `seatable_trigger`  
**Version:** 1

**Appearance:** Icon: `lucide-Table` | Color: `#ff8000`

## Node Type

**Trigger** — polling (checks for new data on a schedule)

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | None (trigger node) |
| Output | `Output` |

## Credentials

This tool requires **SeaTable API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/sea-table-api/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Event | `options` | No | `newRow` | Which event to listen for. |
| | | | | Options: `newRow` (newly created rows), `updatedRow` (recently created or modified rows), `newAsset` (new digital signatures) |
| Table Name | `string` | Yes | — | The name of the SeaTable table to monitor. |
| View Name | `string` | No | — | The name of a SeaTable view to limit results. Leave empty to query without a view restriction. _(shown when Event is `newRow` or `updatedRow`)_ |
| Signature Column | `string` | Yes | — | The name of the digital-signature column that should be tracked. _(shown when Event is `newAsset`)_ |
| Simplify | `boolean` | No | `true` | Whether to return a simplified version of the response (removes internal _ prefixed columns). |
| Return Column Names | `boolean` | No | `true` | Whether to return column names (true) instead of column keys (false) in the output. _(shown when Event is `newRow` or `updatedRow`)_ |
| Poll Interval | `number` | No | `1` | How often to check for new data. |
| Poll Interval Unit | `options` | No | `minutes` | Unit for the poll interval. |
| | | | | Options: `seconds`, `minutes`, `hours` |

## Output Data

Each matching row — or each new signature — becomes one output item, carrying `_trigger` (always `seatable_polling`) and `_timestamp` (when the poll ran).

For `newRow` and `updatedRow`, the item is the row itself, keyed by column name when **Return Column Names** is on and by column key when it is off:

```json
{
  "Name": "Acme Corp",
  "Status": "Active",
  "Owner": [
    { "email": "jane@example.com", "contact_email": "jane@example.com", "name": "Jane Doe" }
  ],
  "_trigger": "seatable_polling",
  "_timestamp": "2026-08-15T09:00:00.000Z"
}
```

With **Simplify** off, SeaTable's internal columns are kept as well — `_id`, `_ctime` (creation time) and `_mtime` (last modification time) among them.

Certain column types are expanded before the item is emitted:

- **Collaborator, Creator and Last Modifier** columns become objects with `email`, `contact_email` and `name`.
- **Image** columns become arrays of `{ name, size, type, url, path }`.
- **File** columns keep their original entries with a `path` property added.
- **Digital signature** columns gain `contact_email` and `name` for the signer.
- **Button** columns are removed.

For `newAsset`, each item describes one signature captured since the last poll — the signature object from the tracked column (including its `sign_time` and signer details) plus the row's `_id`, `_ctime` and `_mtime` when **Simplify** is off.

Reference row values downstream by expression, e.g. `{{ $json.Status }}`.

## Usage Examples

- Trigger workflow when a new row is added to a SeaTable table
- Monitor a SeaTable table for updated rows every 5 minutes
- Watch for new digital signatures in a SeaTable table
- Detect new entries in a specific SeaTable view and sync to another system

## Example Configuration

Watch a table for newly created rows:

```json
{
  "type": "seatable_trigger",
  "parameters": {
    "event": "newRow",
    "tableName": "Customers",
    "simple": true,
    "pollInterval": 2,
    "pollIntervalUnit": "minutes"
  }
}
```

Watch one view for new or modified rows, keeping the internal columns:

```json
{
  "type": "seatable_trigger",
  "parameters": {
    "event": "updatedRow",
    "tableName": "Orders",
    "viewName": "Pending Orders",
    "convert": true,
    "simple": false,
    "pollInterval": 30,
    "pollIntervalUnit": "seconds"
  }
}
```

Watch a signature column for newly signed documents:

```json
{
  "type": "seatable_trigger",
  "parameters": {
    "event": "newAsset",
    "tableName": "Contracts",
    "assetColumn": "Client Signature",
    "simple": true,
    "pollInterval": 5,
    "pollIntervalUnit": "minutes"
  }
}
```

### Trigger Behavior

- **Activation:** Polling starts when the workflow is activated. There is no poll at the moment of activation — the first check runs one full interval later.
- **Schedule:** The trigger polls for new data based on the configured polling interval.
- **State:** Maintains internal state (the timestamp of the last check) so each poll returns only rows whose creation time — or modification time, for `updatedRow` and `newAsset` — falls after it.
- **First Run:** The first poll records the current time and returns no items, so activating the workflow never replays the table.
- **Testing:** Running the node from the editor emits a single sample item so you can build the rest of the workflow; real rows arrive only while the workflow is activated.

## Tips

Configure your SeaTable API token and select the event type: New Row, New or Updated Row, or New Signature. Specify the table name and optionally a view name (for row events) or a signature column (for signature events). The trigger polls SeaTable using time-window SQL queries or view-scoped row listing to detect changes since the last check. Use the Simplify and Return Column Names options to control output format. Set the poll interval to control check frequency.

### Important Notes

1. **Required fields**: always specify `tableName` — it is the only parameter required for every event.

2. **Event-specific parameters**: `assetColumn` is only available (and required) when `event` is `"newAsset"`, while `viewName` and `convert` are only available for row-based events.

3. **Polling frequency**: consider your SeaTable plan limits and data update frequency when setting `pollInterval` and `pollIntervalUnit`.

4. **Simple mode**: the `simple` parameter removes internal SeaTable columns (those prefixed with `_`) from the output, which is usually preferred for cleaner data processing.

### Notes

- A single poll returns at most 1,000 rows; anything beyond that is picked up on the next poll.
- Setting a **View Name** switches the trigger from a SQL time-window query to reading the view and filtering it by timestamp, so the view's own sort and filters apply first.