Skip to content

Recycle bin

Enterprise feature (new in 1.19.4, helpdesk). See the Helpdesk overview.

From 1.19.4, deleting a ticket no longer removes it at once. It moves to the recycle bin, where it can be restored, exactly as it was, for 30 days. After that a daily sweep deletes it for good. Deleting a ticket for good before then is a separate capability, Delete for good, which only Admins hold out of the box.

Two desk capabilities in the Tickets section of Desk settings → Roles:

Capability Hint Out of the box
Delete tickets (marked Changed) “Move their teams’ tickets to the recycle bin, one at a time or in bulk, and restore them within 30 days” Admin
Delete for good (marked New) “Empty tickets from the recycle bin before their 30 days are up” Admin

Both are per team, like the other ticket capabilities: they apply in the teams you belong to, or in every team with See every team’s tickets. You also need to work the ticket.

Upgrading from 1.19.3: anyone who could delete a ticket before could delete it for good. Now Delete tickets moves it to the bin, and only Admin, or a role you give Delete for good, can delete for good. A role you customised before 1.19.4 keeps Delete tickets as you set it, now with its new meaning, and never gains Delete for good.

  • One ticket: its … menu → Delete ticket….
  • Several: select them in the queue and use the bulk bar’s red bin button (Delete…, after Merge), up to 200 at a time.

Both open one dialog, which lists the tickets before it asks: “Move #1047 to the recycle bin?” or “Move 2 of 3 tickets to the recycle bin?”. “They leave every queue, view and report, and their requesters no longer see them. Nothing is sent to anyone.” Cancel is focused first.

Each ticket is checked on its own. A ticket that can’t go stays, shown greyed out with the reason:

Chip Why
Legal hold, stays “On legal hold. Take it off hold before deleting it.” A ticket on legal hold can’t be moved to the bin.
Not allowed “You can’t delete tickets in IT.” You don’t hold Delete tickets in its team.

The button counts what goes (“Move 2 to the recycle bin”), and the rest stay where they are.

After a delete, a toast says “#1047 moved to the recycle bin.” (or “2 tickets moved to the recycle bin. 1 stayed.”) with Undo, which restores them at once.

  • A workflow request’s open task tickets go with it, but only the ones you could delete yourself. The dialog says which: “Its task #1101 goes with it. Task #1102 stays open: you can’t delete tickets in HR.” A task that stays keeps its own queue.
  • An open major incident’s own ticket ends the incident (and its Status page incident) when it goes to the bin. Restoring the ticket doesn’t reopen the incident.
  • A timer running on the ticket stops and logs its time.
  • The ticket gets an agents-only line on its timeline, and any digest items about it not yet sent are dropped.

Nothing else changes: its status, owner, reply targets and history stay as they were.

While it is in the bin, a ticket is:

  • out of every queue, view, count, search and report, and the Claude connector’s tools;
  • gone for its requester: My requests, CC views, Get help and the customer portal answer as for a ticket that doesn’t exist;
  • out of the REST API, which answers 404; webhooks send ticket.deleted when it goes in and ticket.restored when it comes back, and nothing in between;
  • not a merge target, and left out when a recurring ticket looks for its last ticket and when an alert looks for an open ticket to add to;
  • quiet: nothing is sent about it, by email, bell, push or chat app. Reply targets are paused, and auto-close, reminders, workflow waits and assignment retries don’t act on it;
  • read-only for time: its logged time can’t be changed;
  • without downloads: its attachments can’t be downloaded until it is restored.

A live ticket that points to a binned one never names it: a task’s request reads “a deleted ticket”, and a ticket merged into one that is now in the bin says it was merged into a ticket that has since been deleted.

An email reply to a binned ticket opens a new ticket, as a reply to a closed one does. It never restores the binned ticket or adds to it, the new ticket doesn’t name it, and the quoted thread is left out. A customer portal customer’s reply becomes a new portal request they can see.

An agent who works the ticket can still open it by its link. It shows read-only under a red banner: “This ticket is in the recycle bin. Ana Kowalski deleted it today at 14:02. It’s deleted for good on 6 Dec unless it’s restored.” The ticket is dimmed, with no composer, status menu, side panel or … menu.

  • Restore is on the banner for people with Delete tickets in its team.
  • Place legal hold / Lift legal hold is on the banner for people with Helpdesk settings. A ticket put on hold while it is in the bin is never deleted for good: the banner then says “It’s on legal hold, so it stays until the hold is lifted.”

Everyone else, including requesters, CCs, approvers and the portal, gets the ordinary not-found page.

Recycle bin is a row in the desk’s Views, after the major incidents group, with its count. Only people with Delete tickets see it, and it lists the binned tickets of the teams they may delete in.

“Deleted tickets stay here for 30 days, then they’re deleted for good. Restoring puts a ticket back exactly as it was.”

  • Search deleted tickets, and Team: all to filter by team.
  • Each row shows the ticket, its team, Deleted by (a person, or a system rule such as Retention rule), when it was Deleted, and Deleted for good in (in amber at 3 days or fewer, or a note when a legal hold keeps it), with Restore.
  • Select rows for a bulk Restore and, with Delete for good, Delete for good….

An empty bin says “The recycle bin is empty. Tickets you delete wait here for 30 days, so you can restore them, before they’re deleted for good.”

Restore (on a row, in bulk, on the banner, or the toast’s Undo) puts the ticket back exactly as it was. Its last-updated time doesn’t change, so it sorts where it did. Restoring needs Delete tickets in the ticket’s team.

  • A request’s tasks that went with it come back with it, by the same rule. A task can’t be restored on its own while its request is in the bin: “Its request #1047 is in the recycle bin. Restore #1047 and its tasks come back with it.”
  • A workflow request’s run was held while it was binned (no task tickets, approvals or waits) and moves on straight away.

What resumes on restore:

  • Reply targets: a clock that was running is moved on by the time the ticket spent in the bin, as when a ticket comes back from Waiting, so the bin doesn’t count against the target. A target already missed stays missed. A ticket that was waiting or on hold keeps its pause.
  • Auto-close counts from when the ticket was solved, as before, so a solved ticket already past its auto-close days closes at the next nightly run.
  • Workflow waits and task due dates: one that came due while the ticket was binned fires at the next minute’s sweep.
  • Approval reminders, assignment retries and notifications carry on for whatever happens next.

Nothing missed while the ticket was binned is sent afterwards.

Delete for good… needs Delete for good in the ticket’s team. It asks first, and you type DELETE to confirm: “Its conversation, notes and attachments are removed now instead of after 30 days. The audit log keeps the number and subject. This cannot be undone.” A ticket on legal hold is refused (“On legal hold. It can’t be deleted for good.”).

Deleting for good removes the ticket, its conversation and its files, in the same way as the old delete. A task deleted for good counts as finished, so its workflow moves on; deleting a request for good deletes its workflow run with it.

Once a day, a sweep deletes for good every ticket that went into the bin more than 30 days ago (by the database’s clock), in batches, with its attachments and files. It skips any ticket put on legal hold while in the bin. Only one app instance runs it at a time, and it needs the helpdesk licence, like the other background work.

Retention’s Delete now moves old closed tickets to the recycle bin, shown as Deleted by Retention rule, and they are deleted for good 30 days later. Retention bins only the tickets its rule selected, never their open tasks. The confirmation reads Move old tickets to the recycle bin?.

A binned ticket is still held, so it is still in a person’s data export, and removing an account anonymises it as usual. Once deleted for good, the audit log keeps the ticket’s number and subject.

Action Shown as
helpdesk.ticket.binned Moved a ticket to the recycle bin
helpdesk.ticket.restored Restored a ticket from the recycle bin
helpdesk.ticket.purged Deleted a ticket for good
helpdesk.ticket.bulk_binned / .bulk_restored / .bulk_purged Moved tickets to / Restored tickets from the recycle bin / Deleted tickets for good (one entry per bulk request, besides each ticket’s own)
helpdesk.ticket.purged_by_sweep Emptied tickets past 30 days from the recycle bin
helpdesk.ticket.deleted_by_retention Moved old helpdesk tickets to the recycle bin (per retention run)

Each ticket’s entries keep “#1047 subject” as their label after it is deleted for good.

Symptom or message What to check
No Delete ticket… in the … menu, or no Delete… in the bulk bar You don’t hold Delete tickets.
No Recycle bin in Views The same.
“On legal hold. Take it off hold before deleting it.” Lift the legal hold first, if it should go.
“You can’t delete tickets in IT.” You don’t hold Delete tickets in that team.
No Delete for good… You don’t hold Delete for good.
“#1047 isn’t in the recycle bin” It was restored or deleted for good, or it belongs to a team you’re not in.
“It changed meanwhile (put on legal hold, or already deleted). Reload and try again.” Someone else acted on it at the same moment.
A requester says their request has gone It is in the bin. Restore it within 30 days.