Customize New Universal Login Pages
You can customize the New Universal Login pages by providing a page template using the Liquid template language. To learn more about Liquid, read the Introduction to Liquid on Github. You can update the ULP templates only using the Management API. This capability can only be used if the tenant has Custom Domains enabled.
Page templates let you define the content displayed around the Universal Login widgets (e.g., the Login box, the MFA box). The same template is used for all pages, helping you implement a consistent, branded login experience with less effort.
The simplest template you can write is:
<!DOCTYPE html><html>
<head>
{%- auth0:head -%}
</head>
<body>
{%- auth0:widget -%}
</body></html>Was this helpful?
The following tags must be present in the template:
auth0:widget -Includes the HTML for the widget that is displayed in every page (e.g., Login, Reset Password)auth0:head -Includes tags that are required to render the widget
If you use the class="_widget-auto-layout" in the <body> element, the widget will be centered in the page. If you want to position it yourself, you can omit it.
Page template variables
The page templates have a set of context variables that can be used to impact how the page is rendered. This allows you to implement scenarios like:
Render different content depending on the Application (for example, you own two brands that need a different page design).
Render different content depending on the Prompt (for example, in the Login page you want to add content explaining what the application does, but in the MFA flow, you prefer to only have the MFA box).
Add a footer with links to the tenant's support page or email.
Available variables
The available variables are:
The login page application's settings:
application.idapplication.nameapplication.logo_urlapplication.metadata
Universal Login branding settings:
branding.logo_urlbranding.colors.primarybranding.colors.page_background
Tenant's settings:
tenant.friendly_nametenant.support_emailtenant.support_url
When a user logs in through an Organization, organization information:
organization.idorganization.display_nameorganization.nameorganization.metadataorganization.branding.logo_urlorganization.branding.colors.primaryorganization.branding.colors.page_background
Information about the current Universal Login screen.
locale: Locale used to render the login pages, matching one of the supported tenant languagesprompt.name: Name of the Universal Login prompt being renderedprompt.screen.name: Name of the Universal Login screen being rendered.prompt.screen.texts: All the localized texts needed in the screen being rendered.
The term
promptis used to refer to a specific step in the login flow. Eachpromptcan have one or more screens. Below is the list of available prompts:commonScreen: redeem-ticket
Text Key Loading... pageTitleJavascript is not enabled on your browser, please click button to continue. descriptionContinue buttonTextconsentScreen: consent
Text Key Authorize ${clientName} pageTitleAuthorize App titleHi ${userName}, pickerTitleTenant and Audience selector audiencePickerAltText${clientName} is requesting access to your account. messageMultipleTenants${clientName} is requesting access to your ${companyName} account. messageSingleTenantAccept acceptButtonTextDecline declineButtonText${companyName} logoAltTextInvalid action invalid-actionAudience is required invalid-audienceInvalid scope, must be an array invalid-scopedevice-flowScreen: device-code-activation
Text Key Enter your device code to log in ${clientName} pageTitleContinue buttonTextEnter the code displayed on your device descriptionEnter your one-time code placeholderDevice Activation title${companyName} logoAltTextInvalid or expired user code invalid-expired-codePlease enter the code displayed on your device no-codeThe code you entered is invalid invalid-codeScreen: device-code-activation-allowed
Text Key Login successful ${clientName} pageTitleYour device is now connected. descriptionCongratulations, you're all set! eventTitleScreen: device-code-activation-denied
Text Key Login error ${clientName} pageTitleWe are not able to activate your device. descriptionActivation Denied eventTitleScreen: device-code-confirmation
Text Key Confirm your device code to log in ${clientName} pageTitlePlease confirm this is the code displayed on your ${clientName}: descriptionSecure code inputCodeLabelDevice Confirmation titleConfirm confirmButtonTextCancel cancelButtonTextIf you did not initiate this action or you do not recognize this device select cancel. confirmationText${companyName} logoAltTextemail-otp-challengeScreen: email-otp-challenge
Text Key Enter your email code to log in ${clientName} pageTitleContinue buttonTextWe've sent an email with your code to ${email} descriptionEnter the code placeholderResend resendActionTextDidn't receive an email? resendTextVerify Your Identity title${companyName} logoAltTextOTP Code must have 6 numeric characters invalid-otp-code-formatThe code you entered is invalid invalid-codeWe couldn't verify the code. Please try again later. authenticator-errorYou have exceeded the amount of emails. Wait a few minutes and try again. too-many-emailemail-verificationScreen: email-verification-result
Text Key Email verification status ${clientName} pageTitleEmail Verified verifiedTitleError errorTitleYour email address was successfully verified. verifiedDescriptionThis account is already verified. alreadyVerifiedDescriptionUser account does not exist or the verification code is invalid. invalidAccountOrCodeDescriptionYour email address could not be verified. unknownErrorDescriptionBack to ${clientName} buttonTextThis ticket was expired. auth0-users-expired-ticketSomething went wrong, please try again later. custom-script-error-codeThis ticket was already used. auth0-users-used-ticketSomething went wrong, please try again later auth0-users-validationinvitationScreen: accept-invitation
Text Key Accept your invitation to sign up ${clientName} pageTitleYou've Been Invited! title${inviterName} has invited you (${email}) to join ${companyName} on ${clientName}. descriptionContinue buttonText${companyName} logoAltTextloginScreen: login
Text Key Log in ${clientName} pageTitleWelcome titleLog in to ${companyName} to continue to ${clientName}. descriptionOr separatorTextContinue buttonTextContinue with {yourConnectionName} federatedConnectionButtonTextSign up signupActionLinkTextDon't have an account? signupActionTextForgot password? forgotPasswordTextPassword passwordPlaceholderUsername or email address usernamePlaceholderEmail address emailPlaceholderEdit editEmailTextAlerts alertListTitleYou've Been Invited! invitationTitleLog in to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}. invitationDescription${companyName} logoAltTextShow password showPasswordTextHide password hidePasswordTextWrong username or password wrong-credentialsThe code you entered is invalid invalid-codeInvalid or expired user code invalid-expired-codeEmail is not valid. invalid-email-formatWrong email or password wrong-email-credentialsSomething went wrong, please try again later. custom-script-error-codeSomething went wrong, please try again later auth0-users-validationWe are sorry, something went wrong when attempting to login authentication-failureInvalid connection invalid-connectionWe have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator. ip-blockedInvalid connection no-db-connectionWe have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed. password-breachedYour account has been blocked after multiple consecutive login attempts. user-blockedToo many login attempts for this user. Please wait, and try again later. same-user-loginPlease enter an email address no-emailPassword is required no-passwordUsername is required no-usernamelogin-idScreen: login-id
Text Key Log in ${clientName} pageTitleWelcome titleLog in to ${companyName} to continue to ${clientName}. descriptionOr separatorTextContinue buttonTextContinue with {yourConnectionName} federatedConnectionButtonTextSign up signupActionLinkTextDon't have an account? signupActionTextPassword passwordPlaceholderUsername or email address usernamePlaceholderEmail address emailPlaceholderPhone number phonePlaceholderEdit editEmailTextAlerts alertListTitleEnter a valid phone number error-invalid-phone-number${companyName} logoAltTextWrong username or password wrong-credentialsThe code you entered is invalid invalid-codeInvalid or expired user code invalid-expired-codeEmail is not valid. invalid-email-formatWrong email or password wrong-email-credentialsSomething went wrong, please try again later. custom-script-error-codeSomething went wrong, please try again later auth0-users-validationWe are sorry, something went wrong when attempting to login authentication-failureInvalid connection invalid-connectionWe have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator. ip-blockedInvalid connection no-db-connectionEmail does not match any enterprise directory no-hrd-connectionWe have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed. password-breachedYour account has been blocked after multiple consecutive login attempts. user-blockedToo many login attempts for this user. Please wait, and try again later. same-user-loginPlease enter an email address no-emailPassword is required no-passwordUsername is required no-usernamelogin-passwordScreen: login-password
Text Key Enter your password to log in ${clientName} pageTitleEnter Your Password titleEnter your password for ${companyName} to continue to ${clientName} descriptionOr separatorTextContinue buttonTextContinue with {yourConnectionName} federatedConnectionButtonTextSign up signupActionLinkTextDon't have an account? signupActionTextForgot password? forgotPasswordTextPassword passwordPlaceholderUsername or email address usernamePlaceholderEmail address emailPlaceholderEdit editEmailTextEdit email address editLinkScreenReadableTextAlerts alertListTitleYou've Been Invited! invitationTitleLog in to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}. invitationDescription${companyName} logoAltTextUse Fingerprint or Face Recognition useBiometricsTextShow password showPasswordTextHide password hidePasswordTextWrong username or password wrong-credentialsThe code you entered is invalid invalid-codeInvalid or expired user code invalid-expired-codeEmail is not valid. invalid-email-formatWrong email or password wrong-email-credentialsSomething went wrong, please try again later. custom-script-error-codeSomething went wrong, please try again later auth0-users-validationWe are sorry, something went wrong when attempting to login authentication-failureInvalid connection invalid-connectionWe have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator. ip-blockedInvalid connection no-db-connectionWe have detected a potential security issue with this account. To protect your account, we have prevented this login. Please reset your password to proceed. password-breachedYour account has been blocked after multiple consecutive login attempts. user-blockedToo many login attempts for this user. Please wait, and try again later. same-user-loginPlease enter an email address no-emailPassword is required no-passwordUsername is required no-usernamelogin-passwordlessScreen: login-passwordless-email-code
Text Key Enter your email code to log in ${clientName} pageTitleContinue buttonTextWe've sent an email with your code to ${email} descriptionEnter the code placeholderResend resendActionTextDidn't receive an email? resendTextVerify Your Identity title${companyName} logoAltTextCode is invalid invalid-verification-codeCode could not be sent. Please try again later. passwordless-authenticator-errorSomething went wrong. Please try again later. passwordless-unknown-errorScreen: login-passwordless-email-link
Text Key Email Sign In Link ${clientName} pageTitleEmail sent successTitleSomething went wrong errorTitleEmail sent. Check your inbox for a login link. descriptionPlease try again later. unknownErrorDescriptionScreen: login-passwordless-sms-otp
Text Key Enter your phone code to log in ${clientName} pageTitleVerify Your Identity titleWe've sent a text message to: descriptionContinue buttonTextEdit editTextEnter the 6-digit code placeholderResend resendActionTextDidn't receive a code? resendText${companyName} logoAltTextCode is invalid invalid-verification-codeCode could not be sent. Please try again later. passwordless-authenticator-errorSomething went wrong. Please try again later. passwordless-unknown-errorlogin-email-verificationScreen: login-email-verification
Text Key Enter your email code to log in ${clientName} pageTitleContinue buttonTextWe've sent an email with your code to ${email} descriptionEnter the code placeholderResend resendActionTextDidn't receive an email? resendTextVerify Your Email title${companyName} logoAltTextOTP Code must have 6 numeric characters invalid-otp-code-formatThe code you entered is invalid invalid-codeInvalid or expired user code invalid-expired-codeWe couldn't verify the code. Please try again later. authenticator-errorYou have exceeded the amount of emails. Wait a few minutes and try again. too-many-emaillogoutScreen: logout
Text Key Logout ${clientName} pageTitleLogout titleHi ${userName}, userSaluteAre you sure you want to log out from ${clientName}? descriptionYes acceptButtonTextNo declineButtonText${companyName} logoAltTextmfaScreen: mfa-detect-browser-capabilities
Text Key Try another method pickAuthenticatorTextReload reloadButtonTextJavaScript Required noJSErrorTitleYour browser does not have JavaScript enabled. Please enable and press the Reload page button. noJSErrorDescriptionScreen: mfa-enroll-result
Text Key MFA enrollment status pageTitleYou're All Set! enrolledTitleYou have successfully added a new authentication factor. enrolledDescriptionInvalid Link invalidTicketTitleThis link is invalid or expired. invalidTicketDescriptionExpired Link expiredTicketTitleThis link is expired. expiredTicketDescriptionAlready used alreadyUsedTitleThis link has already been used. Please get a new link to enroll with Multi-factor Authentication. alreadyUsedDescriptionTwo-factor Verification has Already Been Enabled. alreadyEnrolledDescriptionSomething Went Wrong genericErrorScreen: mfa-login-options
Text Key List of other login methods ${clientName} pageTitleGo back backTextOther Methods titleSMS authenticatorNamesSMSPhone authenticatorNamesVoicePhone authenticatorNamesPhoneNotification via ${appName} app authenticatorNamesPushNotificationGoogle Authenticator or similar authenticatorNamesOTPEmail authenticatorNamesEmailRecovery code authenticatorNamesRecoveryCodeNotification via DUO app authenticatorNamesDUOSecurity Key authenticatorNamesWebauthnRoamingFingerprint or Face Recognition authenticatorNamesWebauthnPlatformScreen: mfa-begin-enroll-options
Text Key Add another authentication method ${clientName} pageTitleGo back backTextKeep Your Account Safe titleAdd another authentication method. description${companyName} logoAltTextSMS authenticatorNamesSMSPhone authenticatorNamesVoicePhone authenticatorNamesPhoneNotification via ${appName} app authenticatorNamesPushNotificationGoogle Authenticator or similar authenticatorNamesOTPEmail authenticatorNamesEmailRecovery code authenticatorNamesRecoveryCodeNotification via DUO app authenticatorNamesDUOSecurity Key authenticatorNamesWebauthnRoamingFingerprint or Face Recognition authenticatorNamesWebauthnPlatformmfa-emailScreen: mfa-email-challenge
Text Key Enter your email code to log in ${clientName} pageTitleGo Back backTextContinue buttonTextWe've sent an email with your code to descriptionTry another method pickAuthenticatorTextEnter the code placeholderRemember this device for 30 days rememberMeTextResend resendActionTextDidn't receive an email? resendTextVerify Your Identity title${companyName} logoAltTextOTP Code must have 6 numeric characters invalid-otp-code-formatThe code you entered is invalid invalid-codeWe couldn't verify the code. Please try again later. authenticator-errorNotification was not sent. Try resending the code. no-transaction-in-progressYou have exceeded the amount of emails. Wait a few minutes and try again. too-many-emailYour enrollment transaction expired, you will need to start again. transaction-not-foundWe couldn't send the email. Please try again later. mfa-email-challenge-authenticator-errorScreen: mfa-email-list
Text Key List of available email addresses ${clientName} pageTitleGo back backTextEnrolled Email Addresses titlemfa-otpScreen: mfa-otp-enrollment-qr
Text Key Scan the code to log in using a one-time password ${clientName} pageTitleSecure Your Account titleScan the QR Code below using your preferred authenticator app and then enter the provided one-time code below. descriptionContinue buttonTextTrouble Scanning? codeEnrollmentTextTry another method pickAuthenticatorTextEnter your one-time code placeholderThen separatorText${companyName} logoAltTextOTP Code must have 6 numeric characters invalid-otp-code-formatThe code you entered is invalid invalid-codeToo many failed codes. Wait for some minutes before retrying. too-many-failuresYour enrollment transaction expired, you will need to start again. transaction-not-foundYou are already enrolled on MFA. user-already-enrolledScreen: mfa-otp-enrollment-code
Text Key Copy the code to log in using a one-time password ${clientName} pageTitleGo back backTextContinue buttonTextSecure code to copy altTextCopy code copyCodeButtonTextManually enter the following code into your preferred authenticator app and then enter the provided one-time code below. descriptionTry another method pickAuthenticatorTextEnter your one-time code placeholderSecure Your Account title${companyName} logoAltTextToo many failed codes. Wait for some minutes before retrying. too-many-failuresYour enrollment transaction expired, you will need to start again. transaction-not-foundScreen: mfa-otp-challenge
Text Key Enter your one-time password to log in ${clientName} pageTitleVerify Your Identity titleCheck your preferred one-time password application for a code. descriptionContinue buttonTextTry another method pickAuthenticatorTextEnter your one-time code placeholderRemember this device for 30 days rememberMeText${companyName} logoAltTextUse password usePasswordTextWe couldn't verify the code. Please try again later. authenticator-errorToo many failed codes. Wait for some minutes before retrying. too-many-failuresYour enrollment transaction expired, you will need to start again. transaction-not-foundmfa-phoneScreen: mfa-phone-challenge
Text Key Use your phone number to log in ${clientName} pageTitleVerify Your Identity titleWe will send a 6-digit code to the following phone number: descriptionContinue continueButtonTextChoose another phone number. changePhoneTextText message smsButtonTextVoice call voiceButtonTextHow do you want to receive the code? chooseMessageTypeTextTry another method pickAuthenticatorTextEnter your phone number placeholder${companyName} logoAltTextThere was a problem sending the SMS send-sms-failedThere was a problem making the voice call send-voice-failedPhone number can only include digits. invalid-phone-formatIt seems that your phone number is not valid. Please check and retry. invalid-phoneYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-smsYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-voiceYour enrollment transaction expired, you will need to start again. transaction-not-foundPlease enter a phone number no-phoneScreen: mfa-phone-enrollment
Text Key Enter your phone number to log in using a phone code ${clientName} pageTitleSecure Your Account titleEnter your country code and phone number to which we can send a 6-digit code: descriptionContinue continueButtonTextText message smsButtonTextVoice call voiceButtonTextHow do you want to receive the code? chooseMessageTypeTextTry another method pickAuthenticatorTextEnter your phone number placeholder${companyName} logoAltTextThere was a problem sending the SMS send-sms-failedThere was a problem making the voice call send-voice-failedWe couldn't send the SMS. Please try again later. sms-authenticator-errorPhone number can only include digits. invalid-phone-formatIt seems that your phone number is not valid. Please check and retry. invalid-phoneYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-smsYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-voiceYour enrollment transaction expired, you will need to start again. transaction-not-foundPlease enter a phone number no-phonemfa-pushScreen: mfa-push-welcome
Text Key Install the application ${clientName} pageTitleSecure Your Account titleIn order to continue, install the ${appName} app via the app store from your mobile device. descriptionGoogle Play androidButtonTextContinue buttonTextApp Store iosButtonTextTry another method pickAuthenticatorText${companyName} logoAltTextScreen: mfa-push-enrollment-qr
Text Key Scan the code to log in using a push notification ${clientName} pageTitleSecure Your Account titleScan the QR Code below using the ${appName} app on your mobile device. descriptionTry another method pickAuthenticatorTextContinue buttonText${companyName} logoAltTextYou must scan the QR code with the ${appName} app on your mobile device. enrollment-transaction-pendingScreen: mfa-push-challenge-push
Text Key Accept the push notification to log in ${clientName} pageTitleVerify Your Identity titleWe’ve sent a notification to the following device via the ${appName} app: descriptionI've responded on my device buttonTextTry another method pickAuthenticatorTextRemember this device for 30 days rememberMeTextResend resendActionTextDidn't receive a notification? resendTextManually Enter Code enterOtpCodeOR separatorText${companyName} logoAltTextYou must accept the notification via the ${appName} app on your mobile device. challenge-transaction-pendingWe have not received a confirmation, please slow down. polling-interval-exceededWe have received too many notification requests. Wait a few minutes and try again. too-many-pushYour enrollment transaction expired, you will need to start again. transaction-not-foundWe have not received a confirmation, please try scanning the code again. mfa-push-verify-transaction-pendingWe couldn't verify the enrollment. Please try again later. mfa-push-verify-authenticator-errorWe couldn't send the notification. Please try again later. mfa-push-challenge-authenticator-errorNotification rejected transaction-rejectedScreen: mfa-push-list
Text Key List of available devices ${clientName} pageTitleGo back backTextRegistered Devices titlemfa-recovery-codeScreen: mfa-recovery-code-enrollment
Text Key Copy your recovery code for safe keeping ${clientName} pageTitleAlmost There! titleCopy this recovery code and keep it somewhere safe. You’ll need it if you ever need to log in without your device. descriptionSecure code to copy altTextContinue buttonTextI have safely recorded this code checkboxTextCopy code copyCodeButtonText${companyName} logoAltTextPlease confirm you have recorded the code no-confirmationScreen: mfa-recovery-code-challenge
Text Key Enter your recovery code to log in ${clientName} pageTitleVerify Your Identity titleEnter the recovery code you were provided during your initial enrollment. descriptionContinue buttonTextTry another method pickAuthenticatorTextEnter your recovery code placeholder${companyName} logoAltTextThe code you entered is invalid invalid-codeRecovery code must have 24 alphanumeric characters invalid-code-formatWe couldn't verify the code. Please try again later. authenticator-errorPlease confirm you have recorded the code no-confirmationToo many failed codes. Wait for some minutes before retrying. too-many-failuresYour enrollment transaction expired, you will need to start again. transaction-not-foundmfa-smsScreen: mfa-country-codes
Text Key Select your country code ${clientName} pageTitleGo back backTextSelect a Country Code titleScreen: mfa-sms-enrollment
Text Key Enter your phone number to log in using a text message ${clientName} pageTitleSecure Your Account titleEnter your phone number below. An SMS will be sent to that number with a code to enter on the next screen. descriptionContinue buttonTextTry another method pickAuthenticatorTextEnter your phone number placeholder${companyName} logoAltTextThere was a problem sending the SMS send-sms-failedWe couldn't send the SMS. Please try again later. sms-authenticator-errorPhone number can only include digits. invalid-phone-formatSeems that your phone number is not valid. Please check and retry. invalid-phoneYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-smsYour enrollment transaction expired, you will need to start again. transaction-not-foundPlease enter a phone number no-phoneScreen: mfa-sms-challenge
Text Key Enter your phone code to log in ${clientName} pageTitleVerify Your Identity titleWe've sent a text message to: descriptionContinue buttonTextEdit editTextEdit phone number editLinkScreenReadableTextTry another method pickAuthenticatorTextEnter the 6-digit code placeholderRemember this device for 30 days rememberMeTextResend resendActionTextDidn't receive a code? resendTextor resendVoiceActionSeparatorTextBeforeget a call resendVoiceActionText${companyName} logoAltTextOTP Code must have 6 numeric characters invalid-otp-code-formatThe code you entered is invalid invalid-codeThere was a problem sending the SMS send-sms-failedWe couldn't verify the code. Please try again later. authenticator-errorWe couldn't send the SMS. Please try again later. sms-authenticator-errorNotification was not sent. Try resending the code. no-transaction-in-progressToo many failed codes. Wait for some minutes before retrying. too-many-failuresYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-smsYour enrollment transaction expired, you will need to start again. transaction-not-foundScreen: mfa-sms-list
Text Key List of available phone numbers ${clientName} pageTitleGo back backTextEnrolled Phone Numbers titlemfa-voiceScreen: mfa-voice-enrollment
Text Key Enter your phone number to log in using a phone code ${clientName} pageTitleSecure Your Account titleEnter your phone number below. A voice call will be placed on that number with a code to enter on the next screen. descriptionContinue buttonTextTry another method pickAuthenticatorTextEnter your phone number placeholder${companyName} logoAltTextThere was a problem sending the SMS send-sms-failedPhone number can only include digits. invalid-phone-formatSeems that your phone number is not valid. Please check and retry. invalid-phoneYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-smsYour enrollment transaction expired, you will need to start again. transaction-not-foundPlease enter a phone number no-phoneScreen: mfa-voice-challenge
Text Key Enter your phone code to log in ${clientName} pageTitleVerify Your Identity titleWe've sent a 6-digit code via voice phone call to the following phone number: descriptionContinue buttonTextEdit editTextEdit phone number editLinkScreenReadableTextChoose another phone number. changePhoneTextTry another method pickAuthenticatorTextEnter the 6-digit code placeholderRemember this device for 30 days rememberMeTextCall again resendActionTextDidn't receive a call? resendTextor resendSmsActionSeparatorTextBeforesend a text resendSmsActionText${companyName} logoAltTextOTP Code must have 6 numeric characters invalid-otp-code-formatThe code you entered is invalid invalid-codeThere was a problem making the voice call send-voice-failedWe couldn't verify the code. Please try again later. authenticator-errorWe couldn't make the voice call. Please try again later. voice-authenticator-errorNotification was not sent. Try resending the code. no-transaction-in-progressToo many failed codes. Wait for some minutes before retrying. too-many-failuresYou have exceeded the maximum number of phone messages per hour. Wait a few minutes and try again. too-many-voiceYour enrollment transaction expired, you will need to start again. transaction-not-foundmfa-webauthnScreen: mfa-webauthn-platform-enrollment
Text Key Log in faster on this device ${clientName} pageTitleLog In Faster on This Device titleTrust this device? You can quickly and securely log in the next time using this device's fingerprint or face recognition. descriptionAwaiting device confirmation awaitingConfirmation${companyName} logoAltTextContinue continueButtonTextTry another method pickAuthenticatorTextRemind me later snoozeEnrollmentButtonTextNot on this device refuseAddingDeviceTextNot now skipAddingDeviceTextWe could not start the device enrollment. Please try again later. webauthn-platform-associate-errorScreen: mfa-webauthn-roaming-enrollment
Text Key Register your security key ${clientName} pageTitleAdding Your Security Key titleSecurity Keys can be used as an additional authentication factor. descriptionAwaiting Security Key awaitingConfirmation${companyName} logoAltTextUse security key continueButtonTextTry another method pickAuthenticatorTextConnect your Security Key and continue. instructions1Follow the steps on the browser. instructions2Name your Security Key to easily identify it later. instructions3We could not start the security key enrollment. Please try again later. webauthn-associate-errorScreen: mfa-webauthn-platform-challenge
Text Key Use fingerprint or face recognition to login ${clientName} titlePress the button below and follow your browser's steps to log in. descriptionAwaiting device confirmation awaitingConfirmationToo many failed authentication attempts. Please try again later. too-many-webauthn-challenge-attempts-error${companyName} logoAltTextContinue continueButtonTextTry another method pickAuthenticatorTextUse password usePasswordTextRemember this device for 30 days rememberMeTextWe could not start the device verification. Please try again later. webauthn-platform-challenge-errorScreen: mfa-webauthn-roaming-challenge
Text Key Use your security key to log in ${clientName} pageTitleVerify Your Identity titleMake sure your Security Key is nearby. Once you continue, you will be prompted to use it. descriptionAwaiting Security Key awaitingConfirmationToo many failed authentication attempts. Please try again later. too-many-webauthn-challenge-attempts-error${companyName} logoAltTextUse security key continueButtonTextTry another method pickAuthenticatorTextRemember this device for 30 days rememberMeTextWe could not start the security key verification. Please try again later. webauthn-challenge-errorScreen: mfa-webauthn-change-key-nickname
Text Key Name your security key ${clientName} titleIf you own multiple keys, this alias will help you identify the right one. description${userName}'s key nicknameSecurity key name nicknamePlaceholderName your device ${clientName} If you own multiple devices, this alias will help you identify the right one. descriptionPlatform${userName}'s ${deviceName} nicknamePlatformDevice name nicknamePlaceholderPlatformContinue buttonText${companyName} logoAltTextWe could not update your key's name. Please try again. webauthn-patch-nickname-errorWe could not update your Device's name. Please try again. webauthn-platform-patch-nickname-errorName is required no-nicknameName is too short nickname-too-shortName is too long nickname-too-longAn error occurred while retrieving your information. Please try again. error-while-retrieving-authenticatorAn error occurred while trying to save the name . Please try again. error-while-patchingScreen: mfa-webauthn-enrollment-success
Text Key Security key successful ${clientName} titleDevice registration successful ${clientName} titlePlatformYou have successfully registered your Security Key. descriptionYou have successfully registered your device. descriptionPlatformContinue buttonText${companyName} logoAltTextScreen: mfa-webauthn-error
Text Key Try again tryAgainLinkTextTry another method pickAuthenticatorTextSecurity key registration error ${clientName} Security Key Verification Failed errorTitleChallengeDevice registration error ${clientName} Something Went Wrong errorTitlePlatformChallengeSomething went wrong. Please try again or try using another method. descriptionIf you already registered this device, please try again. If not, try using another method. descriptionPlatformNo Thanks refuseAddingAuthenticatorTextUse password usePasswordTextScreen: mfa-webauthn-not-available-error
Text Key Security keys are not supported ${clientName} pageTitleSecurity Keys Are Not Supported errorTitleWe are sorry but your browser or device does not support Security Keys. Try using another browser or log in from another device. errorDescriptionTry another method pickAuthenticatorTextUse password usePasswordTextorganizationsScreen: organization-selection
Text Key Enter your organization ${clientName} pageTitleContinue buttonTextEnter your ${companyName} Organization Name to continue descriptionEnter your Organization Name placeholderEnter Organization title${companyName} logoAltTextThe organization you entered is invalid invalid-organizationreset-passwordScreen: reset-password-request
Text Key Reset your password ${clientName} pageTitleForgot Your Password? titleBack to ${clientName} backToLoginLinkTextContinue buttonTextEnter your email address and we will send you instructions to reset your password. descriptionEmailEnter your username and we will send you instructions to reset your password. descriptionUsernameEmail address placeholderEmailUsername placeholderUsername${companyName} logoAltTextEmail is not valid. invalid-email-formatThis ticket was expired. auth0-users-expired-ticketSomething went wrong, please try again later. custom-script-error-codeThis ticket was already used. auth0-users-used-ticketSomething went wrong, please try again later auth0-users-validationWe had a problem sending the email, please try again later. reset-password-errorYou have exceeded the amount of emails. Wait a few minutes and try again. too-many-emailYou have exceeded the amount of emails. Wait a few minutes and try again. too-many-requestsPlease enter an email address no-emailUsername is required no-usernameScreen: reset-password-email
Text Key Check your email ${clientName} pageTitleCheck Your Email titlePlease check the email address ${email} for instructions to reset your password. emailDescriptionResend email resendLinkTextPlease check the email address associated with the username ${email} for instructions to reset your password. usernameDescriptionScreen: reset-password
Text Key Reset your password ${clientName} pageTitleChange Your Password titleEnter a new password below to change your password. descriptionReset password buttonTextNew password passwordPlaceholderRe-enter new password reEnterpasswordPlaceholderYour password must contain: passwordSecurityText${companyName} logoAltTextShow password showPasswordTextHide password hidePasswordTextThis ticket was expired. auth0-users-expired-ticketSomething went wrong, please try again later. custom-script-error-codeThis ticket was already used. auth0-users-used-ticketSomething went wrong, please try again later auth0-users-validationNew password confirmation is missing no-re-enter-passwordPassword contains user information password-contains-user-informationScreen: reset-password-success
Text Key Password reset successful ${clientName} pageTitlePassword Changed! eventTitleYour password has been changed successfully. descriptionBack to ${clientName} buttonTextScreen: reset-password-error
Text Key Password reset error ${clientName} pageTitleBack to ${clientName} backToLoginLinkTextTo reset your password, return to the login page and select "Forgot Your Password" to send a new email. descriptionExpiredTo reset your password, return to the login page and select "Forgot Your Password" to send a new email. descriptionGenericThis link has already been used. To reset your password, return to the login page and select "Forgot Your Password" to send a new email. descriptionUsedLink Expired eventTitleExpiredInvalid Link eventTitleGenericInvalid Link eventTitleUsedThis ticket was expired. auth0-users-expired-ticketSomething went wrong, please try again later. custom-script-error-codeThis ticket was already used. auth0-users-used-ticketSomething went wrong, please try again later auth0-users-validationWe had a problem sending the email, please try again later. reset-password-errorsignupScreen: signup
Text Key Sign up ${clientName} pageTitleWelcome titleSign Up to ${companyName} to continue to ${clientName}. descriptionOr separatorTextContinue buttonTextEmail address emailPlaceholderContinue with {yourConnectionName} federatedConnectionButtonTextLog in loginActionLinkTextAlready have an account? loginActionTextPassword passwordPlaceholderYour password must contain: passwordSecurityTextUsername usernamePlaceholder${companyName} logoAltTextShow password showPasswordTextHide password hidePasswordTextThe user already exists. email-in-useEmail is not valid. invalid-email-formatThe password is too weak password-too-weakThe password is too weak password-policy-not-conformantThe password is too common password-too-commonPassword has previously been used password-previously-usedPasswords don't match password-mismatchPassword contains user information password-contains-user-informationUsername can only contain alphanumeric characters or: '${characters}'. Username should have between ${min} and ${max} characters. invalid-usernameThe username must not be longer than ${max} characters. invalid-username-max-lengthThe username must have at least ${min} characters. invalid-username-min-lengthThe username has invalid characters. invalid-username-invalid-charactersThe username cannot be an email. invalid-username-email-not-allowedThe username provided is in use already. username-takenSomething went wrong, please try again later. custom-script-error-codeSomething went wrong, please try again later auth0-users-validationInvalid connection invalid-connectionWe have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator. ip-blockedToo many signups from the same IP ip-signup-blockedInvalid connection no-db-connectionPlease enter an email address no-emailPassword is required no-passwordNew password confirmation is missing no-re-enter-passwordUsername is required no-usernameThis combination of credentials was detected in a public data breach on another website. Before your account is created, please use a different password to keep it secure. password-breachedsignup-idScreen: signup-id
Text Key Sign up ${clientName} pageTitleCreate Your Account titleSign Up to ${companyName} to continue to ${clientName}. descriptionOr separatorTextContinue buttonTextPhone number phonePlaceholderEmail address emailPlaceholderContinue with {yourConnectionName} federatedConnectionButtonTextLog in loginActionLinkTextAlready have an account? loginActionTextPassword passwordPlaceholderYour password must contain: passwordSecurityTextUsername usernamePlaceholderEnter a valid phone number error-invalid-phone-number${companyName} logoAltTextThe user already exists. email-in-useEmail is not valid. invalid-email-formatThe password is too weak password-too-weakThe password is too weak password-policy-not-conformantThe password is too common password-too-commonPassword has previously been used password-previously-usedPasswords don't match password-mismatchUsername can only contain alphanumeric characters or: '${characters}'. Username should have between ${min} and ${max} characters. invalid-usernameThe username must not be longer than ${max} characters. invalid-username-max-lengthThe username must have at least ${min} characters. invalid-username-min-lengthThe username has invalid characters. invalid-username-invalid-charactersThe username cannot be an email. invalid-username-email-not-allowedThe username provided is in use already. username-takenSomething went wrong, please try again later. custom-script-error-codeSomething went wrong, please try again later auth0-users-validationInvalid connection invalid-connectionWe have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator. ip-blockedToo many signups from the same IP ip-signup-blockedInvalid connection no-db-connectionEmail does not match any enterprise directory no-hrd-connectionPlease enter an email address no-emailPassword is required no-passwordNew password confirmation is missing no-re-enter-passwordUsername is required no-usernamesignup-passwordScreen: signup-password
Text Key Create a password to sign up ${clientName} pageTitleCreate Your Account titleSet your password for ${companyName} to continue to ${clientName} descriptionOr separatorTextContinue buttonTextEmail address emailPlaceholderEdit editEmailTextEdit email address editLinkScreenReadableTextContinue with {yourConnectionName} federatedConnectionButtonTextLog in loginActionLinkTextAlready have an account? loginActionTextPassword passwordPlaceholderYour password must contain: passwordSecurityTextUsername usernamePlaceholderAccept your invitation to sign up ${clientName} invitationTitleSign Up to accept ${inviterName}'s invitation to join ${companyName} on ${clientName}. invitationDescription${companyName} logoAltTextShow password showPasswordTextHide password hidePasswordTextThe user already exists. email-in-useEmail is not valid. invalid-email-formatThe password is too weak password-too-weakThe password is too weak password-policy-not-conformantThe password is too common password-too-commonPassword has previously been used password-previously-usedPasswords don't match password-mismatchPassword contains user information password-contains-user-informationUsername can only contain alphanumeric characters or: '${characters}'. Username should have between ${min} and ${max} characters. invalid-usernameThe username must not be longer than ${max} characters. invalid-username-max-lengthThe username must have at least ${min} characters. invalid-username-min-lengthThe username has invalid characters. invalid-username-invalid-charactersThe username cannot be an email. invalid-username-email-not-allowedThe username provided is in use already. username-takenSomething went wrong, please try again later. custom-script-error-codeSomething went wrong, please try again later auth0-users-validationInvalid connection invalid-connectionWe have detected suspicious login behavior and further attempts will be blocked. Please contact the administrator. ip-blockedToo many signups from the same IP ip-signup-blockedInvalid connection no-db-connectionPlease enter an email address no-emailPassword is required no-passwordNew password confirmation is missing no-re-enter-passwordUsername is required no-usernameThis combination of credentials was detected in a public data breach on another website. Before your account is created, please use a different password to keep it secure. password-breachedInformation about the current user, for pages rendered after the user authenticates:
user.user_iduser.pictureuser.emailuser.email_verifieduser.app_metadatauser.user_metadatauser.family_nameuser.given_nameuser.nameuser.nicknameuser.username
Custom query parameters
You can also use query parameters within the context by passing them to the /authorize endpoint when initiating the authentication request. These custom query parameters must have the ext- prefix.
The following example uses the ext-ga and ext-test query parameters to the login page template:
<!DOCTYPE html>
<html>
<head>
{%- auth0:head -%}
</head>
<body>
{%- auth0:widget -%}
</body>
<pre style='background: wheat'>
<b>ext-ga:</b>{{ transaction.params.ext-ga }}
<b>ext-test:</b>{{ transaction.params.ext-test }}
</pre>
</html>Was this helpful?
Examples
Login box + image layout
The following template will show the login box to the left, and an image to the right only for the login/signup pages. The rest of the pages will look like the default ones.
<!DOCTYPE html>
<html lang="{{locale}}">
<head>
{%- auth0:head -%}
<style>
body {
background-image: url("https://images.unsplash.com/photo-1592450865877-e3a318ec3522?ixlib=rb-1.2.1&auto=format&fit=crop&w=2255&q=80");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.prompt-wrapper {
position: relative;
display: flex;
align-items: center;
width: 480px;
height: 100%;
justify-content: center;
background-color: rgb(60,60,60);
}
</style>
<title>{{ prompt.screen.texts.pageTitle }}</title>
</head>
<body class="_widget-auto-layout">
{% if prompt.name == "login" or prompt.name == "signup" %}
<div class="prompt-wrapper">
{%- auth0:widget -%}
</div>
{% else %}
{%- auth0:widget -%}
{% endif %}
</body>
</html>Was this helpful?

Page footers
The example below adds a gray footer with links to Privacy Policy and Terms of Services:
<!DOCTYPE html><html lang="{{locale}}">
<head>
{%- auth0:head -%}
<style>
body {
background-image: radial-gradient(white, rgb(200, 200, 200));
}
.footer {
background-color: rgb(120, 120, 120);
position: absolute;
bottom: 0;
left: 0;
padding: 16px 0;
width: 100%;
color: white;
/* Use a high z-index for future-proofing */
z-index: 10;
}
.footer ul {
text-align: center;
}
.footer ul li {
display: inline-block;
margin: 0 4px;
}
.footer ul li:not(:first-of-type) {
margin-left: 0;
}
.footer ul li:not(:first-of-type)::before {
content: '';
display: inline-block;
vertical-align: middle;
width: 4px;
height: 4px;
margin-right: 4px;
background-color: white;
border-radius: 50%;
}
.footer a {
color: white;
}
</style>
<title>{{ prompt.screen.texts.pageTitle }}</title>
</head>
<body class="_widget-auto-layout">
{%- auth0:widget -%}
<footer class="footer">
<ul>
<li><a href="https://company.com/privacy">Privacy Policy</a></li>
<li><a href="https://company.com/terms">Terms of Service</a></li>
</ul>
</footer>
</body></html>Was this helpful?

Page templates API
To set the page template, you need to use the Management API. You first need to get a Management API token with the update:branding, read:branding, delete:branding scopes. If you are using the API Explorer Application to generate tokens, make sure those scopes are enabled for the Auth0 Management API.
To set the template, you need to use the following endpoint:
curl --request PUT \
--url 'https://{yourDomain}/api/v2/branding/templates/universal-login' \
--header 'authorization: Bearer MGMT_API_ACCESS_TOKEN' \
--header 'content-type: text/html' \
--data '<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>'Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/branding/templates/universal-login");
var request = new RestRequest(Method.PUT);
request.AddHeader("authorization", "Bearer MGMT_API_ACCESS_TOKEN");
request.AddHeader("content-type", "text/html");
request.AddParameter("text/html", "<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);Was this helpful?
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/branding/templates/universal-login"
payload := strings.NewReader("<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
req.Header.Add("content-type", "text/html")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}Was this helpful?
HttpResponse<String> response = Unirest.put("https://{yourDomain}/api/v2/branding/templates/universal-login")
.header("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
.header("content-type", "text/html")
.body("<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>")
.asString();Was this helpful?
var axios = require("axios").default;
var options = {
method: 'PUT',
url: 'https://{yourDomain}/api/v2/branding/templates/universal-login',
headers: {authorization: 'Bearer MGMT_API_ACCESS_TOKEN', 'content-type': 'text/html'},
data: '<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>'
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer MGMT_API_ACCESS_TOKEN",
@"content-type": @"text/html" };
NSData *postData = [[NSData alloc] initWithData:[@"<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>" dataUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/branding/templates/universal-login"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"PUT"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/branding/templates/universal-login",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>",
CURLOPT_HTTPHEADER => [
"authorization: Bearer MGMT_API_ACCESS_TOKEN",
"content-type: text/html"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
payload = "<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>"
headers = {
'authorization': "Bearer MGMT_API_ACCESS_TOKEN",
'content-type': "text/html"
}
conn.request("PUT", "/{yourDomain}/api/v2/branding/templates/universal-login", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/branding/templates/universal-login")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Put.new(url)
request["authorization"] = 'Bearer MGMT_API_ACCESS_TOKEN'
request["content-type"] = 'text/html'
request.body = "<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>"
response = http.request(request)
puts response.read_bodyWas this helpful?
import Foundation
let headers = [
"authorization": "Bearer MGMT_API_ACCESS_TOKEN",
"content-type": "text/html"
]
let postData = NSData(data: "<!DOCTYPE html><html><head>{%- auth0:head -%}</head><body>{%- auth0:widget -%}</body></html>".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/branding/templates/universal-login")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()Was this helpful?
To retrieve the template, you need to use the following endpoint:
curl --request GET \
--url 'https://{yourDomain}/api/v2/branding/templates/universal-login' \
--header 'authorization: Bearer MGMT_API_ACCESS_TOKEN'Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/branding/templates/universal-login");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Bearer MGMT_API_ACCESS_TOKEN");
IRestResponse response = client.Execute(request);Was this helpful?
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/branding/templates/universal-login"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}Was this helpful?
HttpResponse<String> response = Unirest.get("https://{yourDomain}/api/v2/branding/templates/universal-login")
.header("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
.asString();Was this helpful?
var axios = require("axios").default;
var options = {
method: 'GET',
url: 'https://{yourDomain}/api/v2/branding/templates/universal-login',
headers: {authorization: 'Bearer MGMT_API_ACCESS_TOKEN'}
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer MGMT_API_ACCESS_TOKEN" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/branding/templates/universal-login"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/branding/templates/universal-login",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"authorization: Bearer MGMT_API_ACCESS_TOKEN"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
headers = { 'authorization': "Bearer MGMT_API_ACCESS_TOKEN" }
conn.request("GET", "/{yourDomain}/api/v2/branding/templates/universal-login", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/branding/templates/universal-login")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer MGMT_API_ACCESS_TOKEN'
response = http.request(request)
puts response.read_bodyWas this helpful?
import Foundation
let headers = ["authorization": "Bearer MGMT_API_ACCESS_TOKEN"]
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/branding/templates/universal-login")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()Was this helpful?
To delete the template, you need to use the following endpoint:
curl --request DELETE \
--url 'https://{yourDomain}/api/v2/branding/templates/universal-login' \
--header 'authorization: Bearer MGMT_API_ACCESS_TOKEN'Was this helpful?
var client = new RestClient("https://{yourDomain}/api/v2/branding/templates/universal-login");
var request = new RestRequest(Method.DELETE);
request.AddHeader("authorization", "Bearer MGMT_API_ACCESS_TOKEN");
IRestResponse response = client.Execute(request);Was this helpful?
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://{yourDomain}/api/v2/branding/templates/universal-login"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}Was this helpful?
HttpResponse<String> response = Unirest.delete("https://{yourDomain}/api/v2/branding/templates/universal-login")
.header("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
.asString();Was this helpful?
var axios = require("axios").default;
var options = {
method: 'DELETE',
url: 'https://{yourDomain}/api/v2/branding/templates/universal-login',
headers: {authorization: 'Bearer MGMT_API_ACCESS_TOKEN'}
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});Was this helpful?
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer MGMT_API_ACCESS_TOKEN" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/branding/templates/universal-login"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"DELETE"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];Was this helpful?
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{yourDomain}/api/v2/branding/templates/universal-login",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"authorization: Bearer MGMT_API_ACCESS_TOKEN"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}Was this helpful?
import http.client
conn = http.client.HTTPSConnection("")
headers = { 'authorization': "Bearer MGMT_API_ACCESS_TOKEN" }
conn.request("DELETE", "/{yourDomain}/api/v2/branding/templates/universal-login", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))Was this helpful?
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://{yourDomain}/api/v2/branding/templates/universal-login")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Delete.new(url)
request["authorization"] = 'Bearer MGMT_API_ACCESS_TOKEN'
response = http.request(request)
puts response.read_bodyWas this helpful?
import Foundation
let headers = ["authorization": "Bearer MGMT_API_ACCESS_TOKEN"]
let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/branding/templates/universal-login")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "DELETE"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()Was this helpful?
The maximum size for the Page Template is 100KB. If that is not big enough, consider moving images/css files outside of the Page Template code.
CSS customization
There are a few things that you can customize using CSS:
You can hide the tenant logo by adding
class="_hide-prompt-logo"in the<body>element.You can specify a custom logo by adding
class="_use-custom-prompt-logo"in the<body>element. This would let you, for example, change the login page logo depending on the application:
<!DOCTYPE html>
<html lang="{{locale}}">
<head>
<title>Welcome to {{ application.name }} </title>
{%- auth0:head -%}
<style>
{% if application.name == "Auth0 Community" %}
#custom-prompt-logo {
background-image: url('https://cdn.auth0.com/manhattan/versions/1.3312.0/assets/badge.png');
}
{% elsif application.name == "Auth0 Dashboard" %}
#custom-prompt-logo {
background-image: url('https://cdn.auth0.com/blog/auth0rta/theme/logos/auth0-logo-black.png');
}
{% endif %}
</style>
</head>
<body class="_widget-auto-layout _use-custom-prompt-logo">
{%- auth0:widget -%}
</body>
</html>Was this helpful?
The current implementation does not support further CSS customization. If you look at the HTML that is generated, you will see code like:
.c10d15918.c7b3b8672 {
background: #D00E17;
}Was this helpful?
The CSS class names change each time we build the project. If you write CSS that targets those classes, it will break.
The HTML structure of the pages might also change. If your customizations depend on it, they could stop working at any time.
Using the Auth0 CLI
You can use the Auth0 CLI to easily update Page Templates.
In the Auth0 CLI, run:
auth0 branding templates update
The Auth0 CLI will open two windows:
A browser window with a Storybook that shows the login page with the page template applied:

The default editor, with the page template code:

You can now change the page template code, and you will be able to preview the changes in your browser window.
Once you close the window, you’ll be asked if you want to save the template. If you answer Yes, the template will be uploaded to your tenant.
Troubleshooting
If the template is not being applied, check that you are navigating to <custom_domain>/authorize. When you navigate to {yourDomain}/authorize Auth0 will not render the page template.