Skip to content

How to Track Windsurf Usage and ROI Across Your Engineering Team

Windsurf's admin dashboard reports team-wide AI usage totals, but no public API and no documented per-seat breakdown. Here's what the dashboard shows, what it misses, and how to track adoption anyway.

Pranav Lakhani

CTO, CloudByte AI

10 min read
Teams plan cost per seat
$40
Monthly dark-seat spend
$320
Ghost seats in our pilot
24%
Early Copilot dark rates
30-40%

TL;DR

  • Windsurf's Teams and Enterprise dashboard reports team-wide aggregates such as Percent of Code Written by AI, credit use and tool calls, but no documented per-developer breakdown.
  • There is no public REST API for Windsurf usage data, so unlike GitHub Copilot, per-seat activity cannot be pulled into a spreadsheet or analytics tool programmatically.
  • Teams plan seats cost $40 a month whether used or not, so a 40-seat team with a 20% dark rate spends $320 a month on unconfirmed seats.
  • Other seat-billed tools show the same pattern: a Claude Code pilot found a 24% ghost seat rate, and Copilot teams report 30 to 40% dark seats in the first 60 days.
  • Until Windsurf ships an API, the best check is a monthly dashboard export reconciled against a provisioning-date roster, backed by git commit signals.

A 40-developer team on Windsurf's Teams plan pays $80 a month plus $40 per seat, whether or not that seat ever opens the editor. The admin dashboard reports a tidy team-wide "Percent of Code Written by AI" number. It does not say which 8 of those 40 seats never activated.

That gap is not a Windsurf-specific failure. It's the standard shape of every seat-billed AI coding tool's native reporting. But Windsurf's version of the gap has one wrinkle the others don't: there's currently no public API to work around it.

TL;DR

  • Windsurf's Teams/Enterprise dashboard reports aggregate team metrics (PCW, lines written, tool calls, credit use) but no documented per-developer breakdown.
  • There is no public REST API for Windsurf usage data, unlike GitHub Copilot's Copilot Business API, so third-party analytics tools can't pull per-seat data programmatically today.
  • Ghost seats still cost $40/seat/month on the Teams plan regardless of activity; the dashboard has no built-in alert for them.
  • A 3-way comparison shows Copilot ahead of Windsurf on programmatic access, and Claude Code (via a sync agent like CloudByte AI) ahead of both on session-level depth.
  • Until Windsurf ships an API, manual dashboard review plus a provisioning-date tracker is the most reliable adoption check available.

What does Windsurf's native analytics dashboard show?

Windsurf's Teams and Enterprise dashboard shows team-wide aggregates: Percent of Code Written by AI, total lines written, total tool calls, credit consumption, Cascade message volume, and tab-acceptance rates broken down by programming language.

These numbers answer one question well: is the team, as a whole, using Windsurf at meaningful scale? They answer a second, more important question poorly: which specific developers are driving that number, and which are dead weight on the invoice.

Access itself is also gated. Only users with team-admin privileges can open the analytics view; individual developers see only their own usage, not a comparative team picture.

What "PCW" measures. Percent of Code Written by AI tracks how much shipped code originated from an AI suggestion versus manual typing. It's a useful adoption proxy, but it's reported as a team total, not filtered by developer, project, or week-over-week trend.

What does Windsurf's dashboard miss for engineering managers?

Windsurf's dashboard misses per-developer breakdowns, programmatic export, ghost-seat alerts, and any cross-tool view: the same four gaps every native AI-tool dashboard has, compounded by the absence of a public API to build around them.

What you want to knowWindsurf native dashboardWhat it takes to get it
Team-wide AI usage trend✅ PCW, credit useAlready covered
Per-developer usage breakdown⚠️ Not documented as availableSession-level tagging per seat
Pulling data via API❌ No public API documentedManual export or a sync-agent workaround
Ghost seats (provisioned, never used)❌ No documented alertProvisioning-date tracker cross-checked monthly
Windsurf + Claude Code combined view❌A separate analytics layer covering both tools
PR cycle time or DORA impact❌AI-assisted commit ratio mapped to lead time

The API gap matters more here than it does for Copilot. Even a manager willing to build their own tracking spreadsheet has nothing to poll; the workaround is a manual process, not a script.

How do you measure Windsurf adoption and ROI across a team?

Measure Windsurf adoption by tracking month-over-month credit consumption per seat against your roster, since the dashboard's PCW metric is team-wide and won't isolate a dark seat on its own.

A practical proxy, given the dashboard's limits:

  1. Export or screenshot the aggregate view monthly. Credit consumption is currently the only usage signal Windsurf's Teams dashboard exposes with any granularity.
  2. Maintain a provisioning-date roster outside Windsurf. Since the dashboard won't flag unused seats, a spreadsheet with seat_email, provisioned_at, and last_confirmed_active is the only substitute.
  3. Confirm activity through indirect signals. If your team also uses GitHub, AI-assisted commit patterns and PR frequency can suggest whether a developer is shipping real work with an AI tool, even when the tool's own dashboard won't say so directly.
  4. Compare seat cost against confirmed active seats, not provisioned seats. At $40/seat/month, a 40-seat Teams plan with even a 20% dark rate is $320/month in unconfirmed spend.

