# Tag From

This function block acts as a named reference point for passing data between different parts of your scenario. Use it together with the `Tag To` block or the data read/write blocks to share values without direct wired connections.

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

`Generic`\
Accepts any data type (numbers, text, lists, images, etc.) that you want to expose under a tag name.

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

This function block does not have output sockets. It provides a named storage/reference that other blocks can target or read using referencing blocks.

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

`Tag Name`\
Enter a short, unique string to identify this tag. This name is used by other referencing blocks (for example `Tag To`, `Data Read Local`, `Data Read Global`) to locate or send data to this block.

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

* `Named Reference` — Create a human-readable handle for a value so other blocks can send or read data without a direct wire.
* `Duplicate Protection` — The block alerts you if another block with the same `Tag Name` already exists to avoid accidental conflicts.
* `Self-write Protection` — The block warns if a `Tag To` block would write to the same block in a conflicting way, helping prevent unintended loops.

## 📝 Usage Instructions <a href="#usage" id="usage"></a>

1. Place this block where you want a shared value to live in your scenario.
2. Type a unique identifier into the `Tag Name` control.
3. Feed the value you want to share into the `Generic` input.
4. Use a `Tag To` block (with the same `Tag Name`) to send data programmatically, or use data read/write blocks to access the stored value elsewhere.

## 📊 Evaluation <a href="#evaluation" id="evaluation"></a>

When the block runs, it accepts the connected input value and exposes it to the referencing system under the configured `Tag Name`. The user interface will notify you if the chosen tag name causes duplicates or conflicts.

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

* Use `Tag To` together with this block to send values from one area of your scenario to another without creating direct wiring.
* For reading values elsewhere, pair with `Data Read Local` or `Data Read Global` depending on the scope you need.
* To persist or update values safely, consider combining with `Data Write Local` or `Data Write Global`.
* Use `Data Memory` if you want to freeze a value and avoid it changing until explicitly updated.
* For debugging tag contents while designing, add `Debug Input` near the sending or reading blocks to inspect values.
* When exporting or logging data, route values collected via tags into `Data to JSON` or `CSV Export` blocks.

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

* Duplicate tag warning appears\
  Ensure each `Tag Name` is unique. Rename one of the blocks to avoid collisions.
* Conflict with a sending block\
  If the interface notifies you that a `Tag To` block tries to send to the same tag in an invalid way, check both blocks' `Tag Name` values and adjust the workflow to avoid circular references.
* No value available at read-time\
  Confirm the block providing the value is active and that the `Generic` input is connected or supplying valid data. If your reader still shows nothing, verify matching `Tag Name` strings (no extra spaces).


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/function-blocks/data-logic/referencing/tag-from.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
