30-second answer
Get-PnPWeb -Includes LastItemModifiedDate, LastItemUserModifiedDate |
Select-Object LastItemModifiedDate, LastItemUserModifiedDateLastItemModifiedDate moves when anything touches the site, including
system processes. LastItemUserModifiedDate moves when a person does. For
any question about activity, the second date is the answer and the first is
noise.
What this proves
The timestamp of the last change made by a user identity on this site, as distinct from the last change made by anything at all.
What it does not prove
- Whether anybody reads the site. Both dates track writes. A reference site that hundreds of people open every week and nobody edits looks identical to a site nobody wants.
- Who made the change or what it was. One corrected typo resets the clock as thoroughly as a year of daily work.
PowerShell
$web = Get-PnPWeb -Includes LastItemModifiedDate, LastItemUserModifiedDate
$days = [int]((Get-Date).ToUniversalTime() - $web.LastItemUserModifiedDate).TotalDays
"{0} days since a person changed anything" -f $daysExample output
LastItemModifiedDate LastItemUserModifiedDate
-------------------- ------------------------
06/08/2026 15:30:33 10/01/2025 09:12:04
573 days since a person changed anythingExplanation
The example is from a real tenant, and it is why the distinction is the
whole answer: on the day of collection, every site checked had a
LastItemModifiedDate of that same day, because a system process had
touched all of them. The user date told the real story: one site had gone
573 days without a person. Any inactivity report built on the first date
would have concluded the tenant was uniformly busy.
Production considerations
- Both properties are on the
Webobject and load with-Includes; there is no admin-centre requirement, site read access is enough. - Compare against a recorded collection time, not "now": a gap in days is only true relative to a moment, and a report read a year later should still say what was true on the day.
- A locked or archived site cannot be changed by anybody. Check
LockStateandArchiveStatusbefore calling a site abandoned; a site somebody decided about is not a site nobody wants.
Related governance rules
SPO-ACTIVITY-001: no person has changed anything on this site for over a year
References
- Web properties (CSOM) (Microsoft Learn)
- Get-PnPWeb (PnP PowerShell)
Found something wrong? Suggest a correction. The article source is not public; the engine it cites is.
What this answer underwrites
The engine reads these Microsoft operations to collect evidence, so what is established here is what those collectors rest on.
activitywhen a person last changed something on one siteagentsthe Copilot agents in one site, and the sources each declaresclassificationwhat a site records about the kind of content it holdsmodernityhow one site is built: template, branding, publishingownerswho administers one sitesharingwhat one site permits, and its default link