Customer Support is a gated add-on. When enabled for a company it appears as Support in the sidebar (/support); its API is served at /api/v1/support. It is built on the same shared conversation used by document discussions and messaging across the ERP, so a ticket's whole history — customer replies, internal notes, and the audit trail — lives in one thread.
How it fits together
A ticket is a small workflow record (a reference number, subject, status, priority, requester, assignee, and SLA timing) wrapped around a conversation. Everything people write — public replies the customer sees, private internal notes only your team sees, and the automatic status/assignment log — is posted to that one conversation, in order. Because the conversation is the ERP's shared primitive, the helpdesk reuses the same notifications and following you already get on documents.
Jump to: Enabling the module · The helpdesk · Ticket status workflow · Replies, notes & SLA timing · Assignment · Desk automations · The operator cross-tenant queue · Report an Issue · Feedback board · Operator notes.
Enabling the module
Install Customer Support from the marketplace and enable it for the company. From then on the Support entry appears in the sidebar. Three permissions gate the desk — read, create, and update tickets — so you can give front-line agents full access while keeping read-only roles for everyone else.
The helpdesk
Open Support to see this company's tickets, most-recently-updated first. Filter by status with the chips along the top, or flip the Mine toggle to see only the tickets assigned to you. New ticket captures a subject, an opening description, a priority, and the requester (a name and email, or a linked contact). Each ticket gets a sequential reference number per company — TKT-000001, TKT-000002, and so on. Click any row to open it.
Ticket status workflow
Every ticket moves through a guarded set of states, and the helpdesk only offers the transitions that make sense from where it is now:
- New — just arrived, not yet picked up.
- Open — an agent is actively working it.
- Pending — waiting on the requester.
- On hold — waiting on a third party or an internal blocker.
- Solved — a resolution has been offered. If the customer replies again, the ticket reopens automatically.
- Closed — archived. A closed ticket can only be reopened.
Every status change is written into the ticket's conversation as a small system line, so the timeline is a complete, ordered audit of what happened and when. Illegal jumps (for example, straight from Closed to Pending) are simply not allowed.
Replies, internal notes & SLA timing
The composer posts to the conversation. A normal reply is public — part of the customer-facing thread. Flip the Internal note toggle to post a private line your team can see but the customer cannot; internal notes are clearly badged in the timeline.
The ticket tracks three timestamps for service-level reporting: first response (stamped once, on the first agent reply), resolved (when it moves to Solved), and closed. Because a customer reply on a Solved ticket reopens it, the resolution clock reflects reality rather than a premature close.
Assignment
Assign a ticket to an agent to make ownership clear; the assignee automatically follows the conversation, so they're notified of every new reply. Assignment and un-assignment are recorded in the timeline like any other change. The newly assigned agent also receives an in-app notification the moment a ticket lands on their desk (you're not notified when you grab a ticket yourself).
Auto-assign (opt-in). In the helpdesk's ⚙️ Desk settings, an admin can turn on Auto-assign new tickets: each new customer ticket (from the portal or email) is routed automatically to the least-loaded agent — the eligible team member with the fewest open assigned tickets. Eligible agents are the users whose role lets them update tickets. It's off by default, product-feedback reports are never auto-routed, and changing the toggle needs the desk-settings permission (admins have it out of the box).
Desk automations
The desk quietly helps in the background. Every AI feature below is consent-gated (it only runs if your company enabled AI data consent), never writes to the customer — suggestions are posted as internal notes for an agent to review — and simply does nothing when AI isn't configured.
- AI triage on new tickets. When a ticket arrives, AI suggests a priority and drafts a possible first reply as an internal note.
- AI reply suggestions. Whenever the customer replies — in the portal or by email — AI drafts the agent's next response from the whole conversation, again as an internal note to review before sending.
- AI resolution summary. When a ticket is first resolved, AI writes a short "what was the issue, how was it fixed" note for handoffs and your knowledge base.
- SLA escalation. A ticket with no first response within the SLA window is escalated once — its priority is raised a level and, if it's assigned, the responsible agent gets an alert notification.
- Auto-close. Solved tickets with no further reply for a few days close automatically, with a note in the timeline.
The operator cross-tenant queue
Customer Support has a second surface built for platform operators (the ColorsX74 system-user team): a single cross-tenant queue that lists tickets from every company, with the owning company shown on each row, filterable by status and by company. From there an operator can open any company's ticket and reply or change its status on that company's behalf — the action is performed in the correct company's context and is dual-attributed: a "handled by platform support operator" line is written into the tenant's own timeline, so the company always sees that the platform team helped.
This surface is reserved for operators — it requires the platform support permission, granted only to the dedicated operator roles. A normal company user never sees other companies' tickets.
Report an Issue (product feedback)
A 🐞 Report an Issue button is available on every page for any signed-in user — on desktop it floats at the bottom-right (next to the AI assistant button); on mobile it sits in the top bar. It opens a small dialog to file a Bug, Enhancement, or Feedback report — write a description and add up to six attachments: paste a screenshot straight from your clipboard or use 📎 Attach file (each previews inline before you send). On submit, the app also attaches a small context block (the page you were on, the app build, your browser, and the last few errors your session hit — automatically, with sensitive values redacted) so the team can reproduce and debug the issue without a back-and-forth.
These reports are not ordinary support tickets: they route to the ColorsX74 product/development queue — a single cross-company feedback board grouped by Bug / Enhancement / Feedback — and they do not appear on your company's own support desk. It's the fast path to tell us something's broken or to ask for an improvement, with a picture worth a thousand words attached.
Managing the reports — the feedback board
Platform operators (and SuperAdmin) manage the incoming reports on the feedback board at /support/feedback — it's linked as “Feedback board” from both the Support helpdesk toolbar and the operator queue. The board lists every report from every company — each row shows the company's name — filterable by category (Bug / Enhancement / Feedback) and by status. Open a row to see the full ticket: the description, the auto-captured context block, the screenshots, and the running conversation.
From the ticket an operator can reply (a visible comment or a private internal note) and move it through the normal status workflow (New → Open → Pending → Solved → Closed), so a report's progress is always visible in one place. A normal company user cannot see the board — it requires the platform support permission — but their own filed reports are acknowledged on submit.
Each board row also carries two quick actions: ✔ close now (one click, no navigation) and 🗑 delete. Delete permanently removes the ticket and its whole conversation — messages, followers, and attachments including the stored files — after a confirmation. It exists for clearing junk and test reports (the operator queue and the operator ticket view offer it too); there is deliberately no tenant-facing delete, and no undo. Ticket numbering is gap-safe: deleting a ticket never causes a number to be reissued to a colliding value.
Using it as a QA loop: testers simply file everything they find via 🐞 (one issue per report, screenshots help); the development side works the board — triage, fix, reply with what changed, close. The auto-context block means a report is reproducible without asking the tester what page or build they were on.
Operator notes
- One conversation per ticket. Replies, internal notes, and the status/assignment audit all live in the ticket's single thread, in order.
- Internal notes never reach the customer. They are private to your team and badged in the timeline.
- Reopen is automatic. A customer reply on a Solved ticket brings it back to Open so nothing is lost after a premature resolve.
- Cross-tenant support is audited. When the platform team answers for a company, that help is attributed in the company's own timeline.
- Numbers are per company. Each company has its own
TKT-…sequence.