agenthub · transform.lookup
Find the first row in a list whose field matches a value, and keep the whole row. This is the membership question and the answer to who they are, in one node.
Why the node earns its place
The counterpart to Extract List. Extract discards the rows down to one field — good for a yes-or-no contains test. Find Row keeps the row, which is what you want the moment you need anything about the match: their name, their status, their renewal date.
It emits both at once: found is the membership answer to wire into a Condition, and record carries the fields forward. One node does what Extract plus a second branch used to.
How it works at run time
rows_path into the wired data to find the list.value input, else value_context_key from run context or the saved-variable bag.match_field on each row under match_normalize, and keep the first row that matches.project when set; otherwise keep it whole.output.found true / false — your membership answer
output.record the matched row, or {} when nothing matchedWhat you wire
Configuration
| Key | Type | Default & options | What it does |
|---|---|---|---|
| rows_path * | string | — | Dotted path (into the wired `data`) to the list of rows, e.g. 'result.body.results' for a Notion query response. After a Test Run you can pick this from the observed shape. |
| match_field * | string | — | Path INSIDE each row to compare against the value, e.g. 'properties.Phone.phone_number'. The row is kept only if this matches. |
| match_normalize | string | default "exact" exact · lower · phone10 | How to compare. phone10 = last 10 digits (so a raw +91… caller phone matches a differently-formatted roster cell). |
| value_context_key | string | — | If the `value` input isn't wired, read the value to match from this run-context / saved-variable key (e.g. 'phone'). |
| project | object | — | Optional { output_field: path-in-row } map to reshape `record` down to just the fields you want. Empty = keep the whole matched row. |
What usually goes wrong
Watch for this
Use phone10 for phone numbers. An API-side equality check is not enough for rosters, where the same number is stored with a country code in one place, spaces in another and a leading zero in a third. Comparing the last ten digits collapses all of it.
Behaviour & provenance