Helpdesk

Data and privacy

Organizations, custom fields, the GDPR deletion job, and the optional AI and MCP features with their data-protection consequences.

Organizations

Customers can belong to an organization with a list of mail domains. New customers are assigned by their sender domain. Agents see an organization with its customers and tickets; in the portal, customers also see the tickets of colleagues in their organization.

Custom fields

Admins define fields for tickets with a key, a label, a type (text, number, boolean, select, date), options and a required flag. Agents set values on the ticket, the values are validated against the definition and recorded in the ticket history. Selectors can use them as custom.<key>, and an automation action can set them. Definitions are managed through the API at /api/custom-fields; a settings page does not exist yet.

GDPR deletion job

Admins start a deletion job for a customer, optionally including all of the customer’s tickets with their attachments in storage. Tickets with other participants (other customers, CC, BCC) are skipped. A customer that is still referenced is anonymized instead of deleted. For kept tickets the job blanks message bodies, headers, recipients, attachments and history data. Each job is logged (who, when, counts, no content), and the result reports what could not be erased instead of plain “done”.

Optional AI

Off unless AI_PROVIDER (openai or anthropic), AI_MODEL and AI_API_KEY are set. AI_BASE_URL points the openai provider at any OpenAI-compatible server, for example a self-hosted one. The API offers a ticket summary and rewriting, shortening, translating and tone changes for text an agent submits. Internal notes are not sent unless AI_INCLUDE_NOTES=true; requests are limited to 20 per user per hour.

With a hosted provider the ticket text leaves your infrastructure. Sign a data processing agreement and mention it in your privacy notice, or use a self-hosted model.

MCP server

A local MCP server (stdio) offers search_tickets, get_ticket and draft_reply; the last one only saves a draft and never sends. It reads the database directly and has no authentication: run it only for trusted local clients and never expose it over a network. Ticket bodies come as plain text inside UNTRUSTED_TICKET_DATA markers, which mitigates prompt injection but does not rule it out; internal notes are omitted unless MCP_INCLUDE_NOTES=true.

See deployment for the settings.