Prompt.screen.text custom text variables resolve empty inside Universal Login partials

Problem

The Support email is down right now, so I can’t open a ticket for our customer. I’m trying to render a small localized string inside a Universal Login partial using the documented custom-text variable mechanism, and it’s coming up empty. I’ve verified all the usual suspects and want to check whether this is a known behavior or limitation before I spin further.

What I’m trying to do

Per the docs, define a custom text variable with the Management API for a given screen, then reference it in a partial as {{ prompt.screen.text.varX }} and have it render on that screen.

I defined var-broker-login (a neutral example rather than our real one, which is an alternate sign-in link):


PUT /api/v2/prompts/{screen}/custom-text/en
{ "screen": { "var-broker-login": "Use a different sign-in option" } }

And referenced it in the screen’s secondary-actions-start partial:


{{ prompt.screen.text.varBrokerLogin }}

What I’ve verified

  • Storage is correct. GET /prompts/{screen}/custom-text/{en,nl} reads back the exact object, keyed under the screen name.
  • The body key must be the screen name. If I use the prompt-family name as the body key instead, the API rejects it with "Invalid screen \"<family>\"".
  • Partials DO inject. Static HTML/CSS in the same partial renders fine (e.g. CSS that hides a button works).
  • Other template variables work. A test partial containing {{ locale }} rendered en.
  • Rendering mode is standard. I deliberately avoided advanced/ACUL, which I understand disables partials.

The actual problem

Every prompt.screen.text.* reference renders empty when the screen is served over the custom domain. I tried all accessor forms in the same partial:


{{ prompt.screen.text.varBrokerLogin }}
{{ prompts.screen.text.varBrokerLogin }}
{{ prompt.screen.text['varBrokerLogin'] }}
{{ prompt.screen.text['var-broker-login'] }}

All come back blank. I also tried a built-in text key the same way and it also rendered empty, which suggests the entire prompt.screen.text object is not being injected into the partial render context, not just my custom variable.

My tenant setup

  • universal_login_experience: new
  • identifier_first: true (so the identifier-first screen is the one being rendered)
  • Tenant sandbox_version: 22
  • Custom page template configured and applying correctly (both auth0:head and auth0:widget present; custom header/footer render)
  • Custom domain is ready, TLS provisioned, marked default
  • Rendered via an /authorize flow on the custom domain (a raw *.auth0.com host doesn’t apply partials, which I understand is by design)

Workaround I’m using for now

Since locale is available in the partial, I replaced the custom-text reference with a Liquid conditional:


{% if locale == "nl" %}...{% else %}...{% endif %}

That renders correctly, which confirms the partial and template context are healthy, and isolates the failure specifically to the custom-text bridge.

nevermind:
it’s not prompts.screen.text, it’s prompts.screen.texts

Please update the documentation on this page to reflect this: