Every month I come across tenants where inactive SharePoint sites keep piling up: abandoned project spaces, old team sites, communication hubs nobody remembers. Until recently, cleaning that up meant endless manual reviews, Excel exports and far too many emails to site owners. The site lifecycle management features in SharePoint Advanced Management (SAM) finally give me an automated way to deal with it. Detection, owner notifications, reporting and one-click archiving or read-only actions are all built into the SharePoint Admin Center, and none of it needs PowerShell gymnastics. With Copilot adoption growing and storage costs rising, inactive SharePoint sites have moved up the admin priority list.

Lifecycle policies define inactive SharePoint sites by actual activity

So when is a site "inactive"? SharePoint's site lifecycle policies let you tune this more finely than I expected. You can base activity thresholds on access, file updates or site changes, all drawn from telemetry SharePoint already collects. That produces far fewer false positives than a simple timestamp check. Be careful with Teams-connected sites, though. A lot of the activity there happens outside SharePoint, so chats and Planner tasks can carry on while the site content sits untouched.

The controls live under SharePoint admin center → Policies → Site lifecycle management. This is where you set inactivity thresholds, write the notification emails and decide what happens next. As prerequisites, you need SharePoint Advanced Management licences for the sites you want to govern and, for archiving, Microsoft 365 Archive (pay-as-you-go, billed via Azure).

Automated notifications put site owners back in charge

The real gain is getting owners involved at scale. Once a site is flagged as inactive, every owner gets an email with clear choices: keep the site, archive it or delete it. Because owners decide for themselves, most of the back-and-forth that used to drag out cleanups simply disappears. There's also a separate ownerless site policy that finds sites without an active owner and gets them reassigned, so a site doesn't just sit in limbo after someone leaves the company.

Practical tip: Don't settle for the default notification text. Rewrite it in your organisation's own language and tone, and state the deadline, the available actions and what happens if nobody responds. You'll see it in the response rate.

If you want the technical details, Microsoft's documentation on site lifecycle management and SharePoint Advanced Management is a good place to start.

Microsoft 365 Archive moves old sites out of production without deleting them

Few site owners want to delete old content outright, but most are glad to get it out of their active workspace. The new archiving workflow suits that well. With Microsoft 365 Archive you can archive a site or set it to read-only with a single click, which keeps all the data but takes it out of production. The part I like most is that archived sites stop counting against your standard SharePoint storage quota. They're billed on demand through Azure at a fraction of the cost of active storage, and if someone needs access again, you can reactivate the archive.

This also helps with Copilot and search. Archived and read-only sites are excluded from Microsoft 365 Copilot's semantic index, which means fewer irrelevant results and less oversharing. In several Copilot rollout projects I've seen this make pilots run more smoothly and lower the risk.

Reports keep the cleanup process under control

Lifecycle management isn't something you configure once and forget. It gives you a real-time inventory of inactive sites with their owners and status, and you can export the reports or pull them into Power BI for wider analysis. To give a quick overview, I sketched the process in this simple diagram:

flowchart TD
    scan["Scan sites"] --> check["Check activity"]
    check --> decision["Inactive? (>X days)"]
    decision -- "No" --> end["No action"]
    decision -- "Yes" --> notify["Notify owner"]
    notify --> owneraction["Owner selects action"]
    owneraction -- "Keep" --> keep["Update status"]
    owneraction -- "Archive" --> archive["Archive (M365 Archive)"]
    owneraction -- "Delete" --> delete["Delete"]
    owneraction -- "No response" --> defaultaction["Default action after deadline"]

Figure: Automated workflow for managing inactive SharePoint sites

If you're already cleaning up inactive accounts in Entra ID, these policies fit in well alongside that work. My guide to inactive accounts in Entra ID has some tips on combining the two.

Rollout succeeds or fails on communication

The technical setup is usually simple. Whether people accept it depends on how you involve users and what you tell them:

  • Bring business units in early and ask what "inactive" means in their day-to-day work
  • Adapt notification messages to your internal language and culture
  • Spell out deadlines and archive options in every message
  • Start with a small pilot group, collect feedback, then expand
  • Check the reports regularly and adjust policies when needed

In large organisations, involve compliance and governance from day one. Misunderstandings about deletion or access will stall a cleanup faster than anything else.

I think less clutter means better Copilot results and happier owners

After a few months in production I'm convinced that the lifecycle features in SharePoint Advanced Management are a big step forward for cloud governance. Inactive SharePoint sites finally get handled at scale, legacy data ends up securely archived and Copilot returns more relevant results. If storage costs, data hygiene or Copilot quality matter to you, I'd consider these tools essential in 2025.

For more on rolling out Copilot securely and reducing oversharing risk, see my post Copilot oversharing: A deployment blueprint.