Markdown hyperlinks not rendering in Entra External ID User Flow labels anymore

Luca Giorgi 0 Reputation points
2025-08-03T14:46:49.9233333+00:00

We are trying to add a hyperlink to the label of a custom boolean attribute on our Entra External ID sign-up page (User Flow), as described in the official Microsoft Entra documentation.

Link to Documentation:

https://learn.microsoft.com/en-us/entra/external-id/customers/how-to-define-custom-attributes#configure-the-user-input-types-and-page-layout

Steps Taken:

  1. In our External ID User Flow, we navigated to Page Layouts.
  2. We created a custom attribute with a Data Type of "Boolean".
  3. For the label, we entered the following Markdown:
I have read and agree to the [terms of use](https://woodgrove.com/terms-of-use)

We also tried using translation overrides with the markdown, same issue.

Expected Result:

The sign-up page should display the text "I have read and agree to the privacy policy" with "privacy policy" being a clickable hyperlink.

Actual Result:

The markdown is translated to HTML, however the page renders the raw HTML as plain text, displaying: "I have read and agree to the <a href=...>terms of use</a>." insted of embedding the HTML.

Troubleshooting Performed:

We have confirmed this is a recurring issue and not a configuration error of one user flow, because the issue persists even when creating a brand new user flow with a simple test case like "test".

Is there a new configuration we have to set to enable html embedding?

Microsoft Security | Microsoft Entra | Microsoft Entra External ID
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Praveen Chivarla 5 Reputation points Microsoft External Staff Moderator
    2025-08-12T11:25:58.3433333+00:00

    Hi @Luca Giorgi,

    Thank you for posting your query on Microsoft Q&A.

     As per our understanding, You are currently facing an issue where Markdown hyperlinks (e.g., terms of use) are no longer rendering correctly in the label of a custom Boolean attribute within your Entra External ID user flow (sign-up page). Instead of showing as a clickable link, the text is displayed as raw HTML, like <a href=...>terms of use</a>.

     In Microsoft Entra External ID user flows, even though you can enter Markdown like terms of use in labels, the system doesn’t actually turn that into a clickable link. This is because Microsoft blocks (or "sanitizes") HTML in these fields to prevent security issues like cross-site scripting (XSS) attacks. So, even though the Markdown turns into an HTML link behind the scenes, it’s shown as plain text. Right now, there's no setting available to change this behavior.

     
    Please do try the below steps and let us know if it works: Use the Built-In Terms of Use Feature

    If you just want to show a proper link for your Terms of Use, the easiest way is to use the built-in feature:

    1. Go to Azure PortalMicrosoft Entra IDExternal IdentitiesTerms of Use.
    2. Create a new policy. You can either upload a PDF or provide a direct URL.
    3. In your user flow, go to User attributes & tokens, and turn on Require terms of use.

    With this setup, the system will show a clickable link to your terms that users must accept before signing up.  

    Use a Custom Policy and Your Own Web Page

    If you need more control—like showing the link exactly how you want it—you can create your own custom sign-up page:

    1. Download Microsoft’s Azure AD B2C custom policy starter pack (it also works for Entra External ID).
    2. Edit the XML policy file, and change the <ContentDefinition> section so it points to your own hosted HTML page.
    3. In your HTML page, you can write the label exactly how you want it. For example: Html:

    <input type="checkbox" id="terms" required> <label for="terms">I agree to the <a href="https://woodgrove.com/terms-of-use" target="_blank">Terms of Use</a></label>

    1. Upload your custom policy and test the sign-up flow.

    Hope the information provided helps resolve the issue. If not, feel free to share your questions — we're happy to help!

     


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.