Managing Inactive SharePoint Online Sites: Policies, Automation, and Cleanup Strategies
Billy Peralta
May 4, 2026
TL;DR
Every SharePoint Online tenant accumulates inactive sites over time. Project sites that were never decommissioned, team sites that lost their owners, and migration leftovers all contribute to tenant sprawl. Left unchecked, inactive sites consume storage, create security risks, and make it harder for users to find relevant content.
This guide covers how to identify inactive sites, establish lifecycle policies, automate notifications and archival, and build a sustainable governance model that prevents the problem from growing.
Table of Contents
- Why inactive sites are a problem
- Identifying inactive sites
- Microsoft 365 inactive site policies
- Building a site lifecycle policy
- Using PowerShell for inactive site reporting
- Automating notifications to site owners
- Archival strategies
- Decommissioning sites safely
- Preventing future sprawl
- Final thoughts
- FAQ
1. Why Inactive Sites Are a Problem
SharePoint Online tenants grow quickly. Every time someone creates a Microsoft Teams team, a Microsoft 365 group, or a SharePoint site, a new site collection is created. Over time, many of these sites stop being used but no one deletes them.
Here is why inactive sites matter:
- Storage consumption. Inactive sites still count against your tenant storage quota. If you have hundreds of abandoned sites with content, you are paying for storage that no one is using.
- Security risk. Sites with stale permissions may still grant access to former employees, contractors, or external users. If no one is monitoring these sites, sensitive content could be exposed without anyone knowing.
- Search pollution. SharePoint search indexes all content across the tenant. Inactive sites with outdated documents appear in search results alongside current, relevant content. This degrades the search experience for everyone.
- Compliance exposure. Sites without active owners may contain content that should have been deleted or retained according to your organization’s data retention policies. Without oversight, compliance requirements go unmet.
- Confusing user experience. When users browse the SharePoint start page or Teams, they see a mix of active and abandoned sites. This makes it harder to find the sites they actually need.
The longer inactive sites are left alone, the harder they become to clean up. Addressing site lifecycle management proactively saves time and reduces risk.
2. Identifying Inactive Sites
Before you can manage inactive sites, you need to define what “inactive” means for your organization. There is no universal threshold, but here are common approaches:
Defining inactivity
| Metric | Common Threshold |
|---|---|
| No file activity (views, edits, uploads) | 6 to 12 months |
| No page visits | 6 months |
| No site owner login | 6 months |
| No new content created | 12 months |
I typically define a site as inactive if there has been no file activity and no page visits for 6 months or more. For project sites, the threshold might be shorter since projects have defined end dates.
Where to find activity data
SharePoint Admin Center: The SharePoint admin center shows site-level activity metrics including last activity date, storage used, and page views. You can sort and filter the active sites report to find sites with no recent activity.
Microsoft 365 Usage Reports: The Microsoft 365 admin center provides usage reports for SharePoint site activity over 7, 30, 90, and 180 days. These reports show file count, active file count, page views, and storage used per site.
Microsoft Graph API: For more granular data, the Microsoft Graph API provides site activity reports that can be pulled programmatically and integrated into custom dashboards or Power BI reports.
3. Microsoft 365 Inactive Site Policies
Microsoft has built-in capabilities for managing inactive sites that have improved significantly in recent years.
Microsoft 365 Group Expiration Policy
If your SharePoint sites are connected to Microsoft 365 groups (which includes all Teams-connected sites), you can set up a group expiration policy in Microsoft Entra ID (formerly Azure AD).
How it works:
- You set an expiration period (e.g., 180 days, 365 days).
- Microsoft checks group activity automatically.
- If the group has no activity (emails, files, Teams chats, SharePoint activity, Yammer, Planner), the group owner receives a renewal notification 30 days before expiration.
- If the owner does not renew, the group, its Teams team, and its SharePoint site are soft-deleted.
- Soft-deleted groups can be restored within 30 days.
Important considerations:
- This only applies to Microsoft 365 group-connected sites. Classic team sites and communication sites without groups are not affected.
- The policy applies tenant-wide or to specific groups. There is no per-site granularity.
- If a group has no owner, the renewal notification goes to the admin.
- Auto-renewal happens if activity is detected, so truly inactive groups expire but active ones renew automatically.
SharePoint Admin Center: Inactive Sites Report
The SharePoint admin center now surfaces an inactive sites report that lists sites with no activity over a specified period. Admins can review these sites and take action directly from the admin center, such as notifying owners, restricting access, or archiving.
4. Building a Site Lifecycle Policy
A site lifecycle policy defines what happens to a site from creation through active use, inactivity, archival, and eventual deletion. Without this policy, cleanup is always reactive and inconsistent.
Lifecycle stages
Creation → Active Use → Inactivity Review → Owner Notification → Archive or Renew → Decommission
Key policy decisions
1. Inactivity threshold: Define how long a site can be inactive before triggering a review. I recommend 6 months for project sites and 12 months for departmental sites.
2. Owner notification process: When a site is flagged as inactive, the site owner should receive an automated notification asking them to either confirm the site is still needed or approve its archival. Give owners 30 days to respond.
3. Escalation path: If the owner does not respond, escalate to their manager or the department head. If there is no owner (the person left the organization), escalate to the IT governance team.
4. Archival process: Define what archival means. Options include making the site read-only, exporting content to a long-term storage location, or applying a retention label and locking the site.
5. Deletion timeline: After archival, define how long the archived site is retained before permanent deletion. Common retention periods range from 1 to 7 years depending on compliance requirements.
6. Exemptions: Some sites should be exempt from lifecycle policies. Legal hold sites, compliance-related sites, and sites with active retention labels should not be automatically archived or deleted.
5. Using PowerShell for Inactive Site Reporting
For organizations that need more control over their inactive site reporting, PowerShell provides a flexible way to pull site activity data and generate actionable reports.
Connecting to SharePoint Online
# Install the module if needed
Install-Module -Name PnP.PowerShell -Scope CurrentUser
# Connect to SharePoint Online admin
Connect-PnPOnline -Url "https://yourtenant-admin.sharepoint.com" -Interactive
Getting all sites with last activity date
# Get all site collections with usage data
$sites = Get-PnPTenantSite -Detailed | Select-Object `
Url, Title, Owner, StorageUsageCurrent, `
LastContentModifiedDate, Template, Status
# Filter for inactive sites (no content modified in 6+ months)
$inactiveSites = $sites | Where-Object {
$_.LastContentModifiedDate -lt (Get-Date).AddMonths(-6)
}
# Export to CSV for review
$inactiveSites | Export-Csv -Path "InactiveSites.csv" -NoTypeInformation
Write-Host "Total sites: $($sites.Count)"
Write-Host "Inactive sites (6+ months): $($inactiveSites.Count)"
Enriching with storage and owner data
# Build a detailed report with storage impact
$report = foreach ($site in $inactiveSites) {
[PSCustomObject]@{
Url = $site.Url
Title = $site.Title
Owner = $site.Owner
StorageMB = [math]::Round($site.StorageUsageCurrent, 2)
LastModified = $site.LastContentModifiedDate
DaysInactive = ((Get-Date) - $site.LastContentModifiedDate).Days
Template = $site.Template
}
}
$report | Sort-Object DaysInactive -Descending |
Export-Csv -Path "InactiveSiteReport.csv" -NoTypeInformation
# Show total storage consumed by inactive sites
$totalStorageGB = ($report | Measure-Object -Property StorageMB -Sum).Sum / 1024
Write-Host "Total storage used by inactive sites: $([math]::Round($totalStorageGB, 2)) GB"
This report gives you a clear picture of how many inactive sites exist, how long they have been inactive, who owns them, and how much storage they consume.
6. Automating Notifications to Site Owners
Once you have a list of inactive sites, the next step is notifying site owners and asking them to take action. Manual emails do not scale. Automation does.
Option 1: Power Automate
Create a Power Automate flow that:
- Runs on a scheduled basis (e.g., monthly).
- Reads the inactive site report from a SharePoint list or Excel file.
- Sends an adaptive card or email to each site owner asking them to confirm whether the site is still needed.
- Records the owner’s response.
- If no response after 30 days, flags the site for archival.
Option 2: PowerShell with Microsoft Graph
# Send notification emails to site owners via Microsoft Graph
foreach ($site in $inactiveSites) {
$owner = $site.Owner
$siteUrl = $site.Url
$lastModified = $site.LastContentModifiedDate.ToString("MMMM dd, yyyy")
# Compose the email body
$body = @"
Hello,
The SharePoint site "$($site.Title)" ($siteUrl) has had no activity since $lastModified.
As the site owner, please review this site and take one of the following actions within 30 days:
1. Confirm the site is still needed (no action required, reply to this email).
2. Approve archival (the site will be made read-only and archived).
3. Approve deletion (the site and its content will be permanently removed).
If we do not hear from you within 30 days, the site will be archived automatically.
Thank you,
IT Governance Team
"@
# Send via Graph API (requires appropriate permissions)
# This is a simplified example - production use should include error handling
Send-PnPMail -To $owner -Subject "Action Required: Inactive SharePoint Site Review" -Body $body
}
Option 3: SharePoint Admin Center (Manual)
For smaller tenants, the SharePoint admin center allows admins to review inactive sites and contact owners directly. This works for organizations with fewer than 100 sites but does not scale well beyond that.
7. Archival Strategies
When a site is confirmed as no longer needed but the content must be retained, archival is the right approach.
Strategy 1: Make the site read-only
The simplest archival method is to set the site to read-only. This preserves the content in place while preventing any new changes.
# Set site to read-only using lock state
Set-PnPTenantSite -Url "https://yourtenant.sharepoint.com/sites/OldProject" -LockState ReadOnly
Pros: Content remains searchable and accessible. No data movement required. Cons: Still consumes storage. Permissions remain in place.
Strategy 2: Export and store in Azure Blob Storage
For long-term archival with cost savings, export the site content and store it in Azure Blob Storage with cool or archive tier pricing.
Pros: Significantly lower storage costs. Content retained for compliance. Cons: Content is no longer searchable in SharePoint. Restoration requires re-importing.
Strategy 3: Apply retention labels and lock
Apply a Microsoft Purview retention label to the site’s content, then lock the site. This ensures content is retained for the required period and automatically deleted when the retention period expires.
Pros: Compliance-driven. Automatic cleanup when retention expires. Cons: Requires Microsoft Purview licensing. More complex to set up.
Which strategy to use
| Scenario | Recommended Strategy |
|---|---|
| Content might be needed again soon | Read-only lock |
| Long-term compliance retention required | Retention labels + lock |
| Cost optimization is the priority | Export to Azure Blob Storage |
| Content has no retention requirements | Delete after backup |
8. Decommissioning Sites Safely
When a site is approved for deletion, do not rush to permanently remove it. Follow a safe decommissioning process.
Decommissioning steps
- Notify all users who have access to the site, not just the owner. Give them 2 weeks to retrieve any content they need.
- Export a backup of the site content. Even if you plan to delete the site, having a backup protects against last-minute “we actually needed that” requests.
- Check for dependencies. Verify that no Power Automate flows, Power Apps, or external integrations depend on this site. Check for embedded web parts on other sites that reference content in this site.
- Move the site to the recycle bin. When you delete a site collection, it goes to the tenant recycle bin for 93 days before permanent deletion. This provides a recovery window.
- Document the deletion. Record what was deleted, when, why, and who approved it. This documentation is important for compliance and audit purposes.
# Delete a site collection (moves to recycle bin for 93 days)
Remove-PnPTenantSite -Url "https://yourtenant.sharepoint.com/sites/OldProject" -Force
9. Preventing Future Sprawl
Cleaning up inactive sites is important, but preventing the problem from recurring is even more valuable.
Governance controls to implement
1. Site creation approval process: Instead of allowing all users to create sites freely, implement an approval workflow. Users request a site through a form (Power Apps or a SharePoint list), and the request is reviewed before provisioning.
2. Mandatory site owners: Every site must have at least two owners. If one person leaves the organization, the second owner can manage the site. Enforce this during the creation process.
3. Site purpose and expiration date: When a site is created, require the requestor to specify the site’s purpose and an expected end date (for project sites). Use this information to trigger lifecycle reviews.
4. Periodic access reviews: Schedule quarterly reviews where site owners confirm their site is still active and permissions are still appropriate. This keeps ownership current and catches issues early.
5. Self-service with guardrails: You do not need to block all self-service creation. Instead, apply naming conventions, default sensitivity labels, group expiration policies, and storage quotas automatically. Let users create what they need, but within a governed framework.
6. Dashboard visibility: Create a governance dashboard (Power BI or a SharePoint page) that shows site count trends, inactive site counts, storage consumption, and sites without owners. Make this visible to IT leadership so governance stays on the agenda.
10. Final Thoughts
Site lifecycle management is not a one-time cleanup project. It is an ongoing discipline that needs to be built into your SharePoint governance strategy.
The key takeaways from managing inactive sites across multiple tenants:
- Define what inactive means for your organization and document it in a governance policy.
- Automate detection and notification. Manual reviews do not scale.
- Give site owners the responsibility to confirm or archive their sites. IT should not be the only team making these decisions.
- Archive before you delete. Always provide a recovery path.
- Prevent sprawl at the source by implementing creation policies and group expiration.
If your organization recently completed a migration to SharePoint Online, now is the best time to establish these policies before the tenant accumulates years of unchecked growth.
FAQ
How do I find SharePoint sites with no owner?
Use PowerShell with Get-PnPTenantSite -Detailed and check the Owner property. Sites where the owner account is disabled or deleted in Microsoft Entra ID are effectively ownerless. You can cross-reference with Get-MgUser to verify account status.
Does Microsoft automatically delete inactive sites?
Not by default. Microsoft 365 group expiration policies can auto-delete inactive groups (and their connected SharePoint sites), but you must configure this in Microsoft Entra ID. Classic sites and communication sites without groups are never automatically deleted.
How much storage do inactive sites typically consume?
It varies widely, but in my experience, 20 to 40 percent of total tenant storage is consumed by sites that have been inactive for over a year. Running a storage report sorted by last activity date often reveals significant savings opportunities.
Can I recover a deleted site?
Yes. Deleted site collections remain in the tenant recycle bin for 93 days. During that period, you can restore them with full content and permissions. After 93 days, they are permanently deleted.
Should I archive sites or delete them?
If the content has regulatory or compliance requirements, archive it. If there is no retention requirement and the content has been reviewed, deletion is cleaner and reduces long-term management overhead. Always confirm with the business before deleting.
What about Teams-connected sites?
Teams-connected sites follow the lifecycle of their associated Microsoft 365 group. If you delete the group, the Teams team and SharePoint site are deleted together. Use Microsoft 365 group expiration policies to manage these automatically.
Billy Peralta
SharePoint & Microsoft 365 Specialist • 16+ Years Experience
If you have questions about your SharePoint environment, feel free to reach out.
Need help with SharePoint Governance?
I specialize in building enterprise solutions. Let's discuss your project.