[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"documentation:page:\u002Fdocumentation\u002Fportal\u002Foverview":3,"documentation:nav":258},{"id":4,"title":5,"body":6,"category":244,"description":245,"extension":246,"meta":247,"navigation":248,"order":244,"path":249,"seo":250,"stem":256,"updated":244,"__hash__":257},"documentation\u002Fdocumentation\u002Fportal\u002Foverview.md","Customer portal",{"type":7,"value":8,"toc":228},"minimark",[9,13,18,26,29,33,38,45,49,78,87,91,94,98,109,113,116,135,138,193,197,200,203,221,225],[10,11,12],"p",{},"The customer portal is the customer-facing side of Joely: a branded space where your customers open tickets, follow the conversation, and check their purchases. It lives on your project's own portal URL and uses your project's theme.",[14,15,17],"h2",{"id":16},"signing-in","Signing in",[10,19,20,21,25],{},"Customers sign in with their ",[22,23,24],"strong",{},"Cfx.re account"," (the same account they use on the FiveM forums), no password to create, no separate registration. The first sign-in on a project's portal automatically registers them as a customer of that project.",[10,27,28],{},"Customer accounts are completely separate from staff accounts, even when the same person has both.",[14,30,32],{"id":31},"tickets","Tickets",[34,35,37],"h3",{"id":36},"creating-a-ticket","Creating a ticket",[10,39,40,41,44],{},"Customers open tickets from the portal, with a subject and a first message. If the project has Tebex stores connected, they can link the ticket to one of their ",[22,42,43],{},"purchased packages",", so staff immediately see which product the request is about.",[34,46,48],{"id":47},"replying-and-editing","Replying and editing",[50,51,52,65,72],"ul",{},[53,54,55,56,60,61,64],"li",{},"Customers can reply on any ticket status except ",[57,58,59],"code",{},"closed",", including ",[57,62,63],{},"resolved",", which is the built-in way of saying \"this is not actually fixed\".",[53,66,67,68,71],{},"Customers can ",[22,69,70],{},"edit their own messages",", with the same rule: allowed everywhere except on a closed ticket.",[53,73,67,74,77],{},[22,75,76],{},"react"," to messages in the thread.",[10,79,80,81,86],{},"For the full status-by-status rules, see ",[82,83,85],"a",{"href":84},"\u002Fdocumentation\u002Ftickets\u002Fstatuses","Ticket statuses",".",[34,88,90],{"id":89},"favorites","Favorites",[10,92,93],{},"Customers can mark tickets as favorites to find them quickly. When a ticket is resolved or closed, it is automatically removed from favorites.",[34,95,97],{"id":96},"requesting-closure","Requesting closure",[10,99,100,101,104,105,86],{},"When a customer considers their issue solved, they can request closure. The ticket moves to ",[22,102,103],{},"Pending closure"," immediately and a satisfaction survey is offered right away. If staff scheduled a future closure instead, the customer can close the ticket immediately rather than waiting. See ",[82,106,108],{"href":107},"\u002Fdocumentation\u002Ftickets\u002Flifecycle","Ticket lifecycle",[14,110,112],{"id":111},"participants-invite-links","Participants & invite links",[10,114,115],{},"The ticket creator can bring other customers into a ticket:",[117,118,119,126,129],"ol",{},[53,120,121,122,125],{},"The creator (or an existing participant) generates a secure ",[22,123,124],{},"invite link"," from the ticket.",[53,127,128],{},"Anyone who opens the link can see basic invite info; joining requires signing in with a Cfx.re account.",[53,130,131,132,86],{},"Joining automatically registers the invitee as a customer of the project and adds them to the ticket as a ",[22,133,134],{},"participant",[10,136,137],{},"Participants can read and reply to the ticket just like the creator. A few rules:",[50,139,140,147,154,161,168,175,181],{},[53,141,142,143,146],{},"Only the ",[22,144,145],{},"creator"," can remove a participant.",[53,148,149,150,153],{},"Participants can ",[22,151,152],{},"leave"," a ticket on their own (the creator cannot leave their own ticket).",[53,155,156,157,160],{},"Someone who ",[22,158,159],{},"left on their own"," can rejoin through the invite link, as long as it is still valid.",[53,162,163,164,167],{},"When the creator ",[22,165,166],{},"removes"," a participant, the current invite link is revoked immediately and the removed person cannot rejoin. The creator can generate a new link to invite someone else.",[53,169,170,171,174],{},"Invite links ",[22,172,173],{},"expire 7 days"," after they are created — asking for the link again mints a fresh one.",[53,176,170,177,180],{},[22,178,179],{},"stop working"," once the ticket is resolved or closed.",[53,182,183,184,187,188,192],{},"Participants get the same reply notifications as the creator — a portal alert, and a ",[22,185,186],{},"Discord DM"," on each staff reply if they linked their Discord account (see ",[82,189,191],{"href":190},"#notifications","Notifications"," below).",[14,194,196],{"id":195},"purchases","Purchases",[10,198,199],{},"When the project has Tebex stores connected, customers can browse their own purchases on the portal and use them when opening tickets.",[14,201,191],{"id":202},"notifications",[50,204,205,211],{},[53,206,207,210],{},[22,208,209],{},"On the portal:"," a notification bell aggregates mentions and pending satisfaction surveys across projects.",[53,212,213,216,217,86],{},[22,214,215],{},"On Discord:"," if the project has the Discord integration and the customer linked their Discord account, they receive a DM when staff replies, with a preview and a link back to the portal. Replying to the DM itself does nothing; replies always happen on the portal. See ",[82,218,220],{"href":219},"\u002Fdocumentation\u002Fintegrations\u002Fdiscord","Discord integration",[14,222,224],{"id":223},"leaving-a-project","Leaving a project",[10,226,227],{},"Customers can leave a project from the portal at any time. Their tickets remain with the project, and they can come back later by signing in again.",{"title":229,"searchDepth":230,"depth":230,"links":231},"",2,[232,233,240,241,242,243],{"id":16,"depth":230,"text":17},{"id":31,"depth":230,"text":32,"children":234},[235,237,238,239],{"id":36,"depth":236,"text":37},3,{"id":47,"depth":236,"text":48},{"id":89,"depth":236,"text":90},{"id":96,"depth":236,"text":97},{"id":111,"depth":230,"text":112},{"id":195,"depth":230,"text":196},{"id":202,"depth":230,"text":191},{"id":223,"depth":230,"text":224},null,"[object Object]","md",{},true,"\u002Fdocumentation\u002Fportal\u002Foverview",{"title":5,"description":251},{"What your customers can do on the portal":252,"category":253,"order":254,"updated":255},"Cfx.re sign-in, replies, favorites, ticket participants, invite links, and closure requests.","portal",1,"2026-07-19","documentation\u002Fportal\u002Foverview","i5vYtwnjiwcftM1UW4bXSvSO_wkkzJYgrRM0T4pM46k",[259,260,261,265,269,273,277,281,285,286,288,291,292,295,298,301,304,307,310,314,317],{"title":5,"path":249,"category":244,"order":244},{"title":108,"path":107,"category":244,"order":244},{"title":262,"path":263,"category":264,"order":254},"Account & security","\u002Fdocumentation\u002Faccount\u002Fsecurity","account",{"title":266,"path":267,"category":268,"order":254},"AI assistant","\u002Fdocumentation\u002Fai\u002Fassistant","ai",{"title":270,"path":271,"category":272,"order":254},"CSAT surveys","\u002Fdocumentation\u002Fcsat","csat",{"title":274,"path":275,"category":276,"order":254},"Getting started","\u002Fdocumentation\u002Fgetting-started","getting-started",{"title":278,"path":279,"category":280,"order":254},"Tebex integration","\u002Fdocumentation\u002Fintegrations\u002Ftebex","integrations",{"title":282,"path":283,"category":284,"order":254},"Roles & permissions","\u002Fdocumentation\u002Fteam\u002Froles-permissions","team",{"title":85,"path":84,"category":31,"order":254},{"title":191,"path":287,"category":264,"order":230},"\u002Fdocumentation\u002Faccount\u002Fnotifications",{"title":289,"path":290,"category":268,"order":230},"AI knowledge base","\u002Fdocumentation\u002Fai\u002Fknowledge",{"title":220,"path":219,"category":280,"order":230},{"title":293,"path":294,"category":276,"order":230},"Plans & limits","\u002Fdocumentation\u002Fplans-limits",{"title":296,"path":297,"category":253,"order":230},"Portal customization","\u002Fdocumentation\u002Fportal\u002Fbranding",{"title":299,"path":300,"category":284,"order":230},"Members & invitations","\u002Fdocumentation\u002Fteam\u002Fmembers-invitations",{"title":302,"path":303,"category":268,"order":236},"Writing AI-ready documentation","\u002Fdocumentation\u002Fai\u002Fwriting-ai-ready-docs",{"title":305,"path":306,"category":280,"order":236},"GitHub integration","\u002Fdocumentation\u002Fintegrations\u002Fgithub",{"title":308,"path":309,"category":31,"order":236},"Messages & conversation","\u002Fdocumentation\u002Ftickets\u002Fmessages",{"title":311,"path":312,"category":280,"order":313},"Tebex keys & security","\u002Fdocumentation\u002Fintegrations\u002Ftebex-keys",4,{"title":315,"path":316,"category":31,"order":313},"Configuring the ticket form","\u002Fdocumentation\u002Ftickets\u002Fconfiguration",{"title":318,"path":319,"category":280,"order":320},"Self-hosted Tebex Bridge","\u002Fdocumentation\u002Fintegrations\u002Ftebex-bridge",5]