That 20-25% range is not a guess pulled from nowhere. It's the same dark-seat pattern documented across other seat-billed AI tools: our own Claude Code pilot found a 24% ghost seat rate within the first two weeks of rollout, and GitHub Copilot teams report comparable 30-40% dark rates in the first 60 days. Windsurf-specific figures aren't published, but there's no structural reason a seat-billed IDE would behave differently.

Why credit consumption alone can mislead

A developer who runs one large Cascade session near a billing cycle boundary can look "active" in a monthly credit total while having gone quiet for the rest of the month. Credit consumption is a cost signal, not a habit signal. Treat it as a starting point for investigation, not a final adoption number.

Windsurf vs GitHub Copilot vs Claude Code: what does each expose for team tracking?

Copilot exposes the most programmatic access via a public REST API; Windsurf reports team aggregates through a dashboard with no API; Claude Code has no built-in team dashboard at all and depends entirely on a sync agent for any team-level visibility.

MetricWindsurf nativeCopilot nativeClaude Code (via CloudByte AI)
Team-wide usage aggregate✅ Dashboard✅ Dashboard + API✅ (agent-captured)
Per-developer session count❌ Not documented❌✅
Public REST API❌✅ manage_billing:copilot scopeN/A (no vendor API to poll)
Ghost seat alert❌Partial (last_activity_at, no alert)✅ Auto-alert
Per-seat activity timestamp❌ Not documented✅✅
Cross-tool unified view❌❌✅ (Claude Code side; Windsurf side stays manual)

The practical takeaway: if your team runs Windsurf and Claude Code side by side, expect two sharply different tracking experiences. Claude Code activity flows into a real per-developer dashboard through activity tracking; Windsurf activity stays inside Windsurf's own admin view until it ships a comparable API.

How do you track Windsurf usage without a public API?

Without a public API, treat Windsurf as the one tool in your stack that needs a manual monthly check: export the dashboard aggregate, reconcile it against your seat roster, and lean on git-level signals for anything the dashboard can't isolate.

Three things help close the gap in practice:

  • Set a recurring calendar reminder, not an ad-hoc check. Native dashboards without APIs get checked less often than API-backed ones because nobody automated a nudge. A monthly reminder is the cheapest fix.
  • Use commit-level data as a secondary signal. If Windsurf-assisted work lands in the same repos your team already tracks, git commit analytics can surface unusual patterns. A developer whose commit volume or size shifted right around Windsurf provisioning is a reasonable proxy for engagement, even without direct tool telemetry.
  • Revisit at renewal, not just at rollout. A dark seat costs the same in month 11 as it did in month 1. Build the roster check into the renewal decision explicitly rather than assuming week-one adoption held steady.

If Windsurf ships an API. Cognition (which acquired Windsurf in 2025 and folded its docs into the Devin platform) has continued shipping product changes at pace. A public usage API would close most of the gaps in this post. Check Windsurf's changelog periodically, since this is the kind of gap vendors close once enough enterprise customers ask for it.

Teams running Claude Code alongside Windsurf don't have to accept the same blind spot on both tools. CloudByte AI captures full session-level Claude Code activity through a lightweight sync agent, since the data comes straight from the developer's machine rather than a vendor API. Windsurf usage stays visible through its own dashboard until that side gets an equivalent. See how the same tracking gap plays out for GitHub Copilot →

Conclusion

Windsurf's dashboard tells you whether the team as a whole is using the tool, but not which seats are paying for nothing. With no public API to build on, per-seat adoption tracking for Windsurf is a manual job for now, and a dark seat costs the same in month 11 as it did in month 1.

Set up a monthly check: export the dashboard aggregate, reconcile it against a provisioning-date roster, and use commit-level signals for what the dashboard cannot isolate. Build that roster review into every renewal decision, and if your team also runs Claude Code, track that side at session level with CloudByte AI so only the Windsurf side stays manual.

Frequently asked questions

Windsurf's Teams and Enterprise admin dashboard shows aggregate, team-wide metrics: Percent of Code Written (PCW) by AI, total lines written, total tool calls, credit consumption, Cascade message volume, and tab-acceptance rates by language. It reports these as team totals rather than a documented per-developer breakdown, so a manager sees overall AI usage but not which individual seats are driving it.

No. As of this writing, Windsurf's documentation does not publish a REST API for usage or seat data, unlike GitHub Copilot's Copilot Business API. Admins are limited to the built-in dashboard; there's no documented way to export per-seat activity into a spreadsheet or third-party analytics tool without manual review.

Windsurf's dashboard does not document a built-in ghost-seat alert. Because Teams seats bill at $40 per user per month on top of an $80 base fee regardless of activity, the practical method today is cross-referencing the aggregate credit-consumption view against your roster manually, or flagging unused licenses at renewal through your identity provider.

GitHub Copilot publishes a REST API returning per-seat last_activity_at and daily org-level metrics; Windsurf's dashboard reports team-wide aggregates with no documented API or per-seat timestamp. Copilot admins can automate seat monitoring against the API; Windsurf admins currently rely on the dashboard's aggregate view alone.

Not through Windsurf's own tooling: its dashboard only reports Windsurf activity, and Claude Code ships no built-in team dashboard at all. A unified view needs a separate analytics layer that captures Claude Code session data directly, with Windsurf's own dashboard tracked in parallel until Windsurf ships a public API.

Join 50+ teams who measure what matters.

Start free — no credit card, no infrastructure. Your team's AI data on a live dashboard in 10 minutes.

  • Free for up to 5 developers
  • 10-minute setup
  • Your Anthropic key, your spend (Enterprise)