<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Topics tagged with themes]]></title><description><![CDATA[A list of topics that have been tagged with themes]]></description><link>https://fusionauth.io/community/forum/tags/themes</link><generator>RSS for Node</generator><lastBuildDate>Wed, 28 Oct 2026 11:23:18 GMT</lastBuildDate><atom:link href="https://fusionauth.io/community/forum/tags/themes.rss" rel="self" type="application/rss+xml"/><pubDate>Invalid Date</pubDate><ttl>60</ttl><item><title><![CDATA[How to customize root path and 404 pages to redirect to application login?]]></title><description><![CDATA[<p dir="auto">FusionAuth supports customization for some of these scenarios through themes, but not all:</p>
1. Root Path Customization
<p dir="auto"><strong>This is possible.</strong> The Index page can be customized through your FusionAuth theme. You can add a redirect (for example, using JavaScript or a meta refresh tag) to send users to your application's login page.</p>
<p dir="auto"><strong>Important:</strong> When FusionAuth can't identify the tenant (including when browsing to / without client_id or tenantId parameters), it uses the <strong>default tenant</strong>. To theme the root page:</p>

<strong>Create a copy of the built-in theme</strong> — the default theme is immutable because it ships with FusionAuth
<strong>Edit the index template</strong> in your copy to include your redirect (using JavaScript like window.location.href = "https://yourapp.com/login" or HTML meta refresh)
<strong>Apply this theme to ALL tenants</strong>, including the default tenant
<strong>Test with tenant specified</strong> — try the root URL with tenantId or client_id to confirm your edited theme renders

<p dir="auto">See the <a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/#troubleshooting" rel="nofollow ugc">Advanced Themes troubleshooting guide</a> for more details on theme issues.</p>
<p dir="auto">Related: <a href="https://github.com/FusionAuth/fusionauth-issues/issues/378" rel="nofollow ugc">GitHub Issue #378</a></p>
2. OAuth Error Handling
<p dir="auto"><strong>This is also possible.</strong> The OAuth error page can be customized in your theme, so you can implement the same redirect approach for customers who saved stale or broken login links. The OAuth error template is available for customization and you can add JavaScript or meta refresh redirects to handle these scenarios.</p>
<p dir="auto">Note that OAuth errors can also be returned as redirect parameters to your application's callback URL (depending on the OAuth flow), which allows your application to handle errors directly rather than showing the FusionAuth-hosted error page.</p>
3. 404 Pages for Invalid URLs
<p dir="auto"><strong>This is NOT currently customizable.</strong> The 404 page cannot be customized, including on Cloud deployments. Requests to invalid paths (like /whatever) will show the default error page. This is a known limitation tracked in <a href="https://github.com/FusionAuth/fusionauth-issues/issues/404" rel="nofollow ugc">GitHub Issue #404</a>, which requests additional themed error pages (including 404 and 500 pages).</p>
Summary
<p dir="auto">You can handle root path and OAuth error redirects through theme customization by adding JavaScript redirects to the index and OAuth error templates. However, true 404 pages remain uncustomizable. CloudFront configuration is not exposed to customers on cloud deployments, so there's no workaround at that layer.</p>
Related Documentation

<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/" rel="nofollow ugc">Advanced Themes Documentation</a> - Complete guide to customizing FusionAuth themes
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/#templates" rel="nofollow ugc">Theme Templates</a> - Full list of available templates including Index and OAuth error
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/template-variables" rel="nofollow ugc">Theme Template Variables</a> - Variables available in each template
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/template-variables#index" rel="nofollow ugc">Index Template Variables</a> - Specific to the root page
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/template-variables#oauth-error" rel="nofollow ugc">OAuth Error Template Variables</a> - Specific to OAuth error page
<a href="https://fusionauth.io/docs/apis/oauth/oauth-error" rel="nofollow ugc">OAuth Error API Documentation</a> - How OAuth errors are returned
<a href="https://fusionauth.io/docs/get-started/core-concepts/limitations#default-configuration" rel="nofollow ugc">Default Tenant Configuration</a> - Understanding the default tenant

]]></description><link>https://fusionauth.io/community/forum/topic/3270/how-to-customize-root-path-and-404-pages-to-redirect-to-application-login</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3270/how-to-customize-root-path-and-404-pages-to-redirect-to-application-login</guid><dc:creator><![CDATA[FASupportBot]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[FreeMarker error: postMethod variable null in registration verify template]]></title><description><![CDATA[<p dir="auto">The postMethod variable can be null or missing in certain scenarios (such as when a verification link is clicked multiple times), causing the FreeMarker template to fail.</p>
<p dir="auto">To fix this, you need to provide a safe fallback for the postMethod variable. Update line 16 in your registration/verify.ftl template from:</p>
[#if verificationId?? &amp;&amp; postMethod]

<p dir="auto">To:</p>
[#if verificationId?? &amp;&amp; (postMethod!false)]

<p dir="auto">The !false syntax provides a default value of false when postMethod is null or missing, preventing the FreeMarker exception.</p>
<p dir="auto"><strong>Steps to apply the fix:</strong></p>

Navigate to <strong>Customizations → Themes</strong> in the FusionAuth admin UI
Edit your theme
Locate the registration/verify.ftl template
Update the conditional check as shown above
Save the theme

<p dir="auto">This pattern can be applied to other templates where variables might be null or missing in certain execution paths.</p>
<p dir="auto"><strong>Why this happens:</strong></p>
<p dir="auto">According to the FusionAuth documentation, the postMethod variable is <strong>not</strong> a standard template-specific variable for the /registration/verify template. It is typically available on other verification templates like /email/verify (where it defaults to true). The registration verify template is rendered when a user clicks the URL from the verification email and the verificationId has expired or is invalid. In these scenarios, postMethod may not be set in the template context, which causes the FreeMarker error when attempting to evaluate it as a boolean.</p>
Related Documentation

<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/template-variables#verify-registration" rel="nofollow ugc">Theme Template Variables - Verify Registration</a> - Documents the variables available in the registration verify template
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/template-variables#email-verification" rel="nofollow ugc">Theme Template Variables - Email Verification</a> - Shows that postMethod is documented for email verification but not registration verification
<a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-themes/template-variables" rel="nofollow ugc">Theme Template Variables</a> - Complete reference for all template variables across different templates

]]></description><link>https://fusionauth.io/community/forum/topic/3258/freemarker-error-postmethod-variable-null-in-registration-verify-template</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3258/freemarker-error-postmethod-variable-null-in-registration-verify-template</guid><dc:creator><![CDATA[FASupportBot]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>