[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"documentation:page:\u002Fdocumentation\u002Fportal\u002Fbranding":3,"documentation:nav":206},{"id":4,"title":5,"body":6,"category":196,"description":197,"extension":198,"meta":199,"navigation":200,"order":186,"path":201,"seo":202,"stem":203,"updated":204,"__hash__":205},"documentation\u002Fdocumentation\u002Fportal\u002Fbranding.md","Portal customization",{"type":7,"value":8,"toc":184},"minimark",[9,19,24,36,60,64,67,71,86,90,93,97,106,117,121,128,156,159,163,170,174],[10,11,12,13,18],"p",{},"Every project gets a branded customer portal. This page covers the admin side: what you can customize and how each option behaves. For what customers can do on the portal, see ",[14,15,17],"a",{"href":16},"\u002Fdocumentation\u002Fportal\u002Foverview","Customer portal",".",[20,21,23],"h2",{"id":22},"portal-url","Portal URL",[10,25,26,27,31,32,18],{},"Your portal lives on a subdomain built from the project's ",[28,29,30],"strong",{},"slug",": ",[33,34,35],"code",{},"{slug}.joely.io",[37,38,39,43,57],"ul",{},[40,41,42],"li",{},"Slugs are 2 to 100 characters, lowercase letters, digits, and hyphens only.",[40,44,45,46,49,50,49,53,56],{},"Slugs are unique across all of Joely, and a list of reserved words (",[33,47,48],{},"admin",", ",[33,51,52],{},"api",[33,54,55],{},"www",", ...) is blocked.",[40,58,59],{},"You can change the slug at any time from the project settings. The old URL stops working immediately, so update any links you have published.",[20,61,63],{"id":62},"logo","Logo",[10,65,66],{},"Upload an image (JPG, PNG, or WebP, up to 2 MB) or point to an HTTPS URL. The logo appears on your portal and in your dashboard.",[20,68,70],{"id":69},"theme-colors","Theme colors",[10,72,73,74,77,78,81,82,85],{},"On the ",[28,75,76],{},"Plus"," plan and higher, you can set the portal's ",[28,79,80],{},"primary"," and ",[28,83,84],{},"neutral"," colors, applied to the customer portal (including the invitation acceptance page). Without the feature, the portal uses Joely's default theme. If the owner's plan later drops below Plus, your colors are kept in storage but the portal falls back to defaults until the plan is upgraded again.",[20,87,89],{"id":88},"supported-languages","Supported languages",[10,91,92],{},"You can list up to 20 languages your team supports. The list is shown to customers when they open a ticket, as information only: it does not restrict what language customers can write in.",[20,94,96],{"id":95},"private-mode","Private mode",[10,98,73,99,101,102,105],{},[28,100,76],{}," plan and higher, a project can be marked ",[28,103,104],{},"private",":",[37,107,108,111,114],{},[40,109,110],{},"Private projects are invisible in the portal's store search; searching their slug behaves exactly as if the project did not exist.",[40,112,113],{},"Direct links keep working: anyone with the URL can still open the portal and sign in.",[40,115,116],{},"Customers who already joined keep seeing the project in their portal list.",[20,118,120],{"id":119},"support-hours-banner","Support hours banner",[10,122,123,124,105],{},"Two optional banners inform customers when your team is away, both driven by the ",[14,125,127],{"href":126},"\u002Fdocumentation\u002Fai\u002Fassistant#schedule-and-vacation-periods","AI schedule",[37,129,130,150],{},[40,131,132,135,136],{},[28,133,134],{},"Offline banner"," (off by default): shown on the ticket page, with two display modes:\n",[37,137,138,144],{},[40,139,140,143],{},[28,141,142],{},"Working hours"," (default): shown outside your configured working hours, announcing the next opening time.",[40,145,146,149],{},[28,147,148],{},"Custom message",": permanently shows a message you write (up to 200 characters) with the icon of your choice, instead of any schedule computation. Useful for multi-timezone teams without fixed hours, e.g. \"Your ticket has been received, we will get back to you shortly.\"",[40,151,152,155],{},[28,153,154],{},"Vacation banner"," (on by default): shown during active vacation periods, with upcoming ones announced. An active vacation always takes priority over the offline banner, including its custom message mode.",[10,157,158],{},"The banner mode only affects what customers see: the weekly schedule keeps driving AI auto-response availability regardless of the selected mode.",[20,160,162],{"id":161},"store-search-and-the-global-portal","Store search and the global portal",[10,164,165,166,169],{},"Customers can find stores by typing the ",[28,167,168],{},"exact slug"," in the portal search (there is no fuzzy matching). Once they have joined one or more projects, the portal home page lists all their stores with open ticket counts and unread activity, plus a unified ticket list across every project.",[20,171,173],{"id":172},"white-label","White-label",[10,175,73,176,179,180,18],{},[28,177,178],{},"Enterprise"," plan, the portal can be hosted on your own custom domain with Joely branding removed. This is set up together with the Joely team: contact ",[14,181,183],{"href":182},"mailto:contact@joely.io","contact@joely.io",{"title":185,"searchDepth":186,"depth":186,"links":187},"",2,[188,189,190,191,192,193,194,195],{"id":22,"depth":186,"text":23},{"id":62,"depth":186,"text":63},{"id":69,"depth":186,"text":70},{"id":88,"depth":186,"text":89},{"id":95,"depth":186,"text":96},{"id":119,"depth":186,"text":120},{"id":161,"depth":186,"text":162},{"id":172,"depth":186,"text":173},"portal","Your portal URL, theme colors, logo, supported languages, private mode, the support hours banner, and white-label.","md",{},true,"\u002Fdocumentation\u002Fportal\u002Fbranding",{"title":5,"description":197},"documentation\u002Fportal\u002Fbranding","2026-06-07","2arh7Ix8m5q9lXnkqTTN0kuO3v2j2-iUy408B4u80uU",[207,209,212,217,221,225,229,233,237,241,244,247,250,253,254,257,261,264,267,271,274],{"title":17,"path":16,"category":208,"order":208},null,{"title":210,"path":211,"category":208,"order":208},"Ticket lifecycle","\u002Fdocumentation\u002Ftickets\u002Flifecycle",{"title":213,"path":214,"category":215,"order":216},"Account & security","\u002Fdocumentation\u002Faccount\u002Fsecurity","account",1,{"title":218,"path":219,"category":220,"order":216},"AI assistant","\u002Fdocumentation\u002Fai\u002Fassistant","ai",{"title":222,"path":223,"category":224,"order":216},"CSAT surveys","\u002Fdocumentation\u002Fcsat","csat",{"title":226,"path":227,"category":228,"order":216},"Getting started","\u002Fdocumentation\u002Fgetting-started","getting-started",{"title":230,"path":231,"category":232,"order":216},"Tebex integration","\u002Fdocumentation\u002Fintegrations\u002Ftebex","integrations",{"title":234,"path":235,"category":236,"order":216},"Roles & permissions","\u002Fdocumentation\u002Fteam\u002Froles-permissions","team",{"title":238,"path":239,"category":240,"order":216},"Ticket statuses","\u002Fdocumentation\u002Ftickets\u002Fstatuses","tickets",{"title":242,"path":243,"category":215,"order":186},"Notifications","\u002Fdocumentation\u002Faccount\u002Fnotifications",{"title":245,"path":246,"category":220,"order":186},"AI knowledge base","\u002Fdocumentation\u002Fai\u002Fknowledge",{"title":248,"path":249,"category":232,"order":186},"Discord integration","\u002Fdocumentation\u002Fintegrations\u002Fdiscord",{"title":251,"path":252,"category":228,"order":186},"Plans & limits","\u002Fdocumentation\u002Fplans-limits",{"title":5,"path":201,"category":196,"order":186},{"title":255,"path":256,"category":236,"order":186},"Members & invitations","\u002Fdocumentation\u002Fteam\u002Fmembers-invitations",{"title":258,"path":259,"category":220,"order":260},"Writing AI-ready documentation","\u002Fdocumentation\u002Fai\u002Fwriting-ai-ready-docs",3,{"title":262,"path":263,"category":232,"order":260},"GitHub integration","\u002Fdocumentation\u002Fintegrations\u002Fgithub",{"title":265,"path":266,"category":240,"order":260},"Messages & conversation","\u002Fdocumentation\u002Ftickets\u002Fmessages",{"title":268,"path":269,"category":232,"order":270},"Tebex keys & security","\u002Fdocumentation\u002Fintegrations\u002Ftebex-keys",4,{"title":272,"path":273,"category":240,"order":270},"Configuring the ticket form","\u002Fdocumentation\u002Ftickets\u002Fconfiguration",{"title":275,"path":276,"category":232,"order":277},"Self-hosted Tebex Bridge","\u002Fdocumentation\u002Fintegrations\u002Ftebex-bridge",5]