Dynamic Text
Dynamic Text lets you drop live placeholders into certain title and label fields across Design Studio, so the text updates automatically per user and per record — instead of showing the same static label to everyone.
Any time you see a small @ hint or an ⓘ "Dynamic Text Guide" icon next to a title/label field in Design Studio, that field supports Dynamic Text. This page is the single reference for every one of those fields — bookmark it, or reach it from any module's own guide popup.
What Dynamic Text Does
Instead of typing a fixed title like Order Details, you can type:
Order @Instance.OrderNo Details
When the page renders, @Instance.OrderNo is replaced with the actual order number of the record being viewed — so every instance shows its own title.
If a token can't be resolved (no record in context, attribute has no value, etc.), it simply resolves to empty text — the rest of your title still renders normally, and Protrak trims any leftover joining punctuation (spaces, -, :, |, etc.) so you don't end up with an awkward dangling separator.
Token Syntax
A token always has the form:
@Root.AttributeName
| Part | Meaning |
|---|---|
@ | Marks the start of a placeholder — typing @ in a supported field opens an autocomplete list. |
Root | Which data source to pull from (see table below). |
AttributeName | The specific attribute (or fixed member, for Type/RelatedType) to insert. |
You can mix multiple tokens and plain text freely in the same field, e.g. @Type.SingularName — @Instance.Title.
Available Roots
| Root | Resolves to | Example |
|---|---|---|
@User.* | An attribute from the logged-in user's profile | @User.FirstName → Welcome @User.FirstName |
@Instance.* | An attribute from the record currently being viewed/edited | @Instance.OrderNo → Order @Instance.OrderNo — @Instance.Status |
@Type.* | Name, SingularName, or PluralName of the record's own Type | @Type.SingularName → @Type.SingularName Details |
@RelationAttribute.* | An attribute stored on the relationship itself (not on either linked record) — only on an Edit Relation form, or a relation-scoped QuickEdit form | @RelationAttribute.Quantity → Quantity: @RelationAttribute.Quantity |
@RelatedType.* | Name, SingularName, or PluralName of the Type being linked to — only on link/search popup headers and Edit Relation forms | @RelatedType.SingularName → Link to @RelatedType.SingularName |
On an Edit Relation form @Type.* means the Type of the parent record the relation sits on, since the form itself describes the relationship rather than a record.
Each field only offers the roots that make sense for it — e.g. a Home page widget has no record in context, so it only offers @User.*. Click the field's ⓘ Dynamic Text Guide icon to see exactly which roots (and examples) apply there.
Restrictions
- The attribute types you can insert are: text, user, boolean, picklist, currency, dateTime, date, numeric and reference. A reference token renders the linked record's name, or a comma-separated list of names when the attribute holds more than one. Rich text, expression, attachment, geolocation and lifecycle attributes are not offered in the picker.
- Tokens are one level deep — you can't chain through a relation (e.g. there's no
@Instance.Relation.Attribute). Use@RelationAttribute.*or@RelatedType.*on the surfaces that support them instead. - An unresolved token never shows the raw
@Root.Attributetext to end users — it silently becomes an empty string.
Where Dynamic Text Is Supported
| # | Surface | Navigate to | Allowed roots | Field name |
|---|---|---|---|---|
| 1 | Home page text widget | Design Studio → Page Templates → a Home template → drag/select a Text widget → its settings panel | @User.* only | Text widget content |
| 2 | Title widget on a form | Design Studio → Forms → open a form → drag a Title widget onto the canvas (or select an existing one) → its settings panel → Title Content | @User.*, @Instance.*, @Type.* (+ @RelationAttribute.* if the form is a relation-scoped QuickEdit form) | Title Content |
| 3 | Reference field search/link popup header | Design Studio → Forms → open a form → click a Reference-type field → Field Settings → set Link Option to SearchOnly or Both → Link Popup Header field appears | @User.*, @Instance.*, @Type.*, @RelatedType.* | Link Popup Header |
| 4 | Type Widget link options (relation/dashboard widgets) | Design Studio → Type Widgets → open a widget → Link Options table → configure a link action's popup header | @User.*, @Instance.*, @Type.*, @RelatedType.* | Header |
| 5 | Link/Create Related Instance action settings | Design Studio → Forms → a form's action buttons/menu → Link Related Instance action → its search popup settings | @User.*, @Instance.*, @Type.*, @RelatedType.* | Header |
| 6 | Title widget on an Edit Relation form — shown in the relation widget's link popup, a Dashboard widget's Link Related Instance action, and the Edit Relation row action | Design Studio → Forms → open a form whose Mode is Edit Relation → drag/select a Title widget → its settings panel → Title Content | @User.*, @Type.*, @RelationAttribute.*, @RelatedType.* | Title Content |
The form edits the relationship, so both ends are addressable: @Type.* is the Type of the parent record the relation grid sits on, and @RelatedType.* is the Type being linked. For example, Add @RelatedType.PluralName to @Type.SingularName reads as "Add Parts to Purchase Order".
@Instance.* is not offered — the link popup applies one set of values to every record selected, so there is no single record for it to resolve against.
@Type.* needs a parent record to read from. On a relation grid placed where there is no parent record — a type dashboard, for example — it resolves to empty like any other unresolved token.
The title you author once appears wherever that form is attached — the relation widget's 🔍 link popup, a Dashboard widget's Link Related Instance action, and the Edit Relation row action. See Edit Relation Action & Link Popup.
Using the Field Editor
Every Dynamic Text field behaves the same way:
- Click into the field and type
@— an autocomplete list of the roots and attributes valid for that specific field appears. - Pick a root and attribute, or keep typing to filter the list.
- Mix in plain text before/after/between tokens as needed.
- Click the ⓘ info icon next to the field to open the Dynamic Text Guide — a quick reference listing only the roots available on that field, each with one example.
Related Reading
| If you're working on... | See |
|---|---|
| Building the Home page itself | Design Studio Workflow — Workflow A |
| Form layout and field settings | Forms |
| Titles on a relation's own popup | Edit Relation Forms |
| Dashboard/Report/Relation widgets | Type Widgets |
| Overall module tour | Admin Configuration Guide |