Auto-triage new ConnectWise PSA tickets and post a Teams digest
Every 15 minutes, classify each new ConnectWise PSA ticket, tag urgency, leave an internal note for the technician, and post a digest to Microsoft Teams.
Build me an agent workflow that auto-triages new ConnectWise PSA service tickets before a human dispatcher touches them, then posts a single rolled-up recap to a Microsoft Teams channel. The goal is to do the classification grunt work, not to replace the dispatcher: never auto-close, never auto-assign an owner, never move boards on its own.
Trigger: cron, every 15 minutes. ConnectWise PSA is not a poll provider, so use a cron schedule plus a filtered list call as the trigger pattern (same approach as our existing ConnectWise + Slack alerts prompt).
On each run, use ConnectWise PSA List Service Tickets with a conditions filter to pull tickets that were created in roughly the last 20 minutes (a little wider than the cron interval so nothing slips between runs) AND are still on the intake board / default queue AND are still in a 'New' style status with no owner. I should be able to set the board name, the new-status names, and the lookback window as workflow inputs. If the board ID is not known up front, fall back to List Service Boards / List Board Statuses to resolve the right IDs.
For every matched ticket the agent should:
1. Read the summary and the initial description (the first ticket note / detail description).
2. Classify urgency as Critical, High, Medium, or Low using concrete language signals. Critical = outage / down / can't access / production / business stopped / VIP company / many users affected. High = single named system unavailable, security-sounding language, named exec. Medium = single user, intermittent, normal service request. Low = how-to, password reset on a non-VIP, cosmetic. Treat VIP company names and a configurable list of critical systems (email, ERP, line-of-business app, etc.) as boosters.
3. Infer ticket type (incident vs request) from the same signals: outage / broken / not working / error = incident; please add / new user / change / how do I = request.
4. Suggest a candidate board / team based on keyword cues (network, email, M365, security, hardware, etc.) but ONLY surface this in the internal note. Do not actually move the ticket.
Write-back to ConnectWise PSA, in this order, per ticket:
a. Update Service Ticket via JSON Patch to set /priority/id to the priority that matches the classified urgency. Resolve priority IDs at the start of the run (the user should be able to map Critical/High/Medium/Low to their own ConnectWise priority records as workflow inputs).
b. Add Note to Service Ticket with internalAnalysisFlag=true (internal only, the customer must never see it). Note body should be short and structured: classified urgency, ticket type guess, suggested board/team, the keyword signals it matched on, and a one-line 'why' summary. Sign the note with a fixed marker like 'Auto-triage by Geni' so we can detect it later.
Idempotency: before doing ANY write on a ticket, fetch its notes and check for an existing internal note that contains the 'Auto-triage by Geni' marker. If one exists, skip the ticket entirely. Never write twice on the same ticket. If a write fails partway (priority succeeds but note fails, or vice versa), log it and move on, do not retry the priority change.
After all tickets in the batch are processed, post ONE rolled-up Microsoft Teams message via Create Channel Message to a configurable team + channel (the dispatch channel). Format:
Header line: 'Triage recap — X tickets classified at <time>'.
Then a Critical section (only if any), then High, then a single combined Medium/Low count. Each line: ticket #, company, one-line summary, classified urgency, and a direct deep link to the ticket in ConnectWise (https://{siteUrl}/v4_6_release/services/system_io/router/openrecord.rails?locale=en_US&recordType=ServiceFV&recid={ticketId}).
If zero new tickets were triaged this run, do NOT post anything to Teams. Silent runs are fine, dispatch does not need a 'nothing happened' ping every 15 minutes.
Workflow inputs I should be able to set when configuring this: ConnectWise intake board name(s), 'new' status names that count as untriaged, priority ID mapping for Critical/High/Medium/Low, VIP company list, critical systems list, Teams team + channel, and cron interval.
Hard constraints, please respect all of them: never call Update Service Ticket for status, owner, or board; only /priority/id. Internal notes must be internalAnalysisFlag=true so customers do not see them. Skip anything older than the lookback window even if it matches the other filters, so a backlog import does not get auto-triaged. Be conservative on classification, default to Medium when the description is ambiguous, and say so in the note.
Additional information
What does this prompt do?
- Watches your ConnectWise PSA intake queue every 15 minutes for newly created tickets that no dispatcher has touched yet.
- Reads the summary and description, picks an urgency of Critical, High, Medium or Low, and decides whether it looks like an incident or a request.
- Updates the ticket's priority and leaves a short internal note explaining how it made the call, so the on-call technician sees the reasoning the moment they open it.
- Posts a single tidy recap to a Microsoft Teams channel with the most urgent tickets called out at the top and a direct link to each one.
What do I need to use this?
- A ConnectWise PSA login with permission to read service tickets, update their priority, and add internal notes.
- A Microsoft Teams account with access to the channel where you want the triage recap to land.
- An idea of which board or queue holds your raw intake tickets, and the name of the Teams channel your dispatchers watch.
How can I customize it?
- Change how often it runs. Fifteen minutes is the default, but you can stretch it to every hour for slower shops or tighten it to every five minutes during business hours.
- Tune the urgency rules. Swap in your own keywords for what counts as Critical or High, name your VIP companies, or call out specific systems like email, ERP, or line-of-business apps.
- Point it at a different Teams channel, or send separate recaps for Critical tickets and everything else so on-call and dispatch see only what they need.
Frequently asked questions
Will the agent assign tickets or close them automatically?
Will it triage the same ticket twice?
What if the description is too vague to classify?
Can I use Slack instead of Microsoft Teams?
Does this work with on-premise ConnectWise PSA?
Stop hand-sorting every new ticket before your day starts.
Connect ConnectWise PSA and Microsoft Teams once, and Geni triages your intake queue every 15 minutes so dispatch only sees what already has a recommendation.