---
title: Support Departments
description: "Departments are how RackHelm decides which tickets an agent sees. They are the routing target for the client portal, the contact form and every inbound mailbox, and they are also the visibility boundary — an agent's queue is the union…"
url: "https://rackhelm.com/documentation/support-departments/"
updated: "2026-09-24"
category: Support Desk
---

# Support Departments

Departments are how RackHelm decides which tickets an agent sees. They are the routing target for the client portal, the contact form and every inbound mailbox, and they are also the visibility boundary — an agent's queue is the union of their departments' tickets, anything assigned to them personally, and anything that has no department at all. Get these right before you invite staff. This article is for whoever structures the desk.

## Before you start

> **Note:** **Support → Departments** requires the `manage_departments` permission. The built-in Support Agent role holds `view_departments` but not `manage_departments`, so agents cannot restructure the desk. See [Roles & Permissions](/docs/roles-and-permissions/).

> **Note:** A fresh install seeds three departments — **Technical**, **General** and **Billing**. Rename or replace them to suit your desk, but keep at least one: the customer ticket form, the guest contact form and every email route all require a department and cannot be submitted or saved without one.

## Creating a department

1. Open **Support → Departments**.
2. Press **New department**.
3. Enter a **Department name** — for example "Technical Support", "Billing" or "Sales". Names must be unique and at most 255 characters.
4. Press **Create department**, then open the editor to add staff and roles.

![The Departments list with columns for department name, staff count, roles count and open tickets, plus edit and delete buttons](/wp-content/uploads/rackhelm-docs/support-departments-index.png)
The Departments list. The **Open tickets** column counts everything not closed and not awaiting guest verification.

The name is the only editable property. Everything else about a department is who handles it.

## Staffing a department

Open a department with **Edit**. There are two independent ways to put people in it, and the editor shows the combined result as the **effective handlers** badge at the top.

![The department editor with the name field at the top, a Staff members card on the left and an Assigned roles card on the right](/wp-content/uploads/rackhelm-docs/support-department-edit.png)
Direct members on the left, roles on the right. People added by a role are listed as "via role".

### Direct staff assignment

Pick a person under **Assign a member** and press **Add**. They appear under **Directly assigned** and can be removed individually.

> **Note:** Only accounts holding a role flagged as a staff role can be assigned. Trying to add anyone else returns "User must have a Staff Role (is_staff=true) to be assigned to a department." Adding someone twice returns "User is already assigned to this department." and changes nothing.

### Role assignment

Pick a role under **Assign a role** and press **Add**. Everyone holding that role handles the department automatically, now and in the future — which is what you want for "every Support Agent covers Technical Support". Only roles flagged as staff roles can be assigned; anything else returns "Only roles marked as "Is Staff" can be assigned to departments."

> **Tip:** Use roles for the standing structure and direct assignment for exceptions — a billing specialist who also covers domains, say. New hires then inherit the right queues the moment you give them their role.

## How departments route tickets

| Source | How the department is chosen |
| --- | --- |
| Client portal ticket | The customer picks it from a dropdown listing every department. |
| Guest contact form | The visitor picks it from the same list. |
| Inbound email | Fixed per mailbox — set on the email route, along with the priority new tickets get. See [Email routing and IMAP piping](/docs/email-routing-imap-piping/). Mail that fails sender authentication is quarantined into the same department. |
| Opened by the portal itself | **Support → Ticket Settings → Department for automatic tickets**. Covers suspension notices, failed domain renewals and add-on setup requests. Defaults to **— No department —**. |
| Moved by staff | The **Department** field on the ticket, or the **Change department** bulk action. |

> **Warning:** Every department is offered to customers on both public forms. There is no "internal only" flag, so do not create a department you do not want visitors selecting — route internal work through an existing queue instead.

## Tickets with no department

A ticket can legitimately have no department. The portal's own tickets land that way until you pick a **Department for automatic tickets** in [Ticket settings](/docs/ticket-settings/), and a ticket keeps a department id that no longer matches any department if that department was removed out of band.

Such a ticket is visible to *every* staff member, and may stay unassigned. That is deliberate. The alternative — hiding it from everyone except Super Admin and the direct assignee — meant a suspension notice could sit unanswered because nobody could see it. The listing scope and the per-ticket policy both apply the same rule, so what an agent sees in the queue and what they may open never diverge.

> **Note:** "No department" and "a department id that matches nothing" are treated identically. Before the automatic-ticket department existed, those tickets were written with a hardcoded id of `1`; department keys are UUIDs and `tickets.department_id` carries no foreign key, so that id never matched anything. Those old tickets now surface for all staff rather than staying invisible.

> **Warning:** Filing a ticket into a department is one-way from the ticket screen. Once a ticket has a department, the **Department** field becomes required and the **— No department —** option is no longer offered. Decide where automatic tickets belong before you move a batch of them.

## Moving a ticket between departments

Change **Department** on the ticket and press **Update details**, or use the bulk action for several at once. Both write *Department changed from 'X' to 'Y'.* to the ticket's activity log; a ticket that had no department reads *from 'Unknown'*, because there is no record to name.

> **Note:** Moving a ticket out of your own departments removes it from your queue immediately, unless it is assigned to you personally. That is the intended behaviour of a hand-off, but it does mean you can lose sight of a ticket you have moved. A bulk action that silently skipped tickets outside your departments says so — it reports "… skipped (outside your departments or beyond your permissions)."

## Deleting a department

Deleting is deliberately restricted. A department that still owns tickets cannot be deleted: the delete button on the list is disabled and tells you how many tickets are in the way, and the server refuses the request with "Cannot delete "Billing" — 42 tickets are still assigned to it. Reassign or close them first."

> **Warning:** The guard exists because departments are not soft-deleted and a ticket's department link has no cascade. Without it, deleting a busy department would leave its tickets pointing at a department that no longer exists. They would not vanish — a ticket with no usable department is visible to every staff member — but they would drop out of every department filter and every departmental queue at once, landing in front of all of your staff with no owner. Always move the tickets first.

To retire a department properly:

1. Filter the queue and bulk-move the department's open tickets to their new home.
2. Deal with closed tickets the same way — the delete guard counts them too.
3. Repoint any email route that targets the department.
4. Repoint **Ticket Settings → Department for automatic tickets** if it names this one. If you delete it anyway, RackHelm logs "The department chosen for automatic tickets (…) no longer exists; filing the ticket with no department." and files future automatic tickets with no department rather than writing a dangling id.
5. Delete the department once the list shows no tickets against it.

## Troubleshooting

| Symptom | Cause and fix |
| --- | --- |
| An agent sees an empty queue | They belong to no department and have nothing assigned. Add them directly, or assign their role to the department. |
| Every agent suddenly sees the same suspension and failed-renewal tickets | Those are automatic tickets filed with no department, which is what **— No department —** means. Pick a department in Ticket settings to narrow them. |
| A person is missing from the **Assign a member** list | Their role is not flagged as a staff role. |
| A role is missing from the **Assign a role** list | Same reason — the list only offers staff roles. |
| The delete button is greyed out | Tickets are still assigned to the department. Hover it for the count. |
| Tickets arrive in the wrong department | For email, check the route's **Department**. For portal and guest tickets, the customer chose it — rename the departments so the intent is obvious. For suspension, renewal and add-on setup tickets, check Ticket settings. |
| A ticket cannot be moved back to "no department" | Expected — the field is required once a department is set. Move it to a holding department instead. |
| Renaming a department fails | Names are unique; another department already uses it. |
