Which contracts need renewal attention in the next 90 days? 60 contracts across 31 clients are approaching their end date.
Which contracts need renewal attention in the next 90 days? 60 contracts across 31 clients are approaching their end date.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: Account managers, finance teams, and MSP owners managing renewals
How often: Monthly for pipeline review, 90 days before expiry for renewal preparation
Which contracts need renewal attention in the next 90 days? 60 contracts across 31 clients are approaching their end date.
A snapshot of the contract renewal pipeline for the next 90 days.
EVALUATE
VAR Today = TODAY()
VAR AllContracts = FILTER('BI_Autotask_Contracts',
'BI_Autotask_Contracts'[contract_status_name] = "Active")
RETURN ROW(
"Total Active", COUNTROWS(AllContracts),
"Expiring 0-30", COUNTROWS(FILTER(AllContracts,
[end_date] >= Today && [end_date] <= Today + 30)),
"Expiring 31-60", COUNTROWS(FILTER(AllContracts,
[end_date] > Today + 30 && [end_date] <= Today + 60)),
"Expiring 61-90", COUNTROWS(FILTER(AllContracts,
[end_date] > Today + 60 && [end_date] <= Today + 90))
)
Contracts grouped into 30-day urgency windows. The stacked bar shows how expirations are distributed across the next three months.
| Timeframe | Contracts | % of Expiring | Urgency |
|---|---|---|---|
| 0 - 30 days | 22 | 36.7% | Critical |
| 31 - 60 days | 25 | 41.7% | High |
| 61 - 90 days | 13 | 21.7% | Medium |
| Total | 60 | 100% |
EVALUATE
VAR Today = TODAY()
VAR AllContracts = FILTER('BI_Autotask_Contracts',
'BI_Autotask_Contracts'[contract_status_name] = "Active")
RETURN ROW(
"Total Active", COUNTROWS(AllContracts),
"Expiring 0-30", COUNTROWS(FILTER(AllContracts,
[end_date] >= Today && [end_date] <= Today + 30)),
"Expiring 31-60", COUNTROWS(FILTER(AllContracts,
[end_date] > Today + 30 && [end_date] <= Today + 60)),
"Expiring 61-90", COUNTROWS(FILTER(AllContracts,
[end_date] > Today + 60 && [end_date] <= Today + 90))
)
Which types of contracts are expiring? Recurring service, block hours, and fixed price contracts each carry different renewal dynamics.
| Status | Count | % |
|---|---|---|
| Active | 1,377 | 72.9% |
| Inactive | 512 | 27.1% |
EVALUATE SUMMARIZECOLUMNS('BI_Autotask_Contracts'[contract_status_name], "Count", COUNTROWS('BI_Autotask_Contracts'))
Monthly vs. yearly renewals have very different planning requirements. This table shows the mix.
| Period Type | Count | Share |
|---|---|---|
| Not specified | 29 | 48.3% |
| Monthly | 28 | 46.7% |
| Yearly | 3 | 5.0% |
The 15 contracts closest to their end date, sorted by urgency. Each row shows the client, contract type, remaining days, and priority level.
| Client | Contract | Type | Days Left | Urgency |
|---|---|---|---|---|
| Irving Digital | Contract Establish-619 | Block Hours | 23 | Critical |
| Davis Group | Contract Prove-683 | Recurring Service | 23 | Critical |
| Harris Networks | Contract Owner-845 | Time & Materials | 23 | Critical |
| Irving Digital | Contract National-334 | Recurring Service | 23 | Critical |
| Mitchell & Co | Contract Enough-359 | Time & Materials | 23 | Critical |
| Irving Digital | Contract Your-864 | Time & Materials | 23 | Critical |
| Kennedy Services | Contract Night-142 | Time & Materials | 23 | Critical |
| Davis Group | Contract National-334 | Recurring Service | 23 | Critical |
| Greenfield Systems | Contract However-482 | Time & Materials | 23 | Critical |
| Carter Technology | Contract Million-827 | Time & Materials | 23 | Critical |
| Anderson & Partners | Contract Value-633 | Time & Materials | 23 | Critical |
| Jackson Corp | Contract Answer-745 | Time & Materials | 23 | Critical |
| Blake Solutions | Contract Tax-465 | Time & Materials | 23 | Critical |
| Lambert Industries | Contract Part-398 | Time & Materials | 23 | Critical |
| Lambert Industries | Contract Interview-304 | Time & Materials | 23 | Critical |
| Evans Consulting | Contract Lawyer-911 | Recurring Service | 23 | Critical |
| Foster IT Services | Contract National-334 | Recurring Service | 23 | Critical |
| Evans Consulting | Contract National-334 | Recurring Service | 23 | Critical |
| Evans Consulting | Contract Establish-619 | Block Hours | 23 | Critical |
| Foster IT Services | Contract Establish-619 | Block Hours | 23 | Critical |
| Davis Group | Contract Establish-619 | Block Hours | 23 | Critical |
A visual breakdown of where the expiry pressure sits across the 90-day window.
The concentration of expirations tells you where to focus. When a large share of contracts cluster in the same 30-day window, your team faces a bottleneck: too many renewal conversations happening at once, with too little time to negotiate or adjust terms.
If the critical tier holds more than a third of all expiring contracts, that is a scheduling problem. Start reaching out to those clients this week.
The data shows 60 contracts across 31 clients reaching their end date within the next 90 days. That is 4.4% of the total active portfolio of 1,377 contracts.
The split by contract type is telling. Recurring Service contracts (31) and Block Hours (18) make up the bulk of expirations. Recurring contracts typically auto-renew, but that assumption is dangerous without verification. Block hours contracts often require a usage review before renewal: if a client has unused hours, they may push back on the same allocation.
The 0-30 day window holds 22 contracts. These need action now. For any contract inside this window, your account manager should already have a renewal conversation scheduled. If they do not, the risk of lapsed coverage increases with every passing day.
Looking at the period type data, a significant portion of contracts have no explicit period type set. This is a data quality issue worth addressing: when the renewal period is unclear, it is harder to forecast future expirations or automate renewal reminders in Autotask.
Based on the expiry data, here are the steps that will have the most impact in the next 30 days.
These contracts are in the critical window. Assign each one to an account manager and set a deadline for outreach by end of this week. Missing even one renewal can mean lost monthly recurring revenue.
Block hours contracts make up 18 of the expiring agreements. Pull usage reports for each one. Clients with low utilization may want a smaller package, while high-utilization clients are candidates for an upsell.
A number of expiring contracts have no renewal period defined in Autotask. Update these records so future forecasting and automated reminders work correctly.
Run this report monthly and feed the results into a shared calendar or project board. Account managers should see upcoming renewals at least 60 days out, giving them enough lead time for pricing reviews and contract adjustments.
Monthly at minimum. A 90-day window gives enough lead time for most renewal conversations. For high-value contracts, start the review at 120 days.
In Autotask, the contract status changes but existing tickets and time entries may still reference it. Billing can be disrupted, SLA coverage may lapse, and the client could perceive a service gap.
Yes, with contract value data. The current dataset includes contract types and periods. Adding monthly recurring revenue (MRR) per contract would let you calculate the exact dollar amount at risk per tier.
Use Autotask workflow rules to trigger notifications based on contract end dates. Set reminders at 90, 60, and 30 days before expiry. Assign them to the account manager listed on the contract.
The contract_period_type_name field is optional in Autotask. If it was not set when the contract was created, it will appear as blank. This is a data quality issue. Update these records to improve forecasting accuracy.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started