User Support

Ticket system for communicating with users

Tickets

Tickets are managed in the admin panel by navigating to Support > Tickets, which needs the Manage tickets permission. Users create tickets on your site with the Ticket Submit component, and staff cannot create them in the admin panel. Dates on these pages follow each administrator's timezone.

The plugin adds these pages to the admin panel.

Page Address
Tickets responsiv/support/tickets
Ticket responsiv/support/tickets/preview/:id
Edit message responsiv/support/messages/update/:id
Ticket types responsiv/support/tickettypes, see Ticket Types

Ticket List

The ticket list shows the number of open and closed tickets above the list. The Tickets item of the Support side menu also shows a badge with the number of open tickets.

Each row shows the ticket ID, subject, user, assignee, status, type, created date and who responded last. The Closed date column is hidden by default and can be shown with the list setup button.

  • New tickets are highlighted.
  • The subject shows how many user replies you have not read, and the count clears when you open the ticket. Tickets in the Processing status with unread replies are highlighted too.
  • Closed tickets are grayed out.

Use the Ticket Status and Assignee filters to narrow the list, and the search box to find tickets by ID or subject. Click Refresh to reload the list and the counts.

Bulk Actions

Check one or more tickets to enable the bulk action buttons. They stay disabled until a ticket is checked.

Action Description
Assign selected to... Assigns the tickets to a support member and moves them to Processing. Closed tickets are skipped. The new assignee receives the ticket-assigned mail, unless you assigned the tickets to yourself.
Close selected Closes the tickets. Each user receives the closed-by-staff mail.
Delete selected Deletes the tickets with their messages. This needs the Delete tickets permission, and the button is hidden without it.

Ticket Page

Click a ticket to open it. The top of the page shows the ticket ID and when it was created, the status and when it was set, the user with a link to their account, and the assignee and when they were assigned. For a closed ticket, it also shows who closed it and when. Below them are the subject and type, the original message and the conversation, where internal messages have their own style.

The page checks for new messages every 15 seconds while its browser tab is visible, and adds them to the conversation. Opening the page clears your unread count for the ticket.

These buttons are found in the toolbar of an open ticket.

Button Description
Assign to... Assigns the ticket to a support member and moves it to Processing. The new assignee receives the ticket-assigned mail, unless you assigned the ticket to yourself.
Reply Opens the reply panel to post a public reply.
Post internal message Opens the reply panel to post an internal message.
Close ticket Closes the ticket. The user receives the closed-by-staff mail.
Delete Deletes the ticket with its messages. This needs the Delete tickets permission.

On a closed ticket, the toolbar shows Reopen ticket in place of the assign, reply and close buttons. See Closed Tickets.

Replying

The reply panel below the conversation has two tabs. Both accept Markdown and attachments, and the message is required and can be at most 50,000 characters. Click Submit reply, or press Ctrl+Enter (Cmd+Enter on a Mac), and confirm to post it.

  • Reply posts a public reply that the user sees. The user receives the new-staff-message mail and the ticket moves to Processing. When the ticket has no assignee, it is assigned to you.
  • Post internal message posts a note that only staff see. The Notify Users list shows the other support members, and only the members you tick receive the new-internal-message mail. An internal message does not change the status or the assignee.

Editing Messages

Each message in the conversation has an Edit link, which opens the Edit message page. It edits the text and attachments of any message, including user replies and internal messages, and returns to the message in the ticket when you save. Editing a message here sends no mail. The Delete button on this page removes the message, and needs the Delete tickets permission.

The original message has no Edit link. Only the user can edit it, with the Ticket Update component.

Ticket Status

Every ticket has one of the following statuses.

Status Description
New The ticket was submitted and staff have not assigned it or replied to it yet. A ticket that its ticket type assigns automatically also starts in this status.
Processing Staff are working on the ticket. A ticket moves to this status when it is assigned, when staff post a public reply, and when it is reopened.
Closed The ticket was closed by the user, by staff or automatically by the system.

User replies and internal messages do not change the status. Each status change and assignment is recorded, which gives the dates shown on the ticket page.

Closed Tickets

A ticket is closed when its closed_at date is set. It can be closed in three ways.

  • The user clicks Close ticket on the Ticket component, and staff receive the closed-by-user mail.
  • Staff close it from the ticket list or the ticket page, and the user receives the closed-by-staff mail.
  • The system closes it when it has expired, and the user receives the closed-by-system mail.

While a ticket is closed, the user cannot reply to it, edit it or change its attachments, and the default component markup hides the reply form, the Close ticket button and the Edit links. Staff cannot reply to it or assign it, but can still edit and delete its messages on the Edit message page.

Users cannot reopen a ticket. Staff reopen it by clicking Reopen ticket on the ticket page, which moves the ticket to Processing and sends no mail.

Closing Expired Tickets

A ticket expires when the user does not respond to a staff reply. The plugin registers a scheduled task that runs the support worker every five minutes. Each run closes at most one expired ticket, the one with the lowest ID, and its user receives the closed-by-system mail. The ticket page then shows the ticket as closed by System (expired).

A ticket has expired when all of these are true.

  1. It is open and has the Processing status.
  2. Its latest public message is a staff reply older than expireInterval days. Internal messages do not count.
  3. It was not reopened within the last expireInterval days.

The interval is 7 days by default. To change it, or to turn automatic closing off, see Configuration. Another plugin can also keep some tickets open, see Extending.

The scheduled task needs the scheduler's cron entry on the server. See Setting Up the Scheduler. Without that entry, run the worker from a cron job of your own every few minutes.

php artisan support:run

The command runs the worker once and prints what it did, for example the following.

Closed ticket "Cannot sign in" due to inactivity for 7 days.

When no ticket has expired, it prints "There are no outstanding activities to perform."

Permissions

The permissions are found on the Support tab when editing an administrator or a role. The Support menu appears for administrators who have any of them.

Permission Code Description
Manage tickets responsiv.support.manage_tickets Access the ticket list, the ticket page and the Edit message page.
Manage ticket types responsiv.support.manage_ticket_types Access the Ticket types page.
Delete tickets responsiv.support.delete_tickets Delete tickets, from the list or the ticket page, and delete single messages.

Support Staff

By default, every administrator is support staff. To limit this, create an administrator group with the code support-members.

  1. Select Team > Team Groups from the settings menu and click New Group.
  2. Enter the name Support members and the code support-members. Turn on Default group to also add every existing administrator, and new administrators from then on.
  3. Click Create, then change the members on the group's Users tab.

Once the group exists, only its members count as support staff, even when it has no members. Support staff:

  • receive the staff mail about tickets that have no assignee, see Mail Templates;
  • appear in the Assign selected to... and Assign to... menus;
  • are listed under Notify Users when posting an internal message;
  • have unread reply counts in the ticket list.

The group does not grant access to the Support pages. Its members also need the permissions above.

User Accounts

Each ticket belongs to a RainLab.User account. The plugin listens to the rainlab.user.mergeUser event, which RainLab.User 3.5 and later fires when two accounts are merged, and moves the tickets of the merged account to the remaining account.

Deleting a user or an administrator does not delete their tickets or messages. The default component markup, the staff mail templates and the admin panel show Deleted user in place of a name that no longer exists, and mail to the user is skipped when the account is gone.