Enrich rows
A pipe column computes one fact for every row. This page ramps from one column to a composed program with conditions, which is most of what a sales automation workflow needs.
Add one pipe column
Add person:workemail:waterfall@1 to a sheet whose rows have name and company_domain. The pipe declares its input requirement and maps it to your columns automatically. Run, and every row gets a work_email cell.
You configured nothing. The pipe uses its default provider order, and because it is a waterfall, it tries providers in order and stops at the first hit. You pay for the provider that returned the result, not for the ones that came up empty.
Compose columns
Add a second pipe column that reads the first. A common chain: person:name:split@1 turns name into first_name for a greeting, or prompt:run@1 writes a one-line opener from the company's description. Pipes see each other's output in a sheet exactly as they do in the API, so the chain declares itself. Rows missing an upstream value show skipped until the upstream column fills, then a later run picks them up.
The lesson from the diff: you never told the second pipe where its input comes from. It found the column by field name.
Gate a column with a condition
Give a pipe column a run_if condition to exclude rows: only find phone numbers where work_email is completed, or only run the expensive provider where company_size is greater than 200. Excluded rows show skipped, cost nothing, and re-qualify automatically when their data changes.
This is the qualification funnel in column form. Search broadly, enrich with the signals that matter, and let conditions keep the expensive pipes narrow.
Take control when you need it
Every pipe column exposes the same configuration as the API: reorder or remove providers, alias output fields, or authenticate with your own provider keys. The defaults are right for most columns, and the pipe catalog documents each option where you need it.