# Tag folder binding

**URL:** <https://forum.inductiveautomation.com/t/tag-folder-binding/64207>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [September 18, 2022, 9:37pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207 "2022-09-18T21:37:41Z")\
**Posts on this page:** 11\
**Page:** 2

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [September 26, 2022, 11:44pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/21 "2022-09-26T23:44:43Z")

</div>

Since we’re talking about binding to folders… it would be very nice if folders _did_ have some properties you could read from them like alarm counts of all of the priorities and ack states. I think there is already talk of adding this in, but the concern was performance impact

ahem

> **[Tag Alarm Aggregation | Voters | Inductive Automation](https://ideas.inductiveautomation.com/ignition-features-and-ideas/p/tag-alarm-aggregation)**

---

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [September 26, 2022, 11:47pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/22 "2022-09-26T23:47:52Z")

</div>

> [@pturmel](#):
>
> The fact that you get a version number surprising IA staff kinda suggests that reading folders was not an expected operation.

My only comment to this, Is if we should expect nothing, it should probably be an exception instead. For example if you read a tag path that doesn't exist you get an error, but since a folder isn't a tag you might think you should get a similar error.

I do agree though, better to get nothing or an error than a potentially "random" number

---

<div class="post-metadata">

**Author:** ![code\_skin](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@code\_skin](https://forum.inductiveautomation.com/u/code_skin)\
**Post date:** [October 14, 2022, 3:31pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/23 "2022-10-14T15:31:43Z")

</div>

I would expect the same thing here. When I bind a UDT to a perspective prop, it brings in the structure beautifully. When I update the UDT, so does my perspective binding. It's like Vision drop targets for perspective. This is valuable as heck. I just found out today that binding a folder of tags returns an integer.

---

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [October 14, 2022, 3:35pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/24 "2022-10-14T15:35:40Z")

</div>

> [@code\_skin](#):
>
> I just found out today that binding a folder of tags returns an integer.

I think most people on this thread just found that out lol, including the devs

---

<div class="post-metadata">

**Author:** ![waterswes8](https://avatars.discourse-cdn.com/v4/letter/w/9de053/32.png) [@waterswes8](https://forum.inductiveautomation.com/u/waterswes8)\
**Post date:** [June 11, 2026, 1:58pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/25 "2026-06-11T13:58:59Z")

</div>

I found this thread while looking for a way to bind to a folder of tags. Example I have a folder of udts.. I was going to search through them to find which one might be relevant for some linked data.. However I was getting a 2 and thought I might be doing something wrong. Does anyone know of a good way to iterate through a folder of tags?

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [June 11, 2026, 2:22pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/26 "2026-06-11T14:22:40Z")

</div>

What is your goal? What you've asked is very vague. I could say you can just use the tag browser to look through the tags, or the opc browser, or you could use system.tag.browse or tag.query programmatically

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [June 11, 2026, 2:45pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/27 "2026-06-11T14:45:59Z")

</div>

You would use a script, not a binding. I don't see any use case for a folder binding.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [June 11, 2026, 3:15pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/28 "2026-06-11T15:15:59Z")

</div>

Native Ignition expressions don't have any ability to loop, but @pturmel's (free) [Integration Toolkit](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934) module should "just work" with the meta `jsonValues` node talked about here.

So, in theory, [`where({path/to/tag.jsonValues, someCondition)`](https://www.automation-pros.com/toolkit/doc/iteration.html#where) could work for the vague task you're describing.

---

<div class="post-metadata">

**Author:** ![waterswes8](https://avatars.discourse-cdn.com/v4/letter/w/9de053/32.png) [@waterswes8](https://forum.inductiveautomation.com/u/waterswes8)\
**Post date:** [June 11, 2026, 3:38pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/29 "2026-06-11T15:38:43Z")

</div>

Sorry for the vague description earlier: @paul-griffith @nminchin — I’ll try to explain this more clearly.

I have two sets of UDT instances structured like this:

```python
[provider]Folder/Group-1
[provider]Folder/Group-2
[provider]Folder/Group-3
...

[provider]OtherFolder/OtherUDT-1
[provider]OtherFolder/OtherUDT-2
[provider]OtherFolder/OtherUDT-3
...

```

There are a handful of `Group-*` UDT instances, each with members like:

- `valueA`
- `valueB`
- `valueC`
- ...

The `OtherUDT-*` instances follow a similar pattern and contain a corresponding set of values (including a field equivalent to `valueA`).

* * *

### View Setup

In my view, I have multiple components:

- One component is parameterized with something like `view.params.groupIndex` (e.g., `Group-1`, `Group-2`, etc.)
- Another component is parameterized separately with `view.params.otherIndex` (e.g., `OtherUDT-1`, `OtherUDT-2`, etc.)

Originally, these components were independent and did not need to reference each other’s data.

* * *

### New Requirement

Now I have a need to relate data between these two sets of UDTs.

For example:

- If `valueA` in a `Group-*` UDT matches `valueA` in one of the `OtherUDT-*` instances
- Then I want to retrieve and display `valueB` from that matching `OtherUDT-*` in the first component

* * *

### What I’m trying to accomplish

Given a value (like `valueA`) from one component/UDT, I want to:

1. Search through all instances in another UDT folder (`OtherUDT-*`)
2. Find the instance where a specific member (`valueA`) matches
3. Return a different member (`valueB`) from that matching instance

* * *

### Question

What would be the best way to implement this in Ignition?

- Is there a binding-based approach (e.g., tag folder binding, indirect binding, expression structure, etc.) that can support this type of lookup?
- Or is scripting the expected approach for this kind of cross-UDT “search and match” behavior?
- More broadly, is there a recommended pattern for structuring tags when you need to correlate data between multiple UDT instances like this?

* * *

Sidenote: I just installed the Integration Toolkit last week. Maybe that is the answer to what I am trying to do. I'll try doing what you suggested paul

---

<div class="post-metadata">

**Author:** ![bschroeder](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bschroeder/32/13260_2.png) [@bschroeder](https://forum.inductiveautomation.com/u/bschroeder)\
**Post date:** [June 11, 2026, 4:02pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/30 "2026-06-11T16:02:09Z")

</div>

We do similar things where one UDT A needs know the tagPath of another UDT B based on a value in the UDT A. We use a dataset in UDT A that has two columns. One for the value, and the other for the UDT B tag path. Then using the lookup expression we can quickly find the tag path for UDT B. It does take some setting up, but most of the time that can be accomplished using a script to setup the datasets.

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [June 11, 2026, 4:25pm UTC](https://forum.inductiveautomation.com/t/tag-folder-binding/64207/31 "2026-06-11T16:25:00Z")

</div>

Personally I would see how adding a string tag to the Group UDT and a tag change script on the value in the Group UDT. The tag change script would go through and look for the Other UDT that matches the value and fill in the string path to the UDT instance (or empty string if none). Then you have the path for any other indirect bindings you may want to use and the path updates whenever the Group UDT value changes. Except you many need to address what happens if the Other UDT value changes (may have to add a list of related Group UDTs that match the Other UDT to the Other UDT so you could go clear that path when it changes).

[Previous page](https://forum.inductiveautomation.com/t/tag-folder-binding/64207.md?page=1)
