> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Propagating Field Changes to Downstream Components

> Update downstream components in one click when you add, rename, or remove output fields in an Integrate.io ETL component.

Adding a field to a component does not automatically make it available further down the pipeline. Components that store an explicit field list, such as Select's fields or DB Lookup's pass-through fields, keep projecting the list they were configured with. A new field stops at the first one of them, and a renamed or removed field leaves a dangling reference that fails at preview or run time.

The component editor detects this and shows a notice when the components below the one you are editing are out of step with its output. The notice names the affected components and each change, and offers to update the components that can be patched mechanically in one click.

## When the notice appears

The notice appears at the bottom of the component editor, above the Save button, for any component that produces an output. It reports three kinds of change to the component's output:

* **Added fields.** A field you add that a downstream component does not pass through.
* **Renamed fields.** A field you rename while editing, shown as `old_name → new_name`. Downstream components still reference the old name.
* **Removed fields.** A field you remove. Downstream components still reference a field that no longer arrives.

The editor measures these changes against the component's output from the first time you opened its editor since the page loaded, and against its output when you opened the current editor. If you save without propagating, the changes are offered again when you reopen the editor, until you reload the page. A rename is only recognized while you edit in place: if you remove a field, close the editor, and later add a different one, the notice reports a removal and an addition.

### Fields that are not passed through

Fields the component already outputs that a Select or DB Lookup below leaves out are listed on a separate, collapsed line, whether or not you changed anything. For example:

```
3 fields are not passed through by select_1.
```

Leaving a field out is usually deliberate, so the line shows only a count. Click **Show all** to list the field names. Once the names are visible, an **Update N components** button on that line appends exactly those fields downstream. The line has no **Dismiss** button. It also covers a field that was added before the page was last reloaded and never propagated, since that field no longer counts as a change.

## What the update changes

Clicking **Update N components** saves the current component and rewrites the listed downstream components. The walk down the pipeline is conservative and only edits where the change has exactly one meaning:

| Component type | Behavior |
| :- | :- |
| Select, DB Lookup | Updated. Added fields are appended, renames keep each component's own aliases, and removals cascade. DB Lookup key mappings follow a rename. |
| Pass-through components (Clone, Filter, Sort, Distinct, Assert, Limit, Sample, Window, Rank, API Call) | Walked through, since they forward every field unchanged. If their configuration names a renamed field (a Sort key, a Window partition, a Filter predicate), the reference is renamed too. |
| Aggregate, Join, Union, Pivot, and other reshaping components | Not edited. Adding a field to these is a semantic decision, so the branch stops there and the component is listed as needing a manual update. |
| Destinations | Never changed. Carrying a field into a destination mapping is left to you. |

Nothing is overwritten silently:

* A removed field that a Select uses inside a larger expression (for example `CONCAT(price, unit)`) is reported instead of edited, because there is no single row to drop.
* A removed field that a DB Lookup matches on in its key mapping is reported instead of edited, because a lookup with no key cannot run.
* A pass-through component whose configuration references a removed field (for example a Sort ordering by it) is listed as needing a manual update. Dropping the reference would change what the component means.

Components that need manual updates appear in the notice as "needs updating by hand". When there is nothing to patch mechanically, the notice still lists them, without the Update button.

One click can rewrite several components, so the action is a single Undo step in the package designer.

## Example

A pipeline reads orders, selects fields, sorts them, and enriches them with a DB Lookup:

```
Database source → Select → Sort → DB Lookup → Destination
```

You open the Select component and add a `discount_code` field. The Sort forwards every field unchanged, but the DB Lookup only passes through the fields it was configured with, so the notice reads:

```
discount_code is not passed through by 1 component downstream: Enrich orders.
```

Clicking **Update 1 component** appends `discount_code` to the DB Lookup's pass-through fields, so it reaches the destination. If you instead renamed `total` to `order_total`, the Sort key and the DB Lookup pass-through field would both be renamed. If the DB Lookup matched on `total` in its key mapping and you removed the field, the notice would report the component as needing a manual update instead.

## Dismissing the notice

Click **Dismiss** to hide the change message without changing anything. The dismissal lasts until you reload the page, so the message does not reappear when you reopen the editor. Dismissed added fields move to the [not passed through](#fields-that-are-not-passed-through) line. A later change to the component's output produces a new notice.

## Availability

Downstream field propagation is on by default for all accounts. If the notice never appears, contact Integrate.io support.

## Related

> **[Select Transformation](https://www.integrate.io/docs/etl/using-components-select-transformation.md)**

> **[DB Lookup Transformation](https://www.integrate.io/docs/etl/using-components-db-lookup-transformation.md)**

> **[Package Designer](https://www.integrate.io/docs/etl/working-in-the-new-package-designer.md)**

> **[Validating a Package](https://www.integrate.io/docs/etl/validating-a-package.md)**


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.