Weekly ConnectWise PSA renewal radar in Slack

Every Monday at 7am, get a Slack digest of ConnectWise PSA agreements expiring in the next 60 days, with renewal call holds dropped on each account owner's calendar.

Agentic Task
ConnectWise PSA (Manage)Google CalendarSlackSalesCustomer SupportDaily DigestsNotifications & AlertsAI Reports
PromptCreate

Every Monday at 7am in my local time zone, I want an agent that surfaces ConnectWise PSA service agreements coming up for renewal so my team can start the renewal motion before customers go cold. Build this as an agent-based workflow on a weekly cron trigger.

Step 1: Pull upcoming renewals from ConnectWise PSA. Use ConnectWise PSA's List Agreements to find every active service agreement whose end date falls inside the next 60 days. Skip any agreement that is flagged to auto-renew without intervention (the agent should ask me at setup how that flag is represented on my agreements, for example a custom field, a workflow tag, or a specific agreement type name).

Step 2: For each remaining agreement, gauge customer support health. Use ConnectWise PSA's List Service Tickets filtered to that agreement's company over the last 90 days. From those tickets, summarize: total ticket volume, how many are currently open, and how many were escalated or marked high priority. Use that to give a one-line risk read of healthy, watch, or at-risk. If you can't tell, default to watch.

Step 3: Write a short renewal brief per agreement. Each brief should include the customer name, the agreement type and recurring value, days until expiration, the support-load summary from step 2, and the one-line risk read.

Step 4: Hold time on the account owner's calendar. For each agreement, use Google Calendar Create Event to put a 30-minute renewal call hold on the calendar 14 business days before the agreement's end date. Title it "Renewal call: {customer name}" and put the renewal brief from step 3 into the event description so the owner has everything in one place when they open the invite. The attendee is the account owner pulled from the agreement (ask me at setup how to map ConnectWise PSA account owners to email addresses if it's not obvious).

Step 5: Post one consolidated digest to Slack. Use Slack Send a Message to post into a #renewals channel (let me confirm the channel at setup). The digest should list every upcoming renewal grouped by risk level, at-risk first, then watch, then healthy. For each agreement show the customer name, agreement value, days until expiration, ticket-volume summary, and the date of the renewal call hold that was just placed. Keep it one message, not one per agreement.

Defaults I want you to confirm with me at setup before the first run: the 60-day look-ahead window, the 14-business-day calendar offset, the Slack channel name, the Google Calendar that should hold the renewal calls, my time zone, and how auto-renewing agreements are flagged in my ConnectWise PSA so we skip them correctly.

If a week has no agreements in the window, still post a one-line Slack message saying so, so the team knows the workflow ran and the pipeline is clear.

Additional information

What does this prompt do?
  • Pulls every ConnectWise PSA service agreement expiring in the next 60 days, with the customer name, agreement type, value, and days until expiration.
  • Sizes up support health for each customer by reading the last 90 days of tickets (volume, open count, escalations) and writing a short risk read of healthy, watch, or at-risk.
  • Drops a renewal call hold on each account owner's Google Calendar 14 business days before the agreement ends, so the conversation happens before the customer is in renewal limbo.
  • Posts one consolidated Monday morning digest to your #renewals Slack channel, grouped by risk level so the team works the at-risk accounts first.
What do I need to use this?
  • A ConnectWise PSA login with permission to read agreements and service tickets.
  • A Google Calendar account for the person (or shared calendar) that should hold the renewal call slots.
  • A Slack workspace and the name of the channel you want the renewal digest posted to.
  • A list of which agreements auto-renew without a renewal conversation, so the agent can skip them.
How can I customize it?
  • Change the look-ahead window. The default is 60 days but you can stretch it to 90 for enterprise renewals or shorten it to 30 for a tighter cadence.
  • Pick a different cadence or time. Many MSPs prefer Sunday night so reps walk into Monday already briefed, or a Tuesday run after weekly leadership sync.
  • Switch the Slack channel, route digests by region or team, or send a separate DM to each account owner alongside the channel post.
  • Tune the risk thresholds. Tell the agent how many tickets or escalations should bump a customer from healthy to watch or at-risk.

FAQs

Which agreements show up in the digest?
Any active ConnectWise PSA service agreement with an end date inside your look-ahead window, by default the next 60 days. Agreements you flag as auto-renewing without intervention are skipped so the team only sees renewals that actually need a conversation.
How is the healthy, watch, or at-risk label decided?
For each customer, the agent reads service tickets from the last 90 days and looks at how many came in, how many are still open, and whether any were escalated. You can describe your own thresholds and the agent will follow them.
Whose calendar gets the renewal call hold?
By default it lands on the agreement's account owner. If you'd rather everything go on a single shared renewals calendar or on a CSM's calendar, tell the agent where to put it during setup.
Will this work for MSPs with hundreds of agreements?
Yes. The agent walks every active agreement, but only the ones expiring inside the window make it into the digest. The Slack message stays one consolidated post grouped by risk, not one message per agreement.
Can I run it more or less often than weekly?
Yes. Weekly Monday at 7am is the default because it matches how most renewal motions are run, but you can change the cadence to daily, bi-weekly, or any other schedule you want.

Related templates

Turn website roof inspection requests into JobNimbus leads

New roof inspection requests from your website form land in JobNimbus within a minute, with no duplicate records and nothing retyped by your team.

JobNimbus
Google Forms
Slack
Agentic Task
Triage new Jira Service Management requests before anyone opens them

Every new customer request gets a priority, triage labels, a friendly reply with the right help article, and a Slack ping only when it is truly urgent.

Jira Service Management
Jira
Slack
Agentic Task
Risk-check every dependency upgrade pull request in GitHub

When a bot opens a version bump pull request, we read the real documentation for that exact version and tell you whether it is safe to merge.

Context7
GitHub
Slack
Agentic Task
Launch an Ironclad contract when a HubSpot deal is won

The moment a deal hits Closed Won, the right contract starts in Ironclad, the link lands on the deal, and your sales channel hears who owns the next step.

Ironclad
HubSpot
Slack
Agentic Task
Weekly Ironclad contract renewal digest in Slack and Asana

Every Monday, find contracts renewing or expiring in the next 90 days, post a ranked digest to Slack, and open Asana tasks for the ones that need a decision now.

Ironclad
Slack
Asana
Agentic Task
Turn repeat support tickets into draft help articles

Every Friday, spot the questions your team keeps answering by hand and get a ready-to-review help article drafted from real fixes.

Jira Service Management
Confluence
Slack
Agentic Task

Stop letting MSP renewals sneak up on you.

Connect ConnectWise PSA, Google Calendar, and Slack once, and Geni runs your renewal radar every Monday at 7am.