Technical Names
Inline field technical names with a per-field-type popover that surfaces dictionary actions, copy helpers, type-aware previews, and Pro-only intelligence on ServiceNow lists and forms.
Last updated: April 25, 2026
Technical Names ("/tn") puts the underlying field name next to every label on lists and forms, and adds a small popover with the actions you actually use during day-to-day development. It works on UI16, Next Experience, Agent Workspace, the Service Portal, list headers, related lists, and the variable editor.
The Free plan covers the entire "inspect, copy, navigate" surface. Pro adds an intelligence and advanced-action layer on top — including related-field grouping, Sidekick analyses, snippet generators, and the inline translations preview.
The Pill and the Popover Toggle
Each field gets a small pill with the technical name. Hovering reveals a toggle on the right — clicking it opens the popover with field-specific actions.
The toggle uses per-field-type icons so you can recognise field categories at a glance:
| Icon | Field types |
|---|---|
| flag | translated_field, translated_text, translated_html |
| link | reference, glide_list |
| dropdown | choice |
| toggle | boolean |
| calendar | glide_date, glide_date_time |
| clock | glide_duration |
| bubble | journal* |
| HTML tag | html |
| braces | script* |
| filter | conditions, condition_string |
| id card | document_id, document_key |
| currency | currency, price |
| hash | integer, decimal, float, longint |
| external | url |
email | |
| phone | ph_number, phone_number |
| gear | fallback for everything else |
On list headers the toggle starts as the gear (the dictionary type isn't fetched until the popover opens) and swaps to the type-specific icon as soon as the type resolves — at the same time the type-aware actions appear at the bottom of the menu.
Popover Hierarchy
Every popover follows the same top-to-bottom structure:
- Header —
table.field(selectable text). - Type label — internal type from the dictionary, e.g.
reference,glide_date_time,script_plain. - Type preview block (form popovers only) — at-a-glance metadata read from
g_formand the DOM, no extra fetches:reference→ reference table + display value + sys_idchoice→ current value/label + the first 5 choicesboolean→ current valueglide_date_time→ display value vs internal valuejournal*→ latest visible entry previewhtml→ character lengthdocument_id/document_key→ target table + record sys_id, plus the sibling field that names the table when it isn't the conventionaltablecolumncurrency→ display, raw, codeurl→ hostnameconditions→ query preview
- Translations preview (translatable fields, form popovers) — see below; Pro for the live data.
- Core actions — Open Dictionary, Copy field name, Copy
table.field, Copy value (when the field has one), Edit Field (admin), and the Sidekick Form Analyse entry (Pro). - Type-specific actions — see the Free/Pro split below.
- Pro intelligence and actions — related-field grouping on classic lists, Sidekick analyses, snippet generators, and RLQUERY Helper. Each entry shows a
PROpill; clicking without Pro shows the standard upgrade prompt.
Free: Inspect & Navigate
Available to everyone. The goal is to make every value reachable in one or two clicks.
- Reference / glide_list — Open Reference Table, Open Referenced Record, Copy reference sys_id, Copy display value.
- Choice — View Choice List, Copy current value, Copy current label, Copy choices as JSON, Copy choices as CSV.
- Boolean — Copy as boolean, Copy encoded query
field=true, Copy encoded queryfield=false, Toggle value. - Date / datetime / duration — Copy display value, Copy internal value, Copy encoded query "today", Copy encoded query "this week".
- Journal — Open activity stream, Copy latest entry, Copy all visible entries.
- HTML — Preview HTML in a new window, Copy HTML, Copy plain text.
- Script — Search in Code Search, Copy script value.
- Conditions — Preview Condition, Copy encoded query, Open list with query.
- document_id / document_key — Open Referenced Record, Open target table, Copy target sys_id, Copy target table, Copy
table.sys_idreference, Copy GlideRecord snippet, Locate dependent field. The dependent column is resolved from the form control'sdata-dependentattribute, so this works onsys_audit,sys_attachment,sysapproval_approver, etc. — anywhere the sibling table column isn't calledtable. - URL — Open URL, Copy URL, Copy hostname, Copy Markdown link, Copy HTML link.
- Email — Copy email, Mailto, Search users by email.
- Phone — Copy number, Copy normalized number, Search same number.
- Currency — Copy display amount, Copy raw amount, Copy currency code.
- Numeric — Copy value, Copy encoded query
>/<, Copy JS comparison.
Field labels themselves keep the existing affordances: reference labels link to the underlying record, translatable labels link to the full translations list, and UI Action labels link to the sys_ui_action record.
Pro: Understand, Analyze, Act
Pro adds intelligence and advanced actions that build on the same context the Free-plan popover already has. Every Pro entry shows a PRO pill; analysis entries open Sidekick, while direct actions run in place.
- Reference fields on classic lists — Group by related field opens a submenu of fields from the referenced table next to the popover. Click a field to regroup immediately, or use the arrow on another reference field to cascade into its fields. For example, open the
/tnpopover on Assigned to and choose Manager to group byassigned_to.manager. The selected path replaces any existing group-by field while preserving the active list filter and relevant URL context. If that field is not already a visible column, SN Utils offers to add it to your personalized list; this follow-up action has no additional Pro gate. Available to Pro, Trial, and Enterprise users. - Reference — Generate GlideRecord snippet, Find broken references.
- Choice — Detect inactive / duplicate choices, Generate switch statement.
- Boolean — Find scripts checking this field, Generate condition snippet.
- Date / datetime / duration — Generate GlideDateTime snippet, Explain timezone behaviour.
- Journal — Sidekick summarize journal, Extract action items.
- HTML — Convert to Markdown, Sidekick explain HTML.
- Script — Sidekick explain script, Detect risky APIs, Generate tests.
- Conditions — Sidekick explain query, Convert to GlideRecord.
- document_id / document_key — Validate target record.
- URL — Check link safety / status.
- Email — Find duplicate users.
- Phone — Normalize to E.164.
- Currency — Show related currency records.
- Numeric — Generate validation script.
- All field types — RLQUERY Helper for building related list queries visually.
Translations Preview
For translated_field, translated_text, and translated_html the popover renders a per-language preview block under the type label. The "View all →" link in the preview header opens the full sys_translated_text / sys_translated list for both tiers — that part is free.
- Free — the preview shows a blurred sample list (EN / ES / DE / FR / JA) with an Unlock with Pro overlay. No requests are issued from the browser.
- Pro — the preview lists every available language, walks parent tables via
PAUtils().getTableAncestors(), and click-to-copy is enabled on each row.
The flag icon (⚑) on translatable fields stays free in both tiers — it's part of the core "I can see this field is translatable" signal.
Table Name Pill
For Pro, Trial, and Enterprise users on classic forms and lists, a compact table quick-access pill appears in the header by default—even while technical names are off. It keeps the familiar technical-name pill shape with slightly quieter background and border styling. When /tn is enabled, it expands in place to include the table name. The first popover action switches between Enable technical names and Disable technical names, using the same behavior as /tn.
You can turn the default pill off under Manage → Settings → Developer Tooling → Table/Form Quick-access Pill. This is independent of Technical Names, which controls whether all technical names are shown automatically on page load.
The table menu exposes these table-level actions:
- Copy table name — copies
<table>. - Copy record link / Copy list link (Pro / Trial / Enterprise) — copies a named clickable hyperlink for rich-text destinations and a label plus short canonical URL for plain-text destinations. Form labels use
number - short descriptionwhen available; list links preserve the active encoded query. Run/linkfor the same context-aware action without opening the menu. - Show this record in list (form pills, saved records) / Open .list (everywhere else) — on a form with a saved record the action opens
<table>_list.do?sysparm_query=sys_id=<sys_id>so you land on a single-row list filtered to the record you're looking at, matching the same-named pill on the Who edited this panel. On new/unsaved records and related-list pills the action falls back to the unfiltered<table>_list.do. - Open collection record — opens the dictionary "collection" row (
sys_dictionarywherename=<table>andelementis empty), the row that represents the table itself rather than any of its fields. - Open Schema Map — opens the Schema Map for the table.
- Open table definition — opens the
sys_db_objectrecord. - Group by field (classic list pills, Pro / Trial / Enterprise) — opens a submenu of the table's fields next to the popover. The menu row carries a right arrow to make the submenu discoverable. Click a field to group the list, choose None to remove grouping, or follow the arrow on a reference field to cascade into a dot-walked path such as
assigned_to.manager. When the grouped field is not visible, a follow-up prompt can append it to your personalized list columns.
Two of these actions render their result above the form, in the same slot used by Who edited this — themed (dark / light / match-env), dismissable, with a slide-in animation, and replacing the legacy yellow ServiceNow info banner. Clicking the same action again closes the panel; clicking the other action swaps the panel contents.
Show Scratchpad (form pills only) — pretty-prints the current
g_scratchpadas monospaced JSON inside an SN Utils panel with a Copy JSON button in the header. Empty scratchpads render asg_scratchpad is empty.Show Table Fields (form pills only) — fetches every dictionary field for the inheritance chain (
PAUtils().getTableAncestors(<table>)) and renders one collapsible section per inheritance level. The current table opens by default; parent tables are collapsed so deep hierarchies (task,cmdb_ci) don't push the form off-screen. An Expand / Collapse all toggle in the panel toolbar appears when there are 2+ tables. Each section's summary shows:- the table name (with a this table tag for the current table)
- a status breakdown —
✓ N · ◌ M · ✖ K— visible even when the section is collapsed - a total field count
Each row shows the field's on-form status:
✓— visible on the current form◌— present on the form but currently hidden by UI policy / visibility rules✖— declared on the table but not on the current form view
When the form is on a saved record (i.e. there's a real
sys_id), the panel also fetches the full record in a single REST round-trip and renders the current value under every field — including off-form fields the form view never shows you. The auto-balanced column layout is preserved; each row simply grows from one line into two, with the value stacked under the field name in a muted monospace font. Empty values render as a muted em-dash and the whole row fades to a lower opacity so the populated fields stand out. Hover any value to see the raw vs display-value tooltip; long values truncate with ellipsis.When a table has more than ~10 fields, a filter box appears at the top of the panel. Type to substring-match field names across every section in the inheritance chain — matches stay visible with the hit highlighted, non-matching rows are hidden, sections that go empty collapse out of view, and a counter shows "N of M fields match". Press Esc (or click the ×) to clear the filter and restore the original section layout.
Pro + admin: Edit any field in place
Users with admin role on a Pro (or Trial / Enterprise) license get a pencil button on hover for every editable field — including off-form fields. Clicking opens the same field editor as double-click on a form label (typed inputs for boolean / choice / date / reference, raw-mode toggle, etc.).
On success the panel also syncs g_form so the form display matches what was just persisted (for fields that are actually on the form), the row flashes green, and a brief "Saved <field> → <value>" banner confirms what landed.
Editing is suppressed for system metadata (sys_id, sys_created_on, sys_created_by, sys_updated_on, sys_updated_by, sys_mod_count, sys_class_name) and for fields the dictionary flags read_only=true. ACL-restricted writes surface as a sticky red Failed to save <field> (HTTP 403) banner inside the panel — dismiss it with the × on the banner. Free-plan and non-admin users see the values but never see the pencil button.
Pro: Table Extension Overview
A Pro entry inside the same popover renders a compact parent → current → children inheritance tree, fetched from sys_db_object on demand. Each node links to the corresponding <table>_list.do; the current table is highlighted; sibling-heavy hierarchies (task, cmdb_ci) summarise child counts.
A small copy button in the top-right of the hierarchy puts the visible table names on your clipboard, one per line, in order (ancestors → current → direct children) — ready to paste into a ticket, encoded query, or script without retyping each step of the chain.
The selectable text in the pill (drag-to-select still works) is preserved — clicking the gear opens the popover, clicking the table name itself selects it.
Variable Editor
Variable pills on Service Catalog forms keep their minimal affordance: the technical name and a quick link. The expanded popover described above is intentionally not surfaced there — variables already have their own dedicated tooling in the variable editor.
Settings
Technical Names is enabled by default. Toggle it from the slash popup with /tn or via Settings → Field Names. The toggle is per-tab and persists across reloads.