> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/function-blocks/blocks-reference/data-logic/referencing/tag-from.md).

# Tag From

This function block exposes a value under a user-defined tag name so it can be referenced elsewhere in the scenario. Use `Tag To` blocks to send variables into or between parts of your flow and `Tag From` to expose or read them from the visual layout.

## 📥 Inputs <a href="#inputs" id="inputs"></a>

`Generic` input Connect any value or data you want to associate with the tag (numbers, text, images, lists, etc.).

## 📤 Outputs <a href="#outputs" id="outputs"></a>

This function block does not provide direct outputs.

## 🕹️ Controls <a href="#controls" id="controls"></a>

`Tag Name` A text field where you type the tag identifier. The field offers autocomplete suggestions for existing tag names to help avoid typos.

* Enter a short, descriptive name that other blocks will use to reference this value.
* The control validates tag uniqueness and will show an error if a duplicate tag is present.

## 🎯 Features <a href="#features" id="features"></a>

* Simple generic input to associate any data with a named tag.
* Autocomplete for the tag name to speed configuration and reduce mistakes.
* Built-in validation to prevent duplicate tag definitions and conflicting tag writes.
* Visual feedback when the block is invalid so you can quickly find configuration issues.

## 📝 How it works <a href="#usage" id="usage"></a>

1. Define the tag by typing a name into the `Tag Name` control.
2. Connect the data you want to expose to the `Generic` input.
3. The block will validate the tag name and indicate any conflicts.
4. Use `Tag To` blocks and referencing blocks (`Data Read Local`, `Data Read Global`, etc.) to exchange or read the value elsewhere in your scenario.

## 💡 Tips and Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* To send values from other parts of the flow use `Tag To` together with this block so the same tag name is shared between sender and receiver.
* Persist or share the tag value outside the immediate flow by combining with `Data Write Local` / `Data Read Local` or `Data Write Global` / `Data Read Global`.
* Use `Debug Input` to quickly inspect values being passed into the `Generic` input during development.
* Freeze or cache values with `Data Memory` if you want the tag value to remain stable until you explicitly update it.
* When sharing structured data, pair with `Data to JSON` to create a JSON payload for logging or export via `CSV Export` or `Image Logger` where appropriate.

## 🛠️ Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

* Duplicate tag found error\
  If you see a duplicate tag warning, change the name in the `Tag Name` field so each `Tag From` block has a unique tag.
* Conflicting writes\
  The block will signal an error if a `Tag To` block tries to write to the same tag in a way that would conflict. Verify tag names and intended data flow.
* No data available\
  If nothing appears to be available for the tag, ensure the source block is connected to the `Generic` input and is producing a value. Use `Is None` or `Replace None` blocks to guard downstream logic if the tag can be empty.
* Autocomplete not listing expected names\
  The autocomplete suggests tag names collected from the current scenario. If a name is missing, verify that the tag you expect is defined elsewhere (for example with `Tag To`) and saved in the scenario.

If you need to pass values between subsystems or keep values across iterations, prefer pairing this block with the referencing and storage blocks listed above for robust and maintainable flows.
