Task Reference
Steps overview
Browse every built-in step type, what each one does, and how to choose the right step for a pipeline stage.
Steps overview
A step is one stage of a task pipeline. Each entry in a task's steps array names a step, picks a registered type, and supplies a config — a static YAML object or a JSONata expression evaluated per item. Items flow through the steps as a single linear stream with backpressure. Where steps sit in the file, and the keys every step shares, are defined in the Task YAML schema.
Step types
Envoy registers 15 step types, listed here in registry order:
| Type | Purpose |
|---|---|
| call_method | Call a Connector method — the primary step for all I/O. |
| transform | Reshape each item with a JSONata expression. |
| filter | Keep or drop items with a boolean JSONata predicate. |
| console | Print each item to stderr for debugging; pass it through unchanged. |
| compute_hash | Add a content hash field to each record for change detection. |
| map_fields | Declarative source-to-destination field mapping for migrations. |
| get_destination_id | Look up a source-to-destination ID mapping from the mapping store. |
| set_destination_id | Upsert a source-to-destination ID mapping. |
| ensure_table | Run SQL DDL to bootstrap tables. |
| upsert_record | Declarative SQL or MongoDB upsert. |
| sync_record | Composite dedup, hash check, create/update, and mapping persistence. |
| lookup | Cross-store join or foreign-key resolution with a fallback chain. |
| mark_processed | Write a flag, destination ID, or hash back to the source row. |
| validate_source | Validate primary keys and required columns in source data. |
| transfer_file | Download a file from one Connector and upload it to another. |
Choosing a step
- Pull a whole resource or stream many records — use a
call_methodstep as the pipeline source. It streams array results with backpressure. Do not wrap list methods in the$callMethodJSONata function, which buffers the entire result into memory. - Migrate records idempotently — prefer
sync_recordover the manualget_destination_id+skip_if+set_destination_idtriad. It combines mapping lookup, hash-based change detection, create/update, and mapping persistence in one step. - Remove items from the stream — use
filter. Atransformthat evaluates tonullpasses the input through unchanged, andrun_if/skip_ifskip a step but keep the item flowing. - Call a connector per item and keep the item's fields — use
$callMethodinside atransform, for bounded single-record lookups only (find_one,count, groupedaggregate). - Pull multiple independent resource types — one task per resource, combined in a Job. A task pipeline is a single linear stream with one source.
- Stage or upsert rows to SQL or MongoDB —
upsert_record; bootstrap the tables first withensure_table. - Write a synced flag or destination ID back to the source —
mark_processed. - Move attachments or other files between systems —
transfer_file.
Shared step keys
Every step, regardless of type, accepts run_if, skip_if, error_handling, concurrency, batch, spool, and debug alongside name, type, and config. These keys are documented once in the Task YAML schema — step pages only cover their type-specific config.
Related
- Task YAML schema — the full task file schema, including per-step keys
- JSONata reference — the expression language used in step configs
- Migration playbook — patterns combining these steps end to end