NUXT_PUBLIC_ROOT_REDIRECT_URL environment variable allows you to “hide” OpnForm’s public pages (landing page, integrations page, etc.) by redirecting users to your main website or any other destination when they access certain routes.
Use Case
This feature is particularly useful when you’re running OpnForm on a subdomain (e.g.,forms.yourdomain.com) and want to:
- Hide the default OpnForm landing page and branding
- Prevent users from discovering your form creation interface
- Redirect visitors to your main website instead
- Keep only the essential form and admin functionality accessible
How It Works
WhenNUXT_PUBLIC_ROOT_REDIRECT_URL is set, OpnForm redirects users visiting these routes:
- Root path (
/) - The landing page - Marketing pages — Integrations, pricing, Enterprise, industry, comparisons, and cloud product pages (HTTP 302)
- Any non-existent pages (404 errors) - Undefined routes
What Still Works
The following routes remain fully accessible and will NOT be redirected:- Form URLs:
forms.yourdomain.com/forms/my-form✅ - Admin login:
forms.yourdomain.com/login✅ - Admin dashboard:
forms.yourdomain.com/home✅ - All admin pages: Settings, workspaces, templates, etc. ✅
Configuration
Environment Variable Setup
Add this to your client.env file (located in the client directory):
Example Scenarios
Scenario 1: Redirect to main website- Visiting
forms.mycompany.com→ redirects tohttps://mycompany.com - Visiting
forms.mycompany.com/forms/contact→ works normally ✅
- Visiting
forms.mycompany.com→ redirects tohttps://mycompany.com/contact
User Experience
For Form Respondents
- Can access shared forms normally via direct links
- If they accidentally visit the root domain, they’re redirected to your main site
- No exposure to OpnForm branding or interface
For Administrators
- Can still access the admin panel via
/login - All admin functionality remains fully accessible
- Forms can be managed and created as usual
Implementation Notes
- Root and unknown-page redirects use HTTP 301; marketing-page redirects use HTTP 302
- The redirect happens during server rendering and client-side navigation (Nuxt)
- You must recreate your Docker containers after changing this environment variable
- The URL should include the protocol (
https://orhttp://)
Updating the Configuration
If you’re using Docker, remember to recreate your containers after changing this environment variable:Default self-hosted welcome page
WithoutNUXT_PUBLIC_ROOT_REDIRECT_URL, self-hosted instances show a dedicated
split-screen welcome page with a sign-in button, a local template catalog link,
and a link to discover OpnForm. Signed-in users visiting / go to their dashboard.
The welcome page asks search engines not to index it.
Marketing routes (pricing, Enterprise, industry, integrations, comparisons,
AI form builder, MCP overview, and cloud license checkout pages) redirect to the
matching page on https://opnform.com with a temporary HTTP 302 redirect.
These links include campaign attribution, but never copy the original query
parameters. If you configure NUXT_PUBLIC_ROOT_REDIRECT_URL, these marketing
routes use your configured destination instead. The root and unknown-page
redirects keep their existing HTTP 301 behavior.
Templates, public forms, login, password recovery, invitations, application
pages, OAuth callbacks, and MCP authorization remain on your instance.
Customize the instance
Set these optional variables in the client environment:
Legal links appear in the self-hosted footer only when configured. Direct visits
to
/privacy-policy or /terms-conditions redirect to your configured URL, or
to the instance welcome page when no URL is set. OpnForm Cloud legal pages are
not shown as your instance’s policies. Recreate your client container after
changing these environment variables.
Preview in a Codex worktree
RunCODEX_SELF_HOSTED=true CODEX_AUTO_LOGIN=false ./scripts/codex-worktree-up.sh
to launch the isolated seeded app in self-hosted mode and view the public welcome
page. Sign in with the seeded account to test the dashboard. These options default
to cloud mode with automatic login when omitted.
The welcome illustration uses separate, static responsive image layers. On smaller
screens the instance sign-in appears before the illustration.
Marketing redirects are applied during both server rendering and client-side
navigation. Sitemap filtering also reads the installation mode at runtime, so
published Docker images omit redirected marketing pages without requiring a
custom frontend build. An API base path such as /api does not determine whether
your deployment is self-hosted.