Skip to content

Table — insert a row ​

Inserts a row. If the table has a unique key that is already taken, the step fails — use “insert or update” instead.

Adds a row to a Table. Use it for logs and registers where each run adds an entry. When the row may already exist and should be updated rather than refused, use Table — insert or update.

At a glance ​

  • Type: table.insert · version 1
  • Category: Actions
  • Kind: Step — one stage of a run
  • Effect: Writes outside (external_write) — writes outside Mankomail; described instead of performed during a test run
  • Needs a carrier email: No
  • Connection: None
  • Inputs: main
  • Outputs: main

Parameters ​

table ​

Table — Picked from the list, or by its short identifier (its “slug”), which may come from a template.

  • Type: Remote resource (resourceLocator)
  • Required: Yes
  • Ways to choose: pick from a list, type an ID (table)

values ​

Row values — One entry per column to fill. Columns left out stay empty.

  • Type: List of items (collection)
  • Required: No
  • Default: []
  • At most 60 items
  • Each item has:
    • column — Column
      • Type: Text (string)
      • Required: Yes
      • Default: "" (empty)
      • 60 characters at most
      • Expressions: {{ }} not accepted
    • value — Value. Converted into the column type: “1,234.50” becomes a number, “yes” a boolean, “2026-04-03” a date. Anything it cannot read is refused, never blanked.
      • Type: Text (string)
      • Required: No
      • Default: "" (empty)
      • 10000 characters at most

Outputs ​

  • main

Data produced ​

What this node adds to the run data, and how to read it in an expression. <step> stands for the step key: the node name turned into an identifier (see Data and expressions).

  • {{ data.<step>.rowId }} — string. The identifier of the new row. In a test run: simulated:<table identifier>.
  • {{ data.<step>.row.<column> }} — object. The row as written, cells converted to their column type, by column machine key. Empty cells are absent.
  • {{ data.<step>.created }} — boolean. true: the node created a row.
  • {{ data.<step>.reused }} — boolean. true when the step was replayed after an incident and the row written by the first attempt was returned, without writing again.
  • {{ data.<step>.simulated }} — boolean. true in a test run: nothing was written.
  • {{ data.<step>.summary }} — string. A one-line summary: Row added., Would have added a row. or Already written on an earlier attempt: nothing was rewritten.

Example ​

Each signed quote is recorded in a table signed_quotes. The node is named "Record quote".

text
table   signed_quotes
values  client     = {{ email.from.email }}
        amount     = {{ data.read_quote.amount }}
        signed_on  = {{ data.read_quote.date }}

amount is a Number column: "1 234,50" or "1,234.50" are both stored as the number 1234.5. signed_on is a Date column: "03/04/2026" and "2026-04-03" are both stored as 2026-04-03. The next node reads {{ data.record_quote.rowId }}.

Tips ​

  • Columns are named by their machine key, not their heading. A column that does not exist fails the step with table.unknown_column. Columns left out stay empty; an empty value also gives an empty cell.
  • Values are converted to the column type — Number, True or false (yes/no, oui/non, x, 1/0…), Date (ISO or day/month/year), Date and time, Email address, Choice list (matched to an allowed value ignoring case and accents). A value that cannot be converted is refused, never emptied: the step fails with table.invalid_value and names the column. A Required cell left empty fails the same way.
  • Duplicate keys. If the table refuses two rows with the same key and the key is already taken, the step fails. Use Table — insert or update instead.
  • Limits. A cell holds at most 4,000 characters by default, and a table at most 50,000 rows (table.limit_reached); both are set by the instance administrator.
  • Replays are safe. The write is recorded with the step's idempotency key in the same transaction: a replay after an incident returns the row already written (reused: true) instead of adding a second one.
  • Authorship. A row written by a workflow is attributed to the workflow, not to the member who triggered the run.
  • Test runs. Nothing is written. The step returns the row it would have written, values converted, with simulated: true. See Test runs.