> For the complete documentation index, see [llms.txt](https://docs.heisenware.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.heisenware.com/app-builder/build-backend/extension-nodes.md).

# Extension nodes

Extension nodes process data directly within a flow without requiring a full function node. They attach to a function output or to another extension node to act on the data passing through. This lets you build processing pipelines by chaining nodes together, such as connecting a filter to a modifier, or a modifier to another modifier.

Except for recorders, extension nodes operate as their own output. You can wire them to function inputs, triggers, or widgets exactly like a standard function output.

To branch a single data source into multiple concurrent paths, attach multiple extension nodes to the same output in parallel.

## Types

<table><thead><tr><th width="137.0369873046875">Type</th><th>What it does</th></tr></thead><tbody><tr><td><a href="/app-builder/build-backend/extension-nodes/modifier.md"><strong>Modifier</strong></a></td><td>Transforms the structure or value of the data, using JSONata or a JavaScript expression.</td></tr><tr><td><a href="/app-builder/build-backend/extension-nodes/filter.md"><strong>Filter</strong></a></td><td>Acts as a conditional gate: halts the flow or branches it based on a JavaScript condition.</td></tr><tr><td><a href="/app-builder/build-backend/extension-nodes/recorder.md"><strong>Recorder</strong></a></td><td>Stores the output as timeseries data in the internal InfluxDB database.</td></tr><tr><td><a href="/app-builder/build-backend/extension-nodes/error-handler.md"><strong>Error handler</strong></a></td><td>Opens a separate output that activates only when the parent function fails, enabling dedicated error logic. You can only attach an error handler directly to a function, not to other extension nodes.</td></tr></tbody></table>

## Working with extension nodes

* **Add**: Click the + icon on a function's output or on an existing extension node and select the desired type. You can add multiple parallel extension nodes to the same output.
* **Chain**: Add an extension node to the output of another extension node to create a multi-step pipeline (e.g., filter data, then modify it).
* **Test**: Extension nodes show their last result directly below them. Click the icon of a modifier or filter to evaluate it manually during development.
* **Delete**: Right-click an extension node and select Delete.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.heisenware.com/app-builder/build-backend/extension-nodes.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
