Formbricks supports both single domain and dual domain configurations with Public/Private Domain Split feature. This guide will help you set up your domains correctly for enhanced security and organization.
Formbricks supports a powerful domain separation feature that allows you to serve public content (surveys, public APIs) from a different domain than your private admin interface. This provides enhanced security and better organization. It enables you to:
Serve public content (surveys, public APIs) from a different domain than your private admin interface
Restrict admin functionality to the private domain
Ensure authentication and sensitive operations only occur on the private domain
Publicly available images uploaded before the domain split (logos, images in Picture Select questions, etc.) will continue to be served from the Private Domain. To protect your Private Domain, please reupload public images after the successful setup of the domain split.
Private Domain (WEBAPP_URL): Your admin/management interface
Public Domain (PUBLIC_URL): For surveys and public-facing content
Important Security Note: Formbricks handles application-level domain restrictions to ensure each domain
can only access specific resources within the application. However, all domain configuration (DNS, SSL
certificates, reverse proxy setup) and firewall configuration that comes with this feature to enhance
security must be configured by you. Formbricks does not manage your infrastructure-level security settings.
# Private admin domainWEBAPP_URL=https://admin.formbricks.example.comBETTER_AUTH_URL=https://admin.formbricks.example.com# Public domain for surveysPUBLIC_URL=https://surveys.example.com
All other routes are restricted to the private domain (WEBAPP_URL) for security purposes. The admin domain can access the health endpoint (/health) and public file storage (/storage/{workspaceId}/{accessType}/{fileName}), while all other public routes are exclusively accessible on the public domain (PUBLIC_URL) and will return a 404 error if accessed from the admin domain.
While it’s possible to revert to a Single Domain setup, please take into account the following:
All image links and uploaded files are stored in the database, so they will continue to link to the Public Domain hence the links will break. You’ll need to reupload the images, like you did when you set up the domain split.
Any survey link shared to with the Public Domain will break.
API calls to the Public Domain will break, unless updated.
As of now, Formbricks does not provide an automated migration between domain setups.If you have any questions or require help, feel free to reach out to us on GitHub Discussions.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Documentation - Formbricks","colors":{"primary":"#00C4B8","light":"#00C4B8","dark":"#00C4B8"},"logo":{"light":"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/logo-light.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=365e5fb767b72b4fbbb2016860fd92ba","dark":"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/logo-dark.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=763690d005584ee5f4b4014615c3b98c"},"favicon":"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/favicon.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=01910ab43e3a3acc0aca5471235b90c5","navbar":{"links":[{"href":"https://github.com/formbricks/formbricks/discussions","label":"Support"}],"primary":{"type":"button","label":"Go to app","href":"https://app.formbricks.com"}},"footer":{"socials":{"github":"https://github.com/formbricks/formbricks","linkedin":"https://linkedin.com/company/formbricks","x":"https://x.com/formbricks"}},"integrations":{"posthog":{"apiKey":"phc_zJO1n3rjHlhqKiJ0gqLDwT4qvfWF1wzHDq2gfl0moQm","apiHost":"https://eu.i.posthog.com"}},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"formbricks","hasAudioNarration":false,"actualSubdomain":"formbricks","customDomains":["formbricks.com"],"gitSource":{"type":"github","owner":"formbricks","repo":"formbricks","deployBranch":"release/6.1","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"issues":true,"edits":true,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aec6ba8981b8170d4f1db3c","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Surveys (Ask)","count":87},{"language":"default","tag":"Survey Features","count":71},{"language":"default","tag":"Self Hosting","count":53},{"language":"default","tag":"API v2 Reference (Beta)","count":41},{"language":"default","tag":"API v1 Reference","count":35},{"language":"default","tag":"Platform","count":28},{"language":"default","tag":"Configuration","count":28},{"language":"default","tag":"Platform Features","count":23},{"language":"default","tag":"Integrations","count":22},{"language":"default","tag":"Development","count":21}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"self-hosting/configuration/domain-configuration","slug":"/self-hosting/configuration/domain-configuration","pageMetadata":{"title":"Domain Configuration","description":"Configuring your domain for Formbricks.","icon":"globe","href":"/self-hosting/configuration/domain-configuration"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Configuring your domain for Formbricks.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Formbricks supports both single domain and dual domain configurations with Public/Private Domain Split feature. This guide will help you set up your domains correctly for enhanced security and organization.`}),`\n`,_jsx(Heading,{level:`2`,id:`single-domain-setup`,children:`Single Domain Setup`}),`\n`,_jsx(_components.p,{children:`For a single domain setup, you need to configure two essential environment variables:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WEBAPP_URL`}),`: The base URL of your Formbricks instance (serves both admin and public content)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`BETTER_AUTH_URL`}),`: The authentication URL (should be the same as WEBAPP_URL)`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`example-configuration`,children:`Example Configuration`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`WEBAPP_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://formbricks.example.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`BETTER_AUTH_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://formbricks.example.com`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`important-notes`,children:`Important Notes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Both URLs must be the same for authentication to work properly`}),`\n`,_jsx(_components.li,{children:`The URLs should be the full URL including the protocol (http:// or https://)`}),`\n`,_jsx(_components.li,{children:`Make sure your domain is properly configured in your DNS settings`}),`\n`,_jsx(_components.li,{children:`If you’re using HTTPS (recommended), ensure you have valid SSL certificates installed`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`public-/-private-domain-split`,children:`Public / Private Domain Split`}),`\n`,_jsx(_components.p,{children:`Formbricks supports a powerful domain separation feature that allows you to serve public content (surveys, public APIs) from a different domain than your private admin interface. This provides enhanced security and better organization. It enables you to:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Serve public content (surveys, public APIs) from a different domain than your private admin interface`}),`\n`,_jsx(_components.li,{children:`Restrict admin functionality to the private domain`}),`\n`,_jsx(_components.li,{children:`Ensure authentication and sensitive operations only occur on the private domain`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Publicly available images uploaded before the domain split (logos, images in Picture Select questions, etc.) will continue to be served from the Private Domain. `,_jsx(_components.strong,{children:`To protect your Private Domain, please reupload public images after the successful setup of the domain split.`})]})}),`\n`,_jsx(Heading,{level:`3`,id:`why-use-domain-split`,children:`Why Use Domain Split?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enhanced Security`}),`: Separate public-facing surveys from your admin interface`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Better Organization`}),`: Use dedicated domains for different purposes (e.g., `,_jsx(_components.code,{children:`admin.company.com`}),` for management, `,_jsx(_components.code,{children:`surveys.company.com`}),` for public surveys)`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`configuration`,children:`Configuration`}),`\n`,_jsx(_components.p,{children:`To set up Public/Private Domain Split:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Private Domain (WEBAPP_URL)`}),`: Your admin/management interface`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Public Domain (PUBLIC_URL)`}),`: For surveys and public-facing content`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Important Security Note`}),`: Formbricks handles application-level domain restrictions to ensure each domain\ncan only access specific resources within the application. However, all domain configuration (DNS, SSL\ncertificates, reverse proxy setup) and firewall configuration that comes with this feature to enhance\nsecurity must be configured by you. Formbricks does not manage your infrastructure-level security settings.`]}),`\n`,_jsx(Heading,{level:`3`,id:`example-configuration-2`,children:`Example Configuration`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Private admin domain`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`WEBAPP_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://admin.formbricks.example.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`BETTER_AUTH_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://admin.formbricks.example.com`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Public domain for surveys`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`PUBLIC_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://surveys.example.com`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`how-it-works`,children:`How It Works`}),`\n`,_jsx(_components.p,{children:`When PUBLIC_URL is configured:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Admin Interface`}),`: All admin/management functions are served from `,_jsx(_components.code,{children:`WEBAPP_URL`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`MCP and OAuth`}),`: MCP (`,_jsx(_components.code,{children:`/api/mcp`}),`) and Better Auth OAuth/OIDC discovery and token endpoints are served from `,_jsx(_components.code,{children:`WEBAPP_URL`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Public Surveys`}),`: All survey links and public APIs use `,_jsx(_components.code,{children:`PUBLIC_URL`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SDK Integration`}),`: The public domain is used for all client-side SDK connections`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Email Links`}),`: Survey invitation emails use the public domain`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sharing Features`}),`: Survey sharing uses the public domain`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`routes-available-on-the-public-domain`,children:`Routes Available on the Public Domain`}),`\n`,_jsx(_components.p,{children:`When PUBLIC_URL is configured, the following routes are automatically served from the public domain:`}),`\n`,_jsx(Heading,{level:`4`,id:`survey-routes`,children:`Survey Routes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/s/{surveyId}`}),` - Individual survey access`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/c/{jwt}`}),` - Personalized link survey access (JWT-based access)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/p/{survey-slug}`}),` - Pretty URL survey access`]}),`\n`,_jsx(_components.li,{children:`Embedded survey endpoints`}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`api-routes`,children:`API Routes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/api/v1/client/{workspaceId}/*`}),` - Client API endpoints (v1)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/api/v2/client/{workspaceId}/*`}),` - Client API endpoints (v2)`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`static-assets-\u0026-next-js-routes`,children:`Static Assets \u0026 Next.js Routes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/favicon.ico`}),` - Favicon`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/_next/*`}),` - Next.js static assets and build files`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/js/*`}),` - JavaScript files`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/css/*`}),` - CSS stylesheets`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/images/*`}),` - Image assets`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/fonts/*`}),` - Font files`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/icons/*`}),` - Icon assets`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/public/*`}),` - Public static files`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/animated-bgs/*`}),` - Animated Background assets`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`storage-routes`,children:`Storage Routes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/storage/{workspaceId}/{accessType}/{fileName}`}),` - Public file storage access`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`health-\u0026-monitoring`,children:`Health \u0026 Monitoring`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`/health`}),` - Health check endpoint`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`sharing-\u0026-embed-routes`,children:`Sharing \u0026 Embed Routes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Survey sharing endpoints`}),`\n`,_jsx(_components.li,{children:`Embed widget routes`}),`\n`,_jsx(_components.li,{children:`Social sharing endpoints`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`All other routes are restricted to the private domain (`,_jsx(_components.code,{children:`WEBAPP_URL`}),`) for security purposes. The admin domain can access the health endpoint (/health) and public file storage (`,_jsx(_components.code,{children:`/storage/{workspaceId}/{accessType}/{fileName}`}),`), while all other public routes are exclusively accessible on the public domain (`,_jsx(_components.code,{children:`PUBLIC_URL`}),`) and will return a 404 error if accessed from the admin domain.`]}),`\n`,_jsx(Heading,{level:`3`,id:`app-url-sdk-configuration`,children:`App URL SDK Configuration`}),`\n`,_jsx(Heading,{level:`4`,id:`multi-domain-setup-sdk-configuration`,children:`Multi-Domain Setup SDK Configuration`}),`\n`,_jsxs(_components.p,{children:[`When using PUBLIC_URL (multi-domain setup), all SDK configurations must use the `,_jsx(_components.strong,{children:`public domain`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Formbricks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setup`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` workspaceId:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"your-workspace-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` appUrl:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://surveys.example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Use PUBLIC_URL domain`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Please refer to the `,_jsx(_components.a,{href:`/surveys/website-app-surveys/framework-guides`,children:`Framework Guides`}),` for step-by-step instructions specific to your platform.`]}),`\n`,_jsx(Heading,{level:`3`,id:`dns-and-ssl-configuration`,children:`DNS and SSL Configuration`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Set up DNS records`}),` for both domains`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Configure SSL certificates`}),` for both domains`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Update your reverse proxy`}),` (nginx, Apache, Cloudflare, etc.) to route both domains to your Formbricks instance`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Firewall rules`}),`: Ensure both domains can reach your Formbricks instance`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`fallback-behavior`,children:`Fallback Behavior`}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`PUBLIC_URL`}),` is not set:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`All content (admin and public) is served from `,_jsx(_components.code,{children:`WEBAPP_URL`})]}),`\n`,_jsx(_components.li,{children:`The system behaves as a single domain setup`}),`\n`,_jsx(_components.li,{children:`No domain separation occurs`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`reverting-to-a-single-domain`,children:`Reverting to a Single Domain`}),`\n`,_jsx(_components.p,{children:`While it’s possible to revert to a Single Domain setup, please take into account the following:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`All image links and uploaded files are stored in the database, so they will continue to link to the Public Domain `,_jsx(_components.strong,{children:`hence the links will break.`}),` You’ll need to reupload the images, like you did when you set up the domain split.`]}),`\n`,_jsxs(_components.li,{children:[`Any survey link shared to with the Public Domain `,_jsx(_components.strong,{children:`will break.`})]}),`\n`,_jsxs(_components.li,{children:[`API calls to the Public Domain `,_jsx(_components.strong,{children:`will break`}),`, unless updated.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`As of now, Formbricks does not provide an automated migration between domain setups.`}),`\n`,_jsxs(_components.p,{children:[`If you have any questions or require help, feel free to reach out to us on `,_jsx(_components.a,{href:`https://github.com/formbricks/formbricks/discussions`,children:`GitHub Discussions`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Domain Configuration","description":"Configuring your domain for Formbricks.","icon":"globe","href":"/self-hosting/configuration/domain-configuration"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Single Domain Setup","slug":"single-domain-setup","depth":2,"children":[{"title":"Example Configuration","slug":"example-configuration","depth":3,"children":[]},{"title":"Important Notes","slug":"important-notes","depth":3,"children":[]}]},{"title":"Public / Private Domain Split","slug":"public-/-private-domain-split","depth":2,"children":[{"title":"Why Use Domain Split?","slug":"why-use-domain-split","depth":3,"children":[]},{"title":"Configuration","slug":"configuration","depth":3,"children":[]},{"title":"Example Configuration","slug":"example-configuration-2","depth":3,"children":[]},{"title":"How It Works","slug":"how-it-works","depth":3,"children":[]},{"title":"Routes Available on the Public Domain","slug":"routes-available-on-the-public-domain","depth":3,"children":[]},{"title":"Survey Routes","slug":"survey-routes","depth":4,"children":[]},{"title":"API Routes","slug":"api-routes","depth":4,"children":[]},{"title":"Static Assets \u0026 Next.js Routes","slug":"static-assets-\u0026-next-js-routes","depth":4,"children":[]},{"title":"Storage Routes","slug":"storage-routes","depth":4,"children":[]},{"title":"Health \u0026 Monitoring","slug":"health-\u0026-monitoring","depth":4,"children":[]},{"title":"Sharing \u0026 Embed Routes","slug":"sharing-\u0026-embed-routes","depth":4,"children":[]},{"title":"App URL SDK Configuration","slug":"app-url-sdk-configuration","depth":3,"children":[]},{"title":"Multi-Domain Setup SDK Configuration","slug":"multi-domain-setup-sdk-configuration","depth":4,"children":[]},{"title":"DNS and SSL Configuration","slug":"dns-and-ssl-configuration","depth":3,"children":[]},{"title":"Fallback Behavior","slug":"fallback-behavior","depth":3,"children":[]},{"title":"Reverting to a Single Domain","slug":"reverting-to-a-single-domain","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/formbricks/fd84136b00b6b9ed/formbricks.js"],"subdomain":"formbricks","siteName":"Documentation - Formbricks","title":"Domain Configuration - Documentation - Formbricks","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T07:04:53.948Z","originalFileLocation":"self-hosting/configuration/domain-configuration.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Configuring your domain for Formbricks.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Documentation - Formbricks\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Domain Configuration - Documentation - Formbricks\">\u003cmeta data-mint-head property=\"og:description\" content=\"Configuring your domain for Formbricks.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Documentation - Formbricks\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://formbricks.mintlify.site/docs/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Domain+Configuration\u0026amp;description=Configuring+your+domain+for+Formbricks.\u0026amp;theme=5f66c2cdb60ad4d135e6b4e5\u0026amp;signature=e2398b98ee0ab86109927b43a168dd7ce637244f49af215ab8b1615a7389b24a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Domain Configuration - Documentation - Formbricks\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Configuring your domain for Formbricks.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://formbricks.mintlify.site/docs/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Domain+Configuration\u0026amp;description=Configuring+your+domain+for+Formbricks.\u0026amp;theme=5f66c2cdb60ad4d135e6b4e5\u0026amp;signature=e2398b98ee0ab86109927b43a168dd7ce637244f49af215ab8b1615a7389b24a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Documentation - Formbricks\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00C4B8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/self-hosting/configuration/domain-configuration.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://formbricks.com/#organization\",\"name\":\"Documentation - Formbricks\",\"url\":\"https://formbricks.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/logo-light.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=365e5fb767b72b4fbbb2016860fd92ba\"}},{\"@type\":\"WebSite\",\"@id\":\"https://formbricks.com/docs#website\",\"name\":\"Documentation - Formbricks\",\"url\":\"https://formbricks.com/docs\",\"publisher\":{\"@id\":\"https://formbricks.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration#webpage\",\"url\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration\",\"name\":\"Domain Configuration\",\"description\":\"Configuring your domain for Formbricks.\",\"dateModified\":\"2026-10-20T07:04:53.948Z\",\"isPartOf\":{\"@id\":\"https://formbricks.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configuration\",\"item\":\"https://formbricks.com/docs/self-hosting/configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Domain Configuration\",\"item\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration#article\",\"headline\":\"Domain Configuration\",\"name\":\"Domain Configuration\",\"description\":\"Configuring your domain for Formbricks.\",\"url\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration\",\"mainEntityOfPage\":{\"@id\":\"https://formbricks.com/docs/self-hosting/configuration/domain-configuration#webpage\"},\"dateModified\":\"2026-10-20T07:04:53.948Z\",\"publisher\":{\"@id\":\"https://formbricks.com/#organization\"},\"isPartOf\":{\"@id\":\"https://formbricks.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentation - Formbricks\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Documentation - Formbricks","nav":{"global":null,"tabs":[{"tab":"Platform","pages":[{"title":"Platform","href":"/platform/introduction"}]},{"tab":"Surveys (Ask)","pages":[{"title":"Surveys (Ask)","href":"/surveys/overview"}]},{"tab":"Unify Feedback (Analyze)","pages":[{"title":"Unify Feedback (Analyze)","href":"/unify-feedback/overview"}]},{"tab":"Workflows (Act)","pages":[{"title":"Workflows (Act)","href":"/workflows/overview"}]},{"tab":"Self Hosting","groups":[{"group":"Self Hosting","pages":[{"title":"Self-Hosting","icon":"server","href":"/self-hosting/overview"}]},{"group":"Setup","pages":[{"title":"One-Click Setup","icon":"rocket","href":"/self-hosting/setup/one-click"},{"title":"Docker Setup","icon":"docker","href":"/self-hosting/setup/docker"},{"title":"Monitoring","icon":"magnifying-glass-chart","href":"/self-hosting/setup/monitoring"},{"title":"Cluster Setup","icon":"circle-nodes","href":"/self-hosting/setup/cluster-setup"},{"title":"Kubernetes Deployment","icon":"circle-nodes","href":"/self-hosting/setup/kubernetes"}]},{"group":"Configuration","pages":[{"title":"Configuration","sidebarTitle":"Overview","icon":"sliders","href":"/self-hosting/configuration"},{"title":"Custom SSL Certificate","icon":"lock","href":"/self-hosting/configuration/custom-ssl"},{"title":"Environment Variables","icon":"code","href":"/self-hosting/configuration/environment-variables"},{"title":"Job Runner","icon":"gears","href":"/self-hosting/configuration/job-runner"},{"title":"SMTP Configuration","icon":"envelope","href":"/self-hosting/configuration/smtp"},{"title":"File Uploads Configuration","description":"Configure file storage for survey images, file uploads, and Workspace assets in your self-hosted Formbricks instance","icon":"upload","href":"/self-hosting/configuration/file-uploads"},{"title":"Domain Configuration","icon":"globe","href":"/self-hosting/configuration/domain-configuration"},{"title":"CDN","description":"Use a CDN in front of public Formbricks traffic without serving stale survey assets after upgrades.","icon":"globe","href":"/self-hosting/configuration/cdn"},{"title":"Custom Subpath","icon":"link","href":"/self-hosting/configuration/custom-subpath"},{"title":"AI Features","icon":"sparkles","sidebarTitle":"AI Features","href":"/self-hosting/configuration/ai-features"},{"title":"SpiceDB Authorization Operations","icon":"shield-halved","href":"/self-hosting/configuration/authzed-operations"},{"title":"Rate Limiting","icon":"timer","href":"/self-hosting/configuration/rate-limiting"},{"group":"Auth \u0026 SSO","icon":"lock","pages":[{"title":"Authentication Behavior","icon":"user","href":"/self-hosting/auth-behavior"},{"title":"Open ID Connect","icon":"key","href":"/self-hosting/configuration/auth-sso/open-id-connect"},{"title":"Keycloak OIDC","icon":"key-skeleton-left-right","href":"/self-hosting/configuration/auth-sso/keycloak-oidc"},{"title":"Okta OIDC","icon":"fingerprint","href":"/self-hosting/configuration/auth-sso/okta-oidc"},{"title":"Azure AD OAuth","icon":"microsoft","href":"/self-hosting/configuration/auth-sso/azure-ad-oauth"},{"title":"Google OAuth","icon":"google","href":"/self-hosting/configuration/auth-sso/google-oauth"},{"title":"SAML SSO","icon":"user-shield","href":"/self-hosting/configuration/auth-sso/saml-sso"},{"title":"SAML with Identity Providers","icon":"building-lock","href":"/self-hosting/configuration/auth-sso/setup-saml-with-identity-providers"}]},{"group":"Integrations","icon":"bridge","pages":[{"title":"Third-party Integrations (On Premise)","sidebarTitle":"Overview","icon":"bridge","href":"/self-hosting/configuration/integrations"},{"title":"Airtable (On Premise)","icon":"table","href":"/self-hosting/configuration/integrations/airtable"},{"title":"Google Sheets (On Premise)","icon":"file-spreadsheet","href":"/self-hosting/configuration/integrations/google-sheets"},{"title":"n8n (On Premise)","icon":"diagram-project","href":"/self-hosting/configuration/integrations/n8n"},{"title":"Notion (On Premise)","icon":"book","href":"/self-hosting/configuration/integrations/notion"},{"title":"Slack (On Premise)","icon":"slack","href":"/self-hosting/configuration/integrations/slack"},{"title":"Zapier (On Premise)","icon":"bolt","href":"/self-hosting/configuration/integrations/zapier"},{"title":"ActivePieces (On Premise)","icon":"puzzle-piece","href":"/self-hosting/configuration/integrations/activepieces"}]}]},{"group":"Advanced","pages":[{"title":"Release and Maintenance Policy","icon":"calendar-check","href":"/self-hosting/advanced/release-maintenance-policy"},{"title":"Upgrade Formbricks","icon":"arrow-up-right-dots","href":"/self-hosting/advanced/upgrade"},{"title":"Migration","icon":"arrow-right","href":"/self-hosting/advanced/migration"},{"title":"Upgrade to Formbricks v6","icon":"arrow-up-from-bracket","href":"/self-hosting/advanced/v6-maintenance-upgrade"},{"title":"Migrating Surveys","icon":"right-left","href":"/self-hosting/advanced/migrating-surveys"},{"title":"License","icon":"file-certificate","href":"/self-hosting/advanced/license"},{"title":"License Activation","icon":"key","href":"/self-hosting/advanced/license-activation"},{"group":"Enterprise Features","icon":"building","pages":[{"title":"Hide 'Powered by Formbricks' signature","sidebarTitle":"Hide Branding","icon":"eye-slash","href":"/self-hosting/advanced/enterprise-features/hide-powered-by-formbricks"},{"title":"White-label Follow-ups","icon":"envelope","href":"/self-hosting/advanced/enterprise-features/whitelabel-email-follow-ups"},{"title":"Teams \u0026 Roles (RBAC)","icon":"user","href":"/self-hosting/advanced/enterprise-features/team-access"},{"title":"Contact management \u0026 segments","icon":"address-book","sidebarTitle":"Contacts \u0026 Segments","href":"/self-hosting/advanced/enterprise-features/contact-management-segments"},{"title":"OAuth \u0026 SSO","icon":"key","href":"/self-hosting/advanced/enterprise-features/oidc-sso"},{"title":"SAML SSO","icon":"key","href":"/self-hosting/advanced/enterprise-features/saml-sso"},{"title":"Audit Logging","sidebarTitle":"Audit Logging","icon":"file-shield","href":"/self-hosting/advanced/enterprise-features/audit-logging"},{"title":"Unify Feedback","icon":"layer-group","sidebarTitle":"Unify Feedback","href":"/self-hosting/advanced/enterprise-features/unify-feedback"},{"title":"Dashboards \u0026 Charts","icon":"chart-line","sidebarTitle":"Dashboards \u0026 Charts","href":"/self-hosting/advanced/enterprise-features/dashboards"},{"title":"AI Features","icon":"sparkles","sidebarTitle":"AI Features","href":"/self-hosting/advanced/enterprise-features/ai-features"},{"title":"Workflows","icon":"https://d3gk2c5xim1je2.cloudfront.net/lucide/v1.16.0/workflow.svg","sidebarTitle":"Workflows","href":"/self-hosting/advanced/enterprise-features/workflows"}]}]}]},{"tab":"Development","pages":[{"title":"Development","href":"/development/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/platform/mcp/overview"}]},{"tab":"API v1 Reference","pages":[{"title":"API v1 Reference","href":"/api-reference/rest-api"}]},{"tab":"API v2 Reference (Beta)","pages":[{"title":"API v2 Reference (Beta)","href":"/api-v2-reference/introduction"}]},{"tab":"API v3 Reference (Private Beta)","hidden":true,"pages":[{"title":"API v3 Reference (Private Beta)","href":"/api-v3-reference/introduction"}]}]},"basePath":"","title":"Domain Configuration - Documentation - Formbricks","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":[],"chunks":[]}