English
Table — find a row
Finds a row by its key. Two outputs: found, and not found.
Looks up one row of a Table by its key and routes the workflow: found or not_found. Use it for lookup tables ("this county → this consultant") and for memory between runs ("has this case already been chased?"). To read several rows at once, use Table — list rows.
The node never says which columns to match on: the table does. The columns ticked Part of the matching key in the table form the key, and the node only gives their values.
At a glance
- Type:
table.find· version 1 - Category: Data
- Kind: Step — one stage of a run
- Effect: No external effect (
none) — nothing is written outside Mankomail; safe to replay - Needs a carrier email: No
- Connection: None
- Inputs:
main - Outputs:
found,not_found
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)
key
Row key — The values of the columns marked as “key” in the table. The table decides what rows are matched on — not this node.
- Type: List of items (
collection) - Required: Yes
- Default:
[] - At most 8 items
- Each item has:
column— Key column- Type: Text (
string) - Required: Yes
- Default:
""(empty) - 60 characters at most
- Expressions:
{{ }}not accepted
- Type: Text (
value— Value to match- Type: Text (
string) - Required: No
- Default:
""(empty) - 10000 characters at most
- Type: Text (
Outputs
found— Taken when a row carries the key.not_found— Taken when no row carries the key.
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>.found }}—boolean. true when a row was found — the same fact as the port taken, for conditions further down the graph.{{ data.<step>.row.<column> }}—object. Found only: the row's cells, by column machine key ({{ data.<step>.row.consultant }}). An empty cell is absent and reads as empty.{{ data.<step>.rowId }}—string. Found only: the row's identifier.{{ data.<step>.updatedAt }}—string. Found only: when the row was last changed (ISO 8601).{{ data.<step>.summary }}—string. A one-line summary:Row found.orNo row carries this key.
Example
A table "Counties → consultants" (identifier counties-consultants) has a key column county and a column consultant. An earlier Extract step named "Read request" pulled the county from the email. The node is named "Find consultant".
text
table counties-consultants
key county = {{ data.read_request.county }}On the found port, a Send or Compose node can use {{ data.find_consultant.row.consultant }} as the recipient. On the not_found port, a Notify node can warn the team that the county is missing from the table.
Tips
- Columns are named by their machine key, not their heading: the identifier shown as Machine key in the column settings (a heading "County (1-95)" gives
county_1_95). The same key is used in{{ data.<step>.row.<column> }}. - Matching ignores case, accents and punctuation: "Saint-Étienne" and "SAINT ETIENNE" are the same key. With several key columns, give a value for each; a missing part fails the step with
table.invalid_value. - Tables refusing duplicate keys. Lookup by key relies on the table option Refuse two rows with the same key. Keep it ticked on a table you search by key.
- Errors. No table selected or an empty key:
node_invalid_param. Unknown table:table.not_found. A table with no key column:table.no_key— tick Part of the matching key on a column. These failures are final and are not retried. - Test runs. Reading is real, even in a test: the node looks up the actual table. See Test runs.