Slack alerts for new ConnectWise PSA service tickets
Catch new service tickets before they go cold. Every 15 minutes, your dispatch team gets a triaged Slack message for each new ConnectWise PSA ticket.
Build me an agent workflow that triages new service tickets from ConnectWise PSA into a Slack dispatch channel every 15 minutes during business hours, so a dispatcher can pick up a ticket in one click without combing the queue.
Trigger: a cron schedule that fires every 15 minutes between 7am and 7pm in my local timezone, on weekdays only. Skip evenings and weekends.
On each run, the agent should do the following using ConnectWise PSA and Slack Bot.
1. Pull fresh tickets from ConnectWise PSA with List Service Tickets. Use a conditions filter that returns tickets where dateEntered is within the last 20 minutes (a small overlap so we never miss anything during clock skew) and the status name is one of New, Reopened, or Needs Attention. Scope to the service board IDs I configure.
2. For each ticket, call Get Service Ticket to pull the full record (summary, initial description, board, status, priority, owner, contact, agreement) and Get Company on the linked company to pull the customer name and any agreement metadata.
3. Skip any ticket that already has an owner assigned, and skip any ticket whose ID is less than or equal to the highest ticket ID the workflow has already alerted on in a previous run.
4. Write a one or two sentence plain-English summary of what the customer is reporting, based on the ticket summary and initial description. Strip signatures and email quoting.
5. Infer a recommended priority of P1 through P4 from urgency keywords in the summary ("down", "outage", "production", "cannot", "urgent"), the SLA tier on the linked agreement (if present), and a configurable list of tier-1 customers that should always be P1 or P2.
6. Suggest a likely queue or owner based on the board, the customer, and keywords in the summary (for example, route anything mentioning Microsoft 365 or Exchange to the M365 queue).
7. Post one Slack message per ticket to the dispatch channel I name. The message should include the ticket number, customer name, the one-line summary, the recommended priority (with an emoji prefix like :rotating_light: for P1 and :large_yellow_circle: for P3), the suggested owner or queue, and a clickable deep link back to the ticket in ConnectWise of the form https://{siteUrl}/v4_6_release/services/system_io/router/openrecord.rails?locale=en_US&recordType=ServiceFV&recid={ticketId}. Use Slack thread replies for follow-up updates so each ticket stays in its own thread.
State to remember between runs: track the highest ticket ID already posted and the cutoff timestamp of the last successful scan. Use that on the next run to deduplicate, even if a status flips back and forth. If a run fails partway, do not advance the cutoff so the next run replays the missed window.
Configuration I should be able to edit without rewriting the agent:
- The service board IDs to watch.
- The Slack channel for alerts.
- The cron window (default every 15 minutes, 7am to 7pm, weekdays).
- The statuses that count as "new" (default New and Reopened).
- The tier-1 customer list and urgency keyword list used by the priority inference.
Additional information
What does this prompt do?
- Watches the ConnectWise PSA service boards you choose every 15 minutes during business hours for new or reopened tickets.
- Writes a one or two sentence plain-English summary of each ticket so dispatchers can decide without opening ConnectWise.
- Suggests a priority from P1 to P4 based on the wording, the customer's SLA agreement, and any tier-1 client list you configure.
- Posts a single Slack card per ticket with the ticket number, customer, summary, suggested priority, and a one-click deep link back to the ticket.
What do I need to use this?
- A ConnectWise PSA login with API access (Site URL, Company ID, Public Key, Private Key, and a Client ID from the ConnectWise Developer Network).
- A Slack workspace and a channel for your dispatch team.
- The service boards you want watched and the statuses that count as a fresh ticket (typically New and Reopened).
- Optional: a short list of tier-1 customers that should always escalate to P1 or P2.
How can I customize it?
- Change which service boards, statuses, or business hours the agent watches.
- Tighten or loosen the scan frequency (every 15 minutes is a good default for a busy MSP dispatch desk).
- Add tier-1 customers that should always escalate, or urgency keywords specific to your stack.
- Pick a different Slack channel, or split alerts across multiple channels so each board posts to its own queue.
Frequently asked questions
Will this double-post a ticket if its status changes again later?
What happens to tickets that already have an owner assigned?
How does the recommended priority work?
Will my dispatchers get pinged at 3am?
Can I send these alerts to Microsoft Teams instead?
Stop missing new service tickets in ConnectWise.
Connect ConnectWise PSA and Slack once, and Geni triages every new ticket into your dispatch channel for you.