# A morning triage console for your unassigned Freshdesk queue

> Clear the unassigned queue in one pass: see every waiting ticket, spot who is already buried, and set priority, group and owner without leaving the page.

- Workflow type: app
- Services: Freshdesk, Slack Bot
- Categories: Customer Support, Operations
- Published: 2026-08-24

## What it does

- Lists every unassigned or untouched open ticket oldest first, with the requester, subject, how long it has been waiting, its current priority and a preview of the first message
- Shows a sidebar of each agent's open ticket count and the group they sit in, so whoever is triaging can see who is already buried before handing out more work
- Lets you set priority, pick a group and assign an owner straight from the row, or tick several tickets and apply the same change to all of them at once
- A Triage these button sends a background assistant through the full thread of each selected ticket: it proposes a priority, a group and an owner with a one line reason, and leaves a drafted first reply as an internal note for the assigned agent to edit and send
- Highlights anything that has been sitting longer than your aging threshold, and sends the new owner a Slack direct message the moment a ticket is assigned

## What you'll need

- A Freshdesk account with permission to view and update tickets and to see your agents and groups
- A Slack workspace the app can send direct messages in
- Your support groups already set up in Freshdesk, so the routing choices match how your team actually splits work
- Agent email addresses that match their Slack accounts, so assignment notifications reach the right person

## Prompt

Build me a morning triage console my support team opens at the start of every shift to clear the unassigned Freshdesk queue in one pass. It is a working surface, not a report: everything a triager needs to route a ticket happens on this one screen.

The main view is the queue. Use Freshdesk Filter Tickets to pull open tickets that are either unassigned or have had no agent response yet, sorted oldest first. Each row shows the requester name and email, the subject, how long the ticket has been waiting since it was created, the current priority, the current group, and a short preview of the customer's first message. Pull the ticket body with View Ticket, or the first inbound entry from List Ticket Conversations, and truncate it to a couple of lines with the full text available on hover or in a side drawer. The age column is the anchor of the whole screen, so make it visually prominent.

Down the right side, show an agent load sidebar. Build it from List Agents and List Groups, and get each agent's current open ticket count by querying their open tickets with Filter Tickets. For every agent show their name, the group or groups they belong to, and their open ticket count, sorted with the busiest first. Anyone well above the team average gets a visual flag so the triager can see at a glance who is already buried before handing them more work. The sidebar is what makes this better than the native views: load and queue side by side.

From any row I can act without leaving the page. Give me an inline priority selector, a group picker populated from List Groups, and an owner picker populated from List Agents, each writing through Update Ticket and refreshing the row and the sidebar counts when it lands. I can also tick checkboxes on multiple rows, and a bulk action bar appears letting me apply the same priority or the same group to the whole selection through Bulk Update Tickets. That call runs asynchronously and returns a job to poll, so show a pending state on the affected rows and refresh them once the job finishes.

Add a Triage these button that acts on the selected rows and kicks off a background agent. For each selected ticket the agent reads the full thread with List Ticket Conversations, considers the subject matter against the group list and the current per-agent open ticket counts, and produces a proposal: a priority, a group, an owner, and a one line reason explaining the choice, for example that it is a billing question and that this agent has the lightest load in the billing group. It also drafts a suggested first reply to the customer and posts that draft to the ticket as an internal private note using Add Note to Ticket, marked private so only agents can see it, addressed to whoever ends up owning the ticket. The agent must never send a public reply to the customer and must never post a customer-visible conversation entry.

Every agent output is a proposal until a human accepts it. Proposals come back into the app and render on the matching row as a suggestion chip showing the proposed priority, group and owner plus the one line reason, with Apply and Dismiss buttons. Only when someone clicks Apply do you write the change through Update Ticket. Dismiss clears the suggestion and leaves the ticket untouched. While the background agent is running, show per-ticket progress so the triager knows which rows are still being worked on, and keep the rest of the console usable.

Whenever a ticket gets an owner, whether from the inline picker, a bulk update or an applied suggestion, notify the new owner in Slack. Match the Freshdesk agent's email to their Slack account with the Slack Bot Look Up User by Email operation, open a direct message with Open a Conversation, and send the message with the Slack Bot Send a Message operation. The message includes the ticket subject, the requester, the priority it was set to, how long it has been waiting, and a direct link to the ticket in Freshdesk built from the account subdomain. If no matching Slack user is found, still complete the assignment and flag the missing notification on the row rather than failing the whole action.

Bake in the rules that make it usable every morning. An aging threshold, default four hours and editable in a settings panel, highlights anything waiting longer than that, with a stronger treatment for tickets past double the threshold. A group filter at the top of the queue narrows everything to one team's work. Persist the threshold and the last selected group filter per viewer so each triager gets their own view back when they reopen the app. Show a small header summary of how many tickets are waiting, how many are past the threshold, and how many have been routed in this session.

## How to customize

- Change the aging threshold so tickets go amber and red at whatever wait time your team treats as late
- Change what lands in the queue: unassigned only, or every open ticket with no agent reply yet, and filter down to a single group
- Adjust the drafted reply, from tone and length to turning drafting off entirely so the assistant only proposes routing
- Send the assignment notification to a shared channel instead of a direct message, or switch it off

## FAQ

### Will the assistant ever reply to a customer on its own?

No. Anything it drafts is saved as an internal note on the ticket, which only your agents can see. The assigned agent edits it and sends it themselves, so nothing reaches the customer without a person deciding to send it.

### Does it reassign or reprioritise tickets by itself?

No. Every suggestion stays a proposal sitting next to the ticket until someone clicks apply. The queue only changes when a human says so.

### How does it know which agents are already busy?

It counts each agent's open tickets directly from your helpdesk and shows the totals in a sidebar next to the queue, so you can see at a glance who has capacity and who does not.

### What happens if an agent is not in our Slack workspace?

The assignment still goes through in Freshdesk. The app just skips the notification for that person and flags it on the row so you know to tell them another way.

### Can we run it with several support groups?

Yes. The sidebar shows which group each agent belongs to, and you can filter the queue to a single group so each team only triages its own work.

### How many tickets can we triage at once?

You can select as many rows as you want to review, and bulk priority or group changes are applied in batches behind the scenes. The background assistant works through your selection one ticket at a time and reports progress as it goes.

Use this prompt in General Input: https://www.generalinput.com/prompts/a-morning-triage-console-for-your-unassigned-freshdesk-queue