# How to dynamically pass tag name to popup via UDT template

**URL:** <https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894>\
**Category:** Ignition\
**Tags:** ignition81, vision\
**Created:** [June 27, 2025, 6:59pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894 "2025-06-27T18:59:10Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 27, 2025, 6:59pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/1 "2025-06-27T18:59:10Z")

</div>

I have a template, it's bound to a UDT and using Drop Target method. It works as expected, I can drag a "motor" to the window and everything populates.

I would like to add a feature where I can open a popup window, to allow detailed setpoint manipulation. I can script the popup window on "mouse-clicked" event, but I am confused on how to make the popup work with my UDT.

In other words, I would like the popup to INHERIT the template's UDT path.

I want to build one template and have it pass to the popup the dynamic tag name, for instance. I do not wish to hard-code anything.

---

<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 27, 2025, 9:26pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/2 "2025-06-27T21:26:27Z")

</div>

Make a script in the motor template to call the popup. Pass the path from the template to the popup.

FWIW, I've NEVER used the drop-target functionality. IMO it's better to have a single parameter to the template that is the UDT path and use indirect bindings in the template.

For any clickable template I always add a "clickable" parameter that enables/disables this functionality and uses the hand cursor instead of the mouse.

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 27, 2025, 10:26pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/3 "2025-06-27T22:26:09Z")

</div>

Hello, Thanks for your reply.

I understand that scripting a path is required, but I am not able to accomplish this. I don't understand the syntax.

This is what I have, obviously wrong.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/5/356c2b82e3d98941636783e1398906a4c7f295ce.png)

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 27, 2025, 10:54pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/4 "2025-06-27T22:54:19Z")

</div>

I re-watched the IA video on Parameterized Popup Windows a few times.

I noticed where the instructor gets "Tank" from the UDT browser/Tags folder. I am getting "Motor" from the UDT folder below it called "default". In fact, my UDT/Tag folder has a glaring error on it.  
IA:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/6/d609948fe22c6b6c07606512d3419df5270e0cf3.jpeg)  
Me:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/6/a69a5d4e6da3baa380363cd9c9ec70e6a2e33724.png)

This is the main difference. It causes a slight syntax change:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/7/57c8589ccbd8636e2cd6f7582ef121b094506aa8.png)

My popup does see the UDT but I get error on open:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/7/d7a50322c0851ceea4d77755e458a99640e663a5.png)

My end result when I click the template is a warning window:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/9/4976f0d1ff75f4b9b6ad55a01a91466de1cf5aed.png)

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [June 28, 2025, 2:03am UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/5 "2025-06-28T02:03:12Z")

</div>

As noted above, dont pass UDTs to popups. Yes its in IAs tutorial, but its mostly inefficient and not best practice.

Instead, create custom property on your window...something to the effect of pathstr of type string. Then your mouse script will open the window and you will populate the pathstr string as a passed parameter, defined as the path to the root of your UDT.

On the window, just bind each widget as needed as an indirect of {1}/startpb, {1}/stoppb, {1}/amps, where {1} is the pathstr parameter.

---

<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 28, 2025, 9:01am UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/6 "2025-06-28T09:01:47Z")

</div>

If you do a search for "UDT Type parameters" and Vision, you'll see a large number of topics discussin the downfalls of them. I also would recommend never using them.

It's good marketing for Ignition as they sound great, until you use them, and you wish you didn't.

dropConfig in Perspective on the other hand, which is _similar in concept_ to UDTType parameters in Vision, are perfectly fine to use when using the path option. I would never use the _bind_ option for this though for similar reasons as vision

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [June 28, 2025, 11:14am UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/7 "2025-06-28T11:14:45Z")

</div>

I did a test once in my early days of Ignition after reading about others saying to avoid it, and they're right. I had a screen with a dozen or so valves using the UDT drop method and decided to rebuild the screen using tag paths and indirect bindings instead. The drop method took a second or 2 to load the screen with live values, but the indirect bindings with tag paths loaded almost instantly. It makes a huge difference in responsiveness.

Think about it this way. If your UDT has even just 10 tags, and you're only using 3 for the template, if you have a screen with 10 of these templates on the screen, Ignition has to pull 100 tag values to load vs only 30. This is a small example. Many times your UDT will have 20-30 tags and you'll have 20 or more on the screen. If you use 20 for both that's 400 tags vs 60 tags if you're only using 3 tags in the template.

Make the change now before you get a lot more done and have to redo everything to improve performance.

---

<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 28, 2025, 12:39pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/8 "2025-06-28T12:39:14Z")

</div>

I have tank UDTs some of which have 750 tags each, UDT Type parameters would obliterate performance, but it's also the limitations they cause for your template use cases

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 28, 2025, 3:07pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/9 "2025-06-28T15:07:01Z")

</div>

So, do I avoid UDT's entirely, or just avoid referencing them on-screen in a template or popup?

I ask this because it casts doubt whether or not to utilize UDT's at all.

I find the UDT structure very useful for organizing tags that contain history and alarming. I can copy a UDT for an analog signal, and make 5 different analog signal types, complete with all the parameters for alarming, history, etc. pre-filled. It makes organizing and deploying many tags intuitive to me.

My question now, is Abandon my UDT's? What would I do to replace them, create tag groups?

I feel like the UDT IS a tag grouping already.

On another note, if I put the UDT's into a tag group that is Leased/Driven, wouldn't that speed up the screens?

I am going to wait to do any more work on templates or popups today until I hear from the forum.

Thank you for your guidance, it is appreciated.

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [June 28, 2025, 3:09pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/10 "2025-06-28T15:09:49Z")

</div>

You should avoid UDT Type parameters, not avoid using UDT themselves. Just use a string parameter to reference the tag path and use indirect references.

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 28, 2025, 3:11pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/11 "2025-06-28T15:11:28Z")

</div>

OK, so keep my UDT structure, and simply _REFERENCE_ them by parameterized path instead of the UDT structure reference?

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [June 28, 2025, 3:18pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/12 "2025-06-28T15:18:35Z")

</div>

Correct, that is what most users do.

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 28, 2025, 4:07pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/13 "2025-06-28T16:07:12Z")

</div>

Thanks. Does this syntax look correct? (it works)

popup passed parameters:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/b/9b0f6003a57ad5a491632ce79e63dfcc861de0af.png)

popup indirect tag binding:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/c/ac314f24371289852ebc8a444c9b613111e050de.png)

---

<div class="post-metadata">

**Author:** ![jlandwerlen](https://avatars.discourse-cdn.com/v4/letter/j/bc8723/32.png) [@jlandwerlen](https://forum.inductiveautomation.com/u/jlandwerlen)\
**Post date:** [June 28, 2025, 4:35pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/14 "2025-06-28T16:35:38Z")

</div>

Sure. I usually just have a single parameter called tagPath, but I guess whatever works for you.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [June 28, 2025, 4:54pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/15 "2025-06-28T16:54:51Z")

</div>

I agree, use a single parameter named tagPath that way you can right-click a tag and just do a copy path then paste it in that parameter for easy tagging.

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 28, 2025, 4:54pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/16 "2025-06-28T16:54:59Z")

</div>

Thank you!

---

<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 29, 2025, 12:15am UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/17 "2025-06-29T00:15:38Z")

</div>

The issue for me with Tag and TagPath is terminology mismatch. A tag path in ignition is the full path to a tag. I actually _do_ use two params, tagName and tagParentPath, or deviceName and deviceParentPath and I combine them in another custom prop tagPath or deviceTagPath (for UDT instances).

It _is_ annoying because you always have to paste into both, but the benefit is that if you have a long tag path, you can actually see what device or tag it's pointing to at a glance, rather than having to click on the edit text icon, and I feel that's more important than slightly faster dev

---

<div class="post-metadata">

**Author:** ![tiim](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@tiim](https://forum.inductiveautomation.com/u/tiim)\
**Post date:** [June 29, 2025, 12:35am UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/18 "2025-06-29T00:35:21Z")

</div>

I have separate "PLC Areas" to browse, so I used a two-parameter method. It's working good so far.

---

<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 30, 2025, 1:03pm UTC](https://forum.inductiveautomation.com/t/how-to-dynamically-pass-tag-name-to-popup-via-udt-template/107894/19 "2025-06-30T13:03:39Z")

</div>

Again, this is why I do not use UDTs as parameters but rather the path to the UDT instance. It helps with consistency between all templates, popups, and template popups. It's also much more efficient and there's no extra steps to get the path from the UDT instance or create an extra parameter.

As far as exactly what parameter(s) you want to use for the path or to create the path there are many ways to skin that cat.
