The Client Portal is the customer-facing account experience for support issues
and requests. Operators can preview it from Clients → Portal Preview and
configure it from Clients → Portal Settings.
Portal-visible issues use the same issue model as Woes support issues. Portal routes return customer-safe issue fields and customer/support message roles.Public portal access depends on a valid portal session. In non-production environments, a development session header may be used for testing.Customers with access can create portal issues. Portal-created issues enter the
workspace issue queue with source_channel = client_portal and customer-safe
metadata.
Public portal access still depends on production routing, email delivery, and
workspace configuration. Do not promise a custom-domain launch until the DNS
and deployment setup are verified for that workspace.
Last modified on June 29, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Woes","description":"Customer-facing documentation and REST API reference for Woes, the API-native developer support platform.","colors":{"primary":"#B83A12","light":"#E05A22","dark":"#E05A22"},"logo":{"light":"https://mintcdn.com/woes/QdK5garcQwoPsAlm/images/woes-wordmark.png?fit=max\u0026auto=format\u0026n=QdK5garcQwoPsAlm\u0026q=85\u0026s=5fb012a2064e1898482aab3a15aa40fc","dark":"https://mintcdn.com/woes/QdK5garcQwoPsAlm/images/woes-wordmark.png?fit=max\u0026auto=format\u0026n=QdK5garcQwoPsAlm\u0026q=85\u0026s=5fb012a2064e1898482aab3a15aa40fc"},"favicon":"https://mintcdn.com/woes/z9C4KzvBjjdD9uds/images/woes-mark.png?fit=max\u0026auto=format\u0026n=z9C4KzvBjjdD9uds\u0026q=85\u0026s=d0f6cf6c6931b5f50b6fb075aefffe6e","api":{"params":{"expanded":"all"},"playground":{"display":"interactive","proxy":true},"examples":{"defaults":"required","languages":["curl","node","python","javascript"],"prefill":true},"url":"full"},"background":{"decoration":"grid","color":{"light":"#FFF8F2","dark":"#11100F"}},"navbar":{"links":[{"href":"https://docs.woes.dev","label":"Docs"},{"href":"https://docs.woes.dev/api-reference/overview","label":"API Reference"},{"href":"https://docs.woes.dev/security/data-privacy","label":"Trust"},{"href":"https://woes.dev","label":"App"}],"primary":{"type":"button","label":"Open app","href":"https://woes.dev"}},"footer":{"links":[{"header":"Product","items":[{"label":"Quickstart","href":"/quickstart/overview"},{"label":"Support Workflows","href":"/support-workflows/omnichannel-support"},{"label":"Chat Widget","href":"/chat-widget/overview"},{"label":"Website","href":"https://woes.dev"},{"label":"Blog","href":"https://woes.dev/blog"}]},{"header":"Knowledge","items":[{"label":"Knowledge Base","href":"/knowledge-base/overview"},{"label":"AI Agents","href":"/agents/overview"},{"label":"Analytics","href":"/platform/analytics"}]},{"header":"Developer","items":[{"label":"Developer Overview","href":"/developer/overview"},{"label":"API Reference","href":"/api-reference/overview"},{"label":"Authentication","href":"/api/authentication"}]},{"header":"Security","items":[{"label":"Widget Identity","href":"/security/widget-identity"},{"label":"Data Privacy","href":"/security/data-privacy"},{"label":"Tenant Isolation","href":"/security/tenant-isolation"}]}]},"search":{"prompt":"Search Woes docs, API guides, and endpoint reference..."},"seo":{"metatags":{"og:site_name":"Woes Docs","twitter:card":"summary_large_image"},"indexing":"navigable"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":false},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"woes","hasAudioNarration":false,"actualSubdomain":"woes","customDomains":["docs.woes.dev"],"gitSource":{"type":"github","owner":"spazman2c","repo":"woesdocs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"e11cbd83-504b-4a19-83e1-400e755437d0","liveDeploymentHistoryId":"6a495fcd7c1f63e9b6fe6af5","schemaVersion":"v3"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6a495fcd7c1f63e9b6fe6af5:success","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"Docs","count":73},{"language":"default","tag":"Woes documentation","count":73},{"language":"default","tag":"API Reference","count":45},{"language":"default","tag":"API reference","count":45},{"language":"default","tag":"Integrations","count":28},{"language":"default","tag":"Endpoint reference","count":28},{"language":"default","tag":"Support workflows","count":14},{"language":"default","tag":"Platform","count":10},{"language":"default","tag":"Resource guides","count":8},{"language":"default","tag":"Chat widget","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes woes-active-nav-enter{0%{background-position:-18px 0;opacity:.72;transform:translateX(-5px)}to{background-position:0 0;opacity:1;transform:translateX(0)}}:root{--woes-orange:#ff7038;--woes-orange-strong:#b83a12;--woes-accent-text:#b83a12;--woes-orange-soft:rgba(255, 112, 56, 0.1);--woes-border:rgba(255, 112, 56, 0.24);--woes-active-bg:rgba(184, 58, 18, 0.08);--woes-active-border:rgba(184, 58, 18, 0.22);--woes-active-text:#5f210f;--woes-active-outline:rgba(255, 112, 56, 0.9);--woes-active-ring:rgba(184, 58, 18, 0.08);--woes-title:#2a211d;--woes-copy:#514842;--woes-copy-muted:#746961;--woes-link:#b83a12;--woes-link-hover:#8f2d0d}html.dark{--woes-accent-text:#ff7038;--woes-active-bg:rgba(255, 255, 255, 0.055);--woes-active-border:rgba(255, 255, 255, 0.07);--woes-active-text:#fff0e8;--woes-active-outline:rgba(255, 112, 56, 0.9);--woes-active-ring:rgba(255, 255, 255, 0.035);--woes-title:#f7f1ea;--woes-copy:#b7aea7;--woes-copy-muted:#8f8780;--woes-link:#ff9a70;--woes-link-hover:#ffc2a5}@view-transition{navigation:auto}.sidebar-group-header,:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"], [class*=\"toc\"]) [class*=uppercase],:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"], [class*=\"toc\"]) p[class*=uppercase],:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"], [class*=\"toc\"]) span[class*=uppercase]{color:var(--woes-accent-text)!important;font-weight:700!important;letter-spacing:.18em!important;text-transform:uppercase!important}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) :where(button, [role=\"button\"])[aria-expanded],:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) :where(button, [role=\"button\"])[aria-haspopup],:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) [data-state]>button{color:var(--woes-accent-text)!important;font-weight:650!important}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) :where(button, [role=\"button\"])[aria-expanded] :where(span, svg),:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) :where(button, [role=\"button\"])[aria-haspopup] :where(span, svg){color:inherit!important;stroke:currentColor!important}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) :where(button, [role=\"button\"])[aria-expanded=false]{opacity:.92}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a[aria-current=page],:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a[data-active=true]{color:var(--woes-active-text)!important;font-weight:700!important}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a[aria-current=page]{background:linear-gradient(90deg,rgba(255,112,56,.16),transparent 42%),var(--woes-active-bg)!important;border-color:var(--woes-active-border)!important;box-shadow:inset 3px 0 0 var(--woes-active-outline),inset 0 0 0 1px var(--woes-active-ring)!important;text-shadow:none!important}main h1,main h2,main h3{color:var(--woes-title)!important}main :where(p, li, td, dd, blockquote, figcaption){color:var(--woes-copy)!important}main :where(p, li, td, dd) :where(span, strong){color:inherit!important}main :where(a){color:var(--woes-link)!important;text-decoration-color:rgba(255,112,56,.55)!important;text-underline-offset:.18em}main :where(a:hover){color:var(--woes-link-hover)!important;text-decoration-color:var(--woes-orange)!important}html.dark main :where(table){border-color:rgba(255,255,255,.1)}main :where(th){color:var(--woes-title)!important}main :where(.steps, [class*=\"step\"]) :where(p, div, span):not(a):not(button){color:var(--woes-copy)}.card,[class*=card]{border-color:var(--woes-border)}html.dark main :where(.card, [class*=\"card\"]) :where(p, span, div):not(a):not(button),html:not(.dark) main :where(.card, [class*=\"card\"]) :where(p, span, div):not(a):not(button){color:var(--woes-copy-muted)}html:not(.dark) main :where(\n h1,\n h2,\n h3,\n h4,\n p,\n li,\n td,\n th,\n dd,\n blockquote,\n figcaption\n )[class*=text-neutral-50],html:not(.dark) main :where(\n h1,\n h2,\n h3,\n h4,\n p,\n li,\n td,\n th,\n dd,\n blockquote,\n figcaption\n )[class*=text-slate-50],html:not(.dark) main :where(\n h1,\n h2,\n h3,\n h4,\n p,\n li,\n td,\n th,\n dd,\n blockquote,\n figcaption\n )[class*=text-white],html:not(.dark) main :where(\n h1,\n h2,\n h3,\n h4,\n p,\n li,\n td,\n th,\n dd,\n blockquote,\n figcaption\n )[class*=text-zinc-50],html:not(.dark) main :where(h1, h2, h3, h4, p, li, td, th, dd, blockquote, figcaption) :where(\n [class*=\"text-white\"],\n [class*=\"text-slate-50\"],\n [class*=\"text-zinc-50\"],\n [class*=\"text-neutral-50\"]\n ){color:var(--woes-title)!important}code{border-color:rgba(255,112,56,.18)}.woes-agent-prompt-copy{align-items:center;background:var(--woes-orange);border:1px solid rgba(255,112,56,.72);border-radius:8px;color:#171310;cursor:pointer;display:inline-flex;font-size:.94rem;font-weight:750;gap:.5rem;line-height:1;margin:.75rem 0 1rem;padding:.85rem 1rem;transition:background-color 160ms ease,border-color 160ms ease,transform 160ms ease}.woes-agent-prompt-copy:hover{background:#ff875c;border-color:#ffb08f;transform:translateY(-1px)}.woes-agent-prompt-source{height:1px;left:-9999px;opacity:0;pointer-events:none;position:absolute;top:auto;width:1px}@media (prefers-reduced-motion:no-preference){::view-transition-new(root),::view-transition-old(root){animation-duration:180ms;animation-timing-function:cubic-bezier(.2,.7,.2,1)}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) :where(button, [role=\"button\"]),:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a{transition:background-color 220ms cubic-bezier(.2,.7,.2,1),border-color 220ms cubic-bezier(.2,.7,.2,1),color 220ms cubic-bezier(.2,.7,.2,1),box-shadow 220ms cubic-bezier(.2,.7,.2,1),opacity 220ms cubic-bezier(.2,.7,.2,1),transform 220ms cubic-bezier(.2,.7,.2,1)}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a:hover{transform:translateX(2px)}:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a[aria-current=page],:where(aside, nav, [role=\"navigation\"], [class*=\"sidebar\"]) a[data-active=true]{animation:woes-active-nav-enter 260ms cubic-bezier(.16,1,.3,1);transform:translateX(0)}}"}],"page":{"pagePath":"platform/client-portal","slug":"/platform/client-portal","pageMetadata":{"title":"Client Portal","description":"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.","href":"/platform/client-portal"},"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: \"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.\"\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={code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`client-portal`,children:`Client Portal`}),`\n`,_jsxs(_components.p,{children:[`The Client Portal is the customer-facing account experience for support issues\nand requests. Operators can preview it from `,_jsx(_components.strong,{children:`Clients → Portal Preview`}),` and\nconfigure it from `,_jsx(_components.strong,{children:`Clients → Portal Settings`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`current-status`,children:`Current Status`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Capability`}),_jsx(_components.th,{children:`Status`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Operator preview at `,_jsx(_components.code,{children:`/clients/portal`})]}),_jsx(_components.td,{children:`Available behind workspace auth.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Portal settings in Clients`}),_jsx(_components.td,{children:`Available.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Branded light portal shell`}),_jsx(_components.td,{children:`Available in preview.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Email-code login request and verification`}),_jsx(_components.td,{children:`Available for portal sessions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Customer-facing issue list and issue creation`}),_jsx(_components.td,{children:`Available for valid portal sessions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Portal member management routes`}),_jsx(_components.td,{children:`Available for valid portal sessions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Custom auth URL mode`}),_jsx(_components.td,{children:`Configurable for unified app login.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Custom-domain DNS display`}),_jsx(_components.td,{children:`Available as setup state.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`portal-settings`,children:`Portal Settings`}),`\n`,_jsxs(_components.p,{children:[`Portal settings are stored on workspace settings and require `,_jsx(_components.code,{children:`customers.write`}),` to save.`]}),`\n`,_jsx(_components.p,{children:`Settings include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enablement.`}),`\n`,_jsx(_components.li,{children:`Portal name.`}),`\n`,_jsx(_components.li,{children:`Logo URL.`}),`\n`,_jsx(_components.li,{children:`Accent color.`}),`\n`,_jsx(_components.li,{children:`Header links.`}),`\n`,_jsx(_components.li,{children:`Footer link sections.`}),`\n`,_jsx(_components.li,{children:`Default access behavior.`}),`\n`,_jsx(_components.li,{children:`Visible and editable issue fields.`}),`\n`,_jsx(_components.li,{children:`Customer-facing issue status labels.`}),`\n`,_jsx(_components.li,{children:`Customer-facing task status labels.`}),`\n`,_jsx(_components.li,{children:`Customer-facing forms.`}),`\n`,_jsx(_components.li,{children:`Custom domain and DNS record display.`}),`\n`,_jsx(_components.li,{children:`OTP or custom-auth URL mode.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`experience-settings`,children:`Experience Settings`}),`\n`,_jsx(_components.p,{children:`Use portal experience settings to control:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enablement.`}),`\n`,_jsx(_components.li,{children:`Portal name.`}),`\n`,_jsx(_components.li,{children:`Horizontal logo URL.`}),`\n`,_jsx(_components.li,{children:`Accent color.`}),`\n`,_jsx(_components.li,{children:`Header links.`}),`\n`,_jsx(_components.li,{children:`Footer link sections.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Client Portal is plan-gated. When the selected plan does not include it, Woes\nshows the lock state in the settings panel.`}),`\n`,_jsx(Heading,{level:`2`,id:`data-settings`,children:`Data Settings`}),`\n`,_jsx(_components.p,{children:`Use data settings to choose the customer-facing portal shape:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Which issue fields customers can see.`}),`\n`,_jsx(_components.li,{children:`Whether each non-system field is view-only or editable.`}),`\n`,_jsx(_components.li,{children:`Customer-facing labels and colors for issue statuses.`}),`\n`,_jsx(_components.li,{children:`Customer-facing labels and colors for task statuses.`}),`\n`,_jsx(_components.li,{children:`Which request forms are enabled.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`access-levels`,children:`Access Levels`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Access level`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Admin`}),_jsx(_components.td,{children:`Can see account-level portal issues for the same customer company.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Member`}),_jsx(_components.td,{children:`Can see issues tied to their customer email.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`No access`}),_jsx(_components.td,{children:`Cannot access portal issues.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`portal-issues`,children:`Portal Issues`}),`\n`,_jsx(_components.p,{children:`Portal-visible issues use the same issue model as Woes support issues. Portal routes return customer-safe issue fields and customer/support message roles.`}),`\n`,_jsx(_components.p,{children:`Public portal access depends on a valid portal session. In non-production environments, a development session header may be used for testing.`}),`\n`,_jsxs(_components.p,{children:[`Customers with access can create portal issues. Portal-created issues enter the\nworkspace issue queue with `,_jsx(_components.code,{children:`source_channel = client_portal`}),` and customer-safe\nmetadata.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Public portal access still depends on production routing, email delivery, and\nworkspace configuration. Do not promise a custom-domain launch until the DNS\nand deployment setup are verified for that workspace.`})})]})}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":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Client Portal","description":"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.","href":"/platform/client-portal"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Client Portal","slug":"client-portal","depth":1,"children":[]},{"title":"Current Status","slug":"current-status","depth":2,"children":[]},{"title":"Portal Settings","slug":"portal-settings","depth":2,"children":[]},{"title":"Experience Settings","slug":"experience-settings","depth":2,"children":[]},{"title":"Data Settings","slug":"data-settings","depth":2,"children":[]},{"title":"Access Levels","slug":"access-levels","depth":2,"children":[]},{"title":"Portal Issues","slug":"portal-issues","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/woes/03c522a7be79c968/woes-widget.js"],"subdomain":"woes","siteName":"Woes","title":"Client Portal - Woes","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-29T21:24:42.274Z","gitLastModified":"2026-06-29T21:24:25.000Z","originalFileLocation":"platform/client-portal.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=\"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Woes\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_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=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Client Portal - Woes\">\u003cmeta data-mint-head property=\"og:description\" content=\"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Woes Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.woes.dev/platform/client-portal\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://woes.mintlify.app/_mintlify/api/og/v2?division=Client+Portal\u0026amp;title=Client+Portal\u0026amp;description=Configure+and+preview+the+customer-facing+client+portal+for+issue+visibility%2C+customer+forms%2C+and+branded+account+access.\u0026amp;theme=594accbaf32d79441de8f280\u0026amp;signature=5b6a4bb94d32a8dbd43f0e0833d3932e4a0905d15946ba1c2bff553713483360\">\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=\"Client Portal - Woes\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://woes.mintlify.app/_mintlify/api/og/v2?division=Client+Portal\u0026amp;title=Client+Portal\u0026amp;description=Configure+and+preview+the+customer-facing+client+portal+for+issue+visibility%2C+customer+forms%2C+and+branded+account+access.\u0026amp;theme=594accbaf32d79441de8f280\u0026amp;signature=5b6a4bb94d32a8dbd43f0e0833d3932e4a0905d15946ba1c2bff553713483360\">\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=\"/mintlify-assets/_mintlify/favicons/woes/SSvjR3VTqRe-th0R/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Woes\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#B83A12\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.woes.dev/platform/client-portal\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/platform/client-portal.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.woes.dev/#organization\",\"name\":\"Woes\",\"url\":\"https://docs.woes.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/woes/QdK5garcQwoPsAlm/images/woes-wordmark.png?fit=max\u0026auto=format\u0026n=QdK5garcQwoPsAlm\u0026q=85\u0026s=5fb012a2064e1898482aab3a15aa40fc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.woes.dev#website\",\"name\":\"Woes\",\"url\":\"https://docs.woes.dev\",\"publisher\":{\"@id\":\"https://docs.woes.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.woes.dev/platform/client-portal#webpage\",\"url\":\"https://docs.woes.dev/platform/client-portal\",\"name\":\"Client Portal\",\"description\":\"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.\",\"dateModified\":\"2026-06-29T21:24:25.000Z\",\"isPartOf\":{\"@id\":\"https://docs.woes.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.woes.dev/platform/client-portal#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.woes.dev/platform/client-portal#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Woes documentation\",\"item\":\"https://docs.woes.dev/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Client Portal\",\"item\":\"https://docs.woes.dev/platform/client-portal\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.woes.dev/platform/client-portal#article\",\"headline\":\"Client Portal\",\"name\":\"Client Portal\",\"description\":\"Configure and preview the customer-facing client portal for issue visibility, customer forms, and branded account access.\",\"url\":\"https://docs.woes.dev/platform/client-portal\",\"mainEntityOfPage\":{\"@id\":\"https://docs.woes.dev/platform/client-portal#webpage\"},\"dateModified\":\"2026-06-29T21:24:25.000Z\",\"publisher\":{\"@id\":\"https://docs.woes.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.woes.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Woes\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Woes","nav":{"global":null,"tabs":[{"tab":"Docs","icon":"book-open","groups":[{"group":"Woes documentation","pages":[{"group":"Getting started","expanded":false,"pages":[{"title":"Woes Documentation","href":""},{"title":"Quickstart Overview","href":"/quickstart/overview"},{"title":"Add API Context","href":"/quickstart/add-context"},{"title":"Invite Your Team","href":"/quickstart/invite-team"}]},{"group":"Support workflows","expanded":false,"pages":[{"title":"Omnichannel Support","href":"/support-workflows/omnichannel-support"},{"title":"Inbox","href":"/platform/inbox"},{"title":"Issues","sidebarTitle":"Issues overview","href":"/platform/issues"},{"group":"Automations","icon":"workflow","pages":[{"title":"Automations","sidebarTitle":"Overview","href":"/platform/automations"},{"group":"Nodes","icon":"git-branch","pages":[{"title":"Automation Nodes","sidebarTitle":"Overview","href":"/platform/automations/nodes/overview"},{"title":"When Triggers","sidebarTitle":"When triggers","href":"/platform/automations/nodes/when-triggers"},{"title":"Logic and Delay Nodes","sidebarTitle":"Logic and delay","href":"/platform/automations/nodes/logic-and-delay"},{"title":"Then Actions","sidebarTitle":"Then actions","href":"/platform/automations/nodes/then-actions"}]}]},{"title":"Team Chat","href":"/platform/team-chat"},{"title":"Assignment","href":"/settings/assignment"},{"title":"Surveys","href":"/settings/surveys"},{"title":"Email","href":"/channels/email"},{"title":"Discord","href":"/channels/discord"},{"title":"Slack","href":"/channels/slack"}]},{"group":"Platform","expanded":false,"pages":[{"title":"Platform Overview","href":"/platform/overview"},{"title":"Settings Overview","href":"/settings/overview"},{"title":"Billing","href":"/settings/billing"},{"title":"Bring Your Own AI","href":"/settings/bring-your-own-ai"},{"title":"Keys","href":"/settings/keys"},{"title":"Users and Permissions","href":"/settings/users-permissions"},{"title":"Data, Tags, Statuses, and Macros","href":"/settings/data-macros"},{"title":"Notification Preferences","href":"/settings/notifications"},{"title":"Keyboard Shortcuts and Command Search","sidebarTitle":"Keyboard and search","href":"/reference/keyboard-shortcuts"},{"title":"Troubleshooting","href":"/reference/troubleshooting"}]},{"group":"AI agents","expanded":false,"pages":[{"title":"Agents","sidebarTitle":"Agents overview","href":"/agents/overview"},{"title":"Create and Manage Agents","href":"/agents/create-agents"},{"title":"Context Learning","href":"/agents/context-learning"},{"title":"Agent Routing and Widget Keys","href":"/agents/routing-widget"},{"title":"Agent Quality Loop","href":"/agents/quality-loop"}]},{"group":"Knowledge base","expanded":false,"pages":[{"title":"Knowledge Base Overview","href":"/knowledge-base/overview"},{"title":"Sources","href":"/context/sources"},{"title":"Auth and API Testing","href":"/context/auth-testing"},{"title":"GitHub Context","href":"/context/github"},{"title":"Knowledge Base Gaps","description":"Find and fix missing context that causes weak answers, handoffs, or repeated support work.","href":"/knowledge-base/gaps"}]},{"group":"Client Portal","expanded":false,"pages":[{"title":"Client Portal","href":"/platform/client-portal"},{"title":"Client Portal Access Control","description":"Control who can view client portal issues and account information.","href":"/customer-portal/access-control"}]},{"group":"Chat widget","expanded":false,"pages":[{"title":"Chat Widget Overview","href":"/chat-widget/overview"},{"title":"Live Chat","href":"/channels/live-chat"},{"title":"Install the Widget","href":"/quickstart/install-widget"},{"title":"Install the Widget in Mintlify","href":"/quickstart/install-widget-mintlify"},{"title":"iOS Swift SDK","href":"/chat-widget/ios-sdk"},{"title":"Widget JavaScript API","href":"/chat-widget/javascript-api"},{"title":"Widget Identity Verification","href":"/chat-widget/identity-verification"}]},{"group":"Clients and account intelligence","expanded":false,"pages":[{"title":"Clients","sidebarTitle":"Clients overview","href":"/platform/clients"},{"title":"Account Intelligence","href":"/account-intelligence/overview"},{"title":"Customer Presence","href":"/account-intelligence/presence"}]},{"group":"Product intelligence","expanded":false,"pages":[{"title":"Product Intelligence","href":"/product-intelligence/overview"},{"title":"Feature Requests","href":"/product-intelligence/feature-requests"},{"title":"Closing the Loop","href":"/product-intelligence/closing-loop"}]},{"group":"Reporting \u0026 analytics","expanded":false,"pages":[{"title":"Analytics","href":"/platform/analytics"},{"title":"Usage and Capacity","href":"/reporting/usage-capacity"},{"title":"Survey Performance","href":"/reporting/surveys-performance"}]},{"group":"Updates","expanded":false,"pages":[{"title":"Updates Overview","href":"/broadcasts/overview"},{"title":"Create an Update","href":"/broadcasts/create-broadcast"},{"title":"Update Analytics","href":"/broadcasts/analytics"}]},{"group":"Integrations","expanded":false,"pages":[{"title":"Integrations","href":"/integrations/overview"},{"title":"Email Integration","href":"/integrations/email"},{"title":"Discord Integration","href":"/integrations/discord"},{"title":"GitHub Context","href":"/integrations/github-context"},{"title":"Mintlify Widget Install","href":"/integrations/mintlify-widget"}]},{"group":"Security","expanded":false,"pages":[{"title":"Widget Identity","href":"/security/widget-identity"},{"title":"Data Privacy","href":"/security/data-privacy"},{"title":"Tenant Isolation","href":"/security/tenant-isolation"},{"title":"Security Logs","href":"/security/security-logs"}]},{"group":"Developer","expanded":false,"pages":[{"title":"Developer Overview","href":"/developer/overview"},{"title":"Woes Terminal","sidebarTitle":"Terminal","icon":"square-terminal","href":"/developer/cli"},{"title":"REST API Guide","href":"/developer/rest-api"},{"title":"Glossary","href":"/reference/glossary"},{"title":"Route Boundaries","href":"/developer/route-boundaries"}]}]}]},{"tab":"API Reference","icon":"square-terminal","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"Integrations","icon":"plug-zap","pages":[{"title":"Integrations","href":"/integrations-catalog/overview"}]}]},"title":"Client Portal - Woes","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":[],"chunks":[]}