Workflow: Support Ticket Lifecycle
Modules involved: Support Tickets · Email Pipe · Spam Filters · Knowledge Base · Surveys
Who uses it: Support team, Customer success agents, Clients (portal)
Typical duration: Hours – days (depends on issue complexity)
Overview
The complete lifecycle of a support ticket: from opening (automatic email, client portal, or manually by an agent) through to resolution and feedback. Includes spam filtering, department routing, reply tracking, and optionally feeding the Knowledge Base with solutions found.
Flow Diagram
TICKET SOURCES
│
├── [EMAIL → PIPE.PHP]
│ │ email received at department address
│ │ → spam filter → new ticket OR reply to existing
│ │ (max 10 tickets / 15 min / sender — rate limiting)
│
├── [CLIENT PORTAL]
│ │ client opens ticket from their account
│
└── [MANUAL — by agent]
│ agent creates ticket from `/admin/tickets`
│
↓
[NEW TICKET]
│ status: configurable (e.g. New → In Progress → Answered → Closed)
│ priority: Low / Medium / High / Urgent
│ department: assigned based on destination email address
│
├── AGENT REPLIES
│ │ reply added → status updated
│ │ client receives email with the reply
│ │ ↓ Client replies from email → reply added automatically via pipe
│
├── PREDEFINED REPLY
│ │ agent selects standard reply from library
│
└── ESCALATION
│ priority increased or ticket transferred to another department
│
↓
[TICKET RESOLVED]
│ status → Answered / Closed
│ ↓ optional: Knowledge Base article created from solution
│ ↓ optional: satisfaction survey sent to client
│
[TICKET CLOSED ✓]
Step by Step
1. Opening the Ticket — Entry Sources
A. Email Pipe (automatic)
How it works:
- An email arrives at the department address (e.g.
support@company.com) - The mail server forwards the message to
/pipe.phpin the CRM - The system checks the spam filter (see below)
- If the subject contains
[Ticket ID: 123]→ adds as a reply to the existing ticket - If not → creates a new ticket with the sender's details
Rate limiting: Maximum 10 new tickets / 15 minutes per email address — prevents flooding.
Configurable options in email pipe:
| Option | Description |
|---|---|
email_piping_only_registered |
Accept tickets only from emails registered as clients |
email_piping_only_replies |
Accept only replies to existing tickets (does not create new tickets) |
email_piping_default_priority |
Default priority for tickets from email |
default_ticket_reply_status |
Default status when a reply is added (default: 3 = Answered) |
Department routing:
The ticket's department is determined automatically by the To: address in the email — each department has a unique address configured in settings.
B. Client Portal
The logged-in client fills out the ticket form in their portal:
- Subject + description
- Department (dropdown)
- Priority (if selection is permitted)
- Attachments
C. Manual by Agent
From /admin/tickets → Add Ticket — the agent fills in all fields including the associated client.
2. Spam Filtering
Where: /admin/spam_filters/view/tickets
Before the ticket is created from email, the system checks three types of filters:
| Filter type | Field checked | Examples |
|---|---|---|
sender |
Sender email address | spam@domain.com |
subject |
Email subject | *promotional*, *unsubscribe* |
phrase |
Message content | Spam keywords |
Automatically blocked subjects (hardcoded in pipe.php):
Mail delivery failedfailure noticeReturned mailUndelivered Mail
If a filter is active and matches → the email is ignored (no ticket is created).
3. Ticket Structure
Key fields (tbltickets):
| Field | Notes |
|---|---|
ticketid |
Unique ID |
subject |
Issue title |
message |
Initial description |
status |
FK → tbltickets_status (user-configurable) |
priority |
FK → tbltickets_priorities |
department |
FK → tbldepartments |
userid / contactid |
Associated client |
email / name |
External sender (if not a registered client) |
admin |
Assigned staff member |
service |
Service category (optional) |
lastreply |
Timestamp of last reply — for informal SLA measurement |
adminread / clientread |
Read/unread flags for each party |
Statuses: Fully configurable from /admin/tickets/statuses. Common examples:
| Typical status | Description |
|---|---|
| New | New ticket, unassigned |
| In Progress | Being worked on by an agent |
| Answered | Agent has replied — awaiting client |
| On Hold | Suspended (waiting for external information) |
| Closed | Resolved and closed |
| Spam | Manually marked as spam |
Priorities: /admin/tickets/priorities
| Value | Priority |
|---|---|
0 |
Low |
1 |
Medium |
2 |
High |
3 |
Urgent |
4. Ticket Management — Replies and Escalation
Adding an agent reply
Where: From the open ticket → reply field
- The agent writes the reply or selects a Predefined Reply from the library
- Can attach files
- Selects the status after sending (e.g. Answered, On Hold)
- The client automatically receives the email with the reply
Predefined reply (/admin/tickets/predefined_replies):
A library of standard replies for common situations — agents insert them with a single click, saving time and ensuring communication consistency.
Client reply (from email)
The client replies to the received email → pipe.php identifies [Ticket ID: X] in the subject → automatically added as a reply to the ticket → agent notification.
Client reply (from portal)
The client enters the portal → views the ticket → adds a reply → agent notification.
Escalation
There is no automatic SLA, but the agent can:
- Change the priority (Low → Urgent)
- Change the department (re-route)
- Change the assigned agent
- Add an internal note (visible to staff only, not to the client)
5. Closing and Leveraging the Ticket
Marking as Closed
The agent changes the status → Closed. The client receives a closure notification.
Creating a Knowledge Base Article
If the solution found is valuable for other users → Add to Knowledge Base button from the resolved ticket.
Where it is published: /admin/knowledge_base — articles are indexed and searchable by all users or portal clients (per visibility configuration).
Satisfaction Survey (optional)
When the ticket is closed → automatic trigger via Workflow Automation → survey sent to the client (from the Surveys module).
Example automation:
Trigger: Ticket status → Closed
Wait: 1 hour
Action: Send "Support Satisfaction" survey to client's email
What Is Created Automatically
| Event | Created automatically |
|---|---|
| Email received at department address | New ticket with department, priority, and client detected automatically |
Email with [Ticket ID: X] in subject |
Reply added to the existing ticket |
| Agent reply sent | Client notification email with reply content |
| Client reply received | Agent notification; lastreply updated; adminread = 0 |
| Ticket closed | Client notification; optional survey trigger |
Recommended Initial Configuration
Before activating email pipe, configure:
- Departments —
/admin/tickets/services— including a dedicated email address per department - Statuses —
/admin/tickets/statuses— with distinctive colors - Priorities —
/admin/tickets/priorities - Predefined Replies —
/admin/tickets/predefined_replies— top 10-20 common situations - Spam Filters —
/admin/spam_filters/view/tickets— known addresses and phrases - Email pipe — configure forwarding on the mail server to
pipe.php
Points Where the Flow Can Block
| Problem | Likely cause | Solution |
|---|---|---|
| Emails do not create tickets | Pipe.php not connected or CRON inactive | Check email forwarding + CRON job for pipe |
| New ticket goes to wrong department | To: address does not match any department |
Update email addresses in /admin/departments |
| Client receives email loop | Department address = CRM reply address | Verify that sending and receiving addresses are different |
| External replies do not attach to ticket | [Ticket ID: X] removed from subject by email client |
Instruct clients to keep the subject; or enable matching by sender email |
| Too many spam tickets | Spam filters not configured | Add senders and phrases in /admin/spam_filters |
| Agent cannot see ticket | Ticket is in a different department without access | Check department permissions in the agent's role |
Relevant Reports
- Knowledge Base Report —
/admin/reports/knowledge_base_articles— articles by views - Ticket Audit —
/admin/utilities/pipe_log— pipe.php log with all processed emails - Ticket Statistics — volume by department, priority, status, response time