LearnMicrosoft Teams › 14 · Advanced: automation & APIs

Usage reporting and analytics

Usage data answers adoption, capacity and licence questions — IF you know its lag, its pseudonymisation switch and which of the three report families to pull. Numbers people trust are numbers whose caveats you stated first.

The three report families

  1. TAC usage reports: Teams-specific (user activity, device usage, apps, PSTN/minutes) — operational grain.
  2. M365 admin usage: cross-workload rollups — the exec deck's source.
  3. Graph reports API (/reports/getTeamsUserActivity... et al.): the same data as CSV/JSON for YOUR pipelines — serv365's Pulse concept consumes exactly this family.

Ground rules that keep credibility: ~24-48h lag (never present 'today'); activity != value (messages-sent measures typing, not outcomes — pair with outcome metrics before drawing conclusions); period windows differ per report (7/28/90-day) — label them.

The pseudonymisation switch

M365 admin center privacy setting can replace user identities in ALL these reports with pseudonyms — org-wide, works-council-relevant, and the silent reason a per-user adoption report suddenly shows hashes. Know your tenant's stance (it's a setting; it's in audit when flipped) and design reports to their privacy posture, not against it.

Reports that earn their keep

  • Licence reclamation: assigned-but-inactive (licence details vs activity) — the report that funds itself.
  • Capacity truthing: device usage + meeting minutes per site against the network module's models.
  • Adoption curves post-rollout: app usage before/after a setup-policy pin (the apps module's rollouts, measured).
  • PSTN cost lines: minutes by user/destination (voice modules) — finance's standing ask, automatable via the reports API.

What to watch (proofs)

  • The lag, measured once: an action you performed vs its report appearance — your tenant's real freshness, quoted in every deck footnote.
  • The privacy stance: the pseudonymisation setting's current value + its audit history — before someone escalates 'broken reports'.
  • Pipeline health (if you automate): scheduled Graph report pulls' success + row-count trend — a feed that silently flatlines poisons every downstream chart.
  • One reconciliation: TAC report vs Graph CSV for the same period — they should agree; understanding any variance (windows, timezone) once saves every future argument.

PowerShell for this concept

  • Get-CsOnlineUser Returns information about users who have accounts homed on Microsoft Teams or Skype...

Discussion

No messages yet — start the thread.

Sign in with your email to join the discussion — we send a one-time link, no password.