Why AI tool or Spend data might be missing for a person

Last updated: October 29, 2026

When someone's AI tool or spend data is missing from Span, the cause is rarely that they didn't use the tool. A person or a tool can drop out in six places, and each has a different fix. This article covers the AI Spend report and the Tool utilization report, and calls out where the two behave differently.

Why it matters

Missing data makes adoption look lower and spend look smaller than they are. Spend Span can't match to a person isn't included in totals; the integration status lists those unmatched accounts. Working through the checks below usually finds the cause in minutes.

How it works

Work down this list. The first "no" is usually the answer.

  1. Can they see the report at all? See check 1.

  2. Does that tool report this kind of data? See check 2.

  3. Is the integration connected correctly? See check 3.

  4. Is their tool account matched to their Span person? See check 4. This is the most common cause by a wide margin.

  5. Is their person record active and eligible? See check 5.

  6. Has the data had time to sync? See check 6.

Check 1: They can't see the report. No nav item means a visibility problem, not a data problem.

  • AI spend needs the AI Spend permission, granted per person or per team. Team Members see their own spend and that of people affiliated with them. Finance Admins see the whole organization.

  • Tool utilization needs a connected version control integration. The report is on by default; if it's missing for everyone, contact Span support.

Check 2: The tool doesn't report that kind of data. A person can use a tool heavily and still produce no spend row.

Tool

Spend

Usage

How usage reaches Span

Cursor

Base and overage

Yes

Cursor connection

GitHub Copilot (Business or Enterprise)

Base and overage

Yes

GitHub Copilot switch on a GitHub connection

Claude Code, API plan

Overage only

Yes

Claude Code API connection

Claude Code, Enterprise plan

Base and overage

Yes

Claude Code Enterprise connection

Claude Cowork

Overage only

Yes

Claude Code Enterprise connection

Claude Pro, Max, or Team plans

No

Through agent traces only

Agent traces

ChatGPT and Codex (ChatGPT Enterprise workspace)

Overage only, from the usage cost the workspace reports

Yes

ChatGPT & Codex Workspace connection

OpenAI API, including Codex CLI or the Codex IDE extension signed in with an API key

Overage only, from the cost OpenAI reports, under OpenAI API

Yes, under OpenAI API

OpenAI Platform connection. Agent traces, if installed, also report Codex sessions as Codex CLI.

Codex CLI with neither a ChatGPT & Codex Workspace nor an OpenAI Platform connection, VS Code

No

Through agent traces only

Agent traces

Augment Code

No

Yes

Augment Code connection

Devin, Codegen, Codex Cloud, Copilot coding agent

No

Yes

Detected from pull requests

Spend comes from Cursor, GitHub Copilot, Claude Code API, Claude Code Enterprise, the ChatGPT & Codex Workspace connection, which adds each person's daily ChatGPT and Codex CLI usage cost as overage spend, and the OpenAI Platform connection, which adds the cost OpenAI reports for each person, day, and model as OpenAI API overage spend. Claude subscription plans (Pro, Max, Team) produce no spend.

Plan tier matters for Copilot. Individual Copilot seats aren't visible to the organization API, so only Business and Enterprise seats report. Seats on an unrecognized plan type are dropped before pricing.

Check 3: The integration isn't set up, or is set up wrong. If an integration shows as connected but no data appears, check its requirement and the common mistake below.

Tool

Requirement

Common mistake

Cursor

A team API key created by a team admin

Using a personal user key with admin scope. It returns no data.

GitHub Copilot

The Span GitHub App holding the GitHub Copilot Business organization permission (read), and the GitHub Copilot switch turned on for that GitHub connection

Turning on the switch before granting the permission, so the sync returns nothing

Claude Code API

An Admin API key from the Claude Console

Expecting subscription users to appear. This connection covers API users only.

Claude Code Enterprise

An Analytics API key with the read:analytics scope

Using a key without that scope

ChatGPT & Codex Workspace

A workspace Admin API key from the OpenAI Admin Console with Enterprise analytics API → Read, for a ChatGPT Enterprise workspace eligible for daily usage reporting. One connection per workspace.

Using an OpenAI API Platform key (sk-admin-...). Span rejects it when you connect.

OpenAI Platform

An organization Admin key (sk-admin-...) created by an owner of your OpenAI API organization on platform.openai.com. The organization needs API spend in the last 180 days. One connection per organization.

Using a project API key, which Span rejects. Or expecting usage from ChatGPT sign-ins, which comes only through ChatGPT & Codex Workspace.

Claude Code's own OpenTelemetry export doesn't feed AI Spend. If a whole tool shows no data for anyone, start here rather than with individual people.

Check 4: Their account doesn't match their Span person. Span matches each tool on a different identifier, so a person can match in one tool and be missing in another.

Tool

Matches on

Cursor

Email address

GitHub Copilot

GitHub username on the person record. There is no email fallback.

Claude Code API

Email address, or the API key name set on the person record

Claude Code Enterprise

Email address

ChatGPT & Codex Workspace

The email on the user's ChatGPT account, matched to a person active in Span. Matching isn't case-sensitive. Usage with no email, or with an email that matches no one, appears under Unknown.

OpenAI Platform

Email address. For each day's usage and cost, Span uses the first email it finds: the user OpenAI recorded on the cost, then that user's email from your organization's member list, then the email of the person who owns the API key. Matching isn't case-sensitive. Usage on service account keys, and on deleted keys or keys in archived projects with no user recorded, has no person and appears under Unknown by API key ID.

Agent traces

The work email on the session

Tools detected from pull requests

The person who requested the pull request

To see who matched, open the Integrations status on the Tool utilization or AI Spend page and select a tool. OpenAI Platform appears only in the AI Spend page's status. The Active tab lists people seen in the tool's data recently, Missing lists people in Span who haven't appeared, and Unknown lists emails or API keys that match no one in Span. A name in Missing next to a likely match in Unknown is a mapping problem. The Integrations status appears only for people with the Manage Integrations permission.

Things to check, in order:

  1. Copilot usernames. A missing GitHub username on the person record is enough to hide someone. Add it.

  2. Personal accounts. Someone signed in with a personal email or GitHub account that isn't on their Span record won't appear.

  3. Claude API keys. Add the API key name to the person record, the same way you add VCS usernames.

  4. Cursor events with no email can't be matched and are left out.

  5. OpenAI service account and deleted keys. Usage on these keys has no person, so it stays under Unknown and is left out of AI Spend and Tool utilization.

Check 5: Their person record excludes them.

  • People who have left. AI Spend covers people who are active in Span. After someone is marked inactive, their Claude Code base spend and their overage spend for Cursor, Claude Code, ChatGPT, Codex CLI, and the OpenAI API no longer appear, including earlier months. If a past month's total changed, a departure is a likely cause.

  • Contractors and service accounts. People recorded as non-employee, system, or service account types never appear in these reports.

  • Tool utilization applies extra filters. It counts only people marked as developer contributors, skips their out-of-office days, and requires coding activity (a commit, merged PR, review, or PR comment) in the last 30 days. Someone can appear in AI Spend but not in Tool utilization for this reason.

Check 6: The data hasn't synced yet. Give a new integration a full cycle before investigating.

Tool

Sync frequency

Time to first data

Cursor

Nightly at 02:30 UTC

Up to 24 hours

GitHub Copilot

Every 4 hours

Up to 6 hours

ChatGPT & Codex Workspace

About every 2 hours

A few hours

OpenAI Platform

About every 2 hours

A few hours

  • History. The first sync requests history back to your organization's integration sync start date. GitHub's per-user Copilot usage report has no data before October 10, 2025. Claude Code API history starts no earlier than February 24, 2025, when Claude Code launched. Claude Code Enterprise history starts no earlier than January 1, 2026. OpenAI Platform history goes back at most one year, because OpenAI serves only the past year.

  • Processing. After each sync, Span rebuilds usage and spend about every 2 hours and the combined spend table about every 6 hours.

  • Recent days. Copilot's report covers days through yesterday (UTC), and Augment Code data can lag up to two days. ChatGPT & Codex Workspace and OpenAI Platform report by UTC day, and each sync re-reads the previous 2 days, so the last couple of days can change slightly.

Setup

If the checks point to a mapping problem:

  1. Open the person's record in Span and add the missing GitHub username, email, or Claude API key name.

  2. Wait for the next rebuild (a few hours).

  3. Reopen the Integrations status on the report and confirm the person moved from Missing to Active.

Things to know

  • Unmatched spend. Spend Span can't match to a person isn't included in the report's charts, cards, or tables. The Unknown tab of the Integrations status lists the unmatched accounts. This is the usual reason a Span total reads lower than the vendor's console.

  • Missing data can show as zero. A person whose tool isn't connected or whose account didn't match shows 0 rather than "no data".

  • Worked example. Your Copilot invoice covers 50 seats and Span shows Copilot base spend for 42 people. Five seats had no activity in the billing period, so they add nothing. The other 3 belong to developers whose GitHub usernames aren't on their Span records; they appear under Unknown in the Copilot integration status. Adding those usernames brings Span to 45 people after the next rebuild.

Related articles

AI Spend Report

AI Tool Adoption Report

Supported AI coding tools

Choosing the right Claude Code Integration

ChatGPT & Codex Workspace Integration

OpenAI Platform integration

Need help?

Contact your Span account team or reach out to support@span.app. Include the person's name, their account identifier in the tool (email, GitHub username, or API key name), the tool and report, the date range, and what the vendor's console shows for the same person and period.