> For the complete documentation index, see [llms.txt](https://doc.duaer.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.duaer.com/integrations/creating-nodes/build/reference/paired-items.md).

# Set paired items in a Duaer node

A programmatic Duaer node must tell Duaer which input item each output item comes from, or expressions downstream cannot find the data.
## When you set it yourself

Duaer handles paired items for declarative nodes. Programmatic nodes, trigger nodes included, set pairedItem on every item they return. Without it, expressions such as $("Node name").item downstream fail with a pairing error. Refer to [item linking](/data/data-mapping/data-item-linking.md).

## Set pairedItem

item is the index of the input item. When the node has several inputs, input names which one.

```
// One output item per input item: point back to that input
returnData.push({
	json: { ...result },
	pairedItem: { item: i },
});

// Node with several inputs: name the input too
returnData.push({
	json: { ...merged },
	pairedItem: { item: i, input: 1 },
});
```

When one input item becomes several output items, each output points back to the same item. When several input items become one output, pairedItem can be an array listing every source.
## Questions

### Do declarative Duaer nodes need pairedItem?

No. Duaer sets paired items for declarative nodes. Only programmatic and trigger nodes set it themselves.

## Related

- [Duaer node reference](https://doc.duaer.com/integrations/creating-nodes/build/reference.md)
- [How items link across Duaer nodes](https://doc.duaer.com/data/data-mapping/data-item-linking.md)
- [Fix item linking errors in Duaer](https://doc.duaer.com/data/data-mapping/data-item-linking/item-linking-errors.md)

