✨ Software.com is now Antenna. Read more →
Skip to Content
IntegrationsAIClaudeClaude.ai Team, Pro, and Max

Claude.ai Team, Pro, and Max

Claude.ai Team, Pro, and Max plans have no usage or analytics API. Antenna uses Claude Code’s OpenTelemetry  metrics instead. You set them up once in your organization’s managed settings.

Setup

Copy settings.json

On app.antenna.dev, go to Settings > Sources > Add source, find Claude Code, click Connect, select Claude.ai Team / Pro / Max, and copy the snippet.

{ "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "OTEL_METRICS_EXPORTER": "otlp", "OTEL_EXPORTER_OTLP_PROTOCOL": "http/json", "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": "https://app.antenna.dev/api/v1/otel/claude/metrics", "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer your_token", "OTEL_METRIC_EXPORT_INTERVAL": "3600000" } }

Update Claude managed settings

Go to Organization Settings > Claude Code  in Claude.ai, paste in the JSON payload, and click Update Settings.

The next time developers sign in to Claude Code with their subscription, they see “Managed settings require approval”. They have to accept the settings to keep using Claude Code. Accepting updates the ~/.claude/settings.json file in each user’s home directory.

Managed settings require approval notification in Claude Code terminal

Other important notes:

  • You must be an Owner to update managed settings.
  • Managed settings take precedence over a developer’s local or repo-level .claude/settings.json. Any OpenTelemetry endpoints configured there are replaced. If you already send telemetry to another backend, see Send to Antenna and another backend.
  • For more detail on how to configure your settings file, see Claude Code settings .

There are various options for propagating settings.json (e.g. MDM / device management, dotfiles repository, shell profile / RC files, and onboarding scripts). If available, MDM / device management is the most reliable method for org-wide enforcement.

What’s tracked

OpenTelemetry covers Claude Code wherever it reads your managed settings:

Claude surfaceTrackedservice.name
Claude Code CLI (terminal and IDE extensions)Yesclaude-code
Claude Desktop app, Code tabYesclaude-code-desktop
Claude Desktop app, Cowork tabPartially, see belowcowork
Claude Desktop app, Chat tab, and claude.ai on the webNon/a

Code tab: the Code tab in Claude Desktop runs Claude Code, reads the same managed settings, and sends the same metrics as the CLI. Antenna combines CLI and Desktop usage into each developer’s Claude activity, so you don’t need to change anything. If you filter Claude telemetry by service.name in your own collector or dashboards, include both claude-code and claude-code-desktop. See Service information  in Claude’s documentation.

Cowork tab: Cowork doesn’t use Claude Code managed settings. It’s configured separately in Admin settings > Data and privacy  > Monitoring (see Cowork monitoring ). Antenna counts Cowork data only when it arrives as Claude Code metrics. Claude doesn’t document that it does, so treat Cowork coverage as best-effort.

Chat: Claude doesn’t export OpenTelemetry for chat conversations, so they don’t appear in Antenna.

Cost data

Claude.ai has no billing API, so the cost reported for this source is Claude Code’s own estimate: the claude_code.cost.usage metric. Claude Code calculates it on each developer’s machine from token counts and model list prices. Claude’s documentation says cost metrics are approximations  and points to your billing provider for official figures.

The estimate:

  • Covers usage-based spend in Claude Code only (CLI and the Desktop Code tab).
  • Uses list prices, so plan discounts, credits, and included usage are not taken into account.
  • Doesn’t include Chat, Cowork, or Office agent usage.

Seat fees aren’t part of the estimate. Antenna adds them from the seat price you set: go to AI Budgets > Configure Budgets and set Avg seat cost for Claude in Tool Defaults. Total Claude cost in Antenna is your seat cost plus the estimated usage cost.

If you need actual spend instead of the estimate, you can upload your actual costs.

Send to Antenna and another backend

Claude Code sends each OpenTelemetry signal (metrics, logs) to a single endpoint. If you already send Claude Code telemetry to a backend such as New Relic or Datadog, pick one of these setups.

Option 1: Fan out through an OpenTelemetry Collector

Use this if your existing backend also needs Claude Code metrics. Point Claude Code at your own OpenTelemetry Collector  and have the collector export metrics to both destinations.

  1. In your managed settings, set the OTLP endpoint to your collector instead of Antenna.
  2. Add Antenna as an extra exporter, using the token from your Antenna snippet:
exporters: # ... your existing exporters, for example: otlphttp/newrelic: endpoint: https://otlp.nr-data.net headers: api-key: YOUR_NEW_RELIC_LICENSE_KEY # Antenna, metrics only otlphttp/antenna: metrics_endpoint: https://app.antenna.dev/api/v1/otel/claude/metrics compression: none encoding: json headers: Authorization: "Bearer your_token" service: pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp/newrelic, otlphttp/antenna] logs: receivers: [otlp] processors: [batch] exporters: [otlphttp/newrelic]

Antenna accepts metrics only, so leave otlphttp/antenna out of your logs and traces pipelines.

Option 2: Split signals without a collector

Use this if your existing backend only needs logs or traces. Claude Code accepts a separate endpoint, protocol, and headers for each signal, so you can send metrics to Antenna and logs to your other backend:

{ "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "OTEL_METRICS_EXPORTER": "otlp", "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT": "https://app.antenna.dev/api/v1/otel/claude/metrics", "OTEL_EXPORTER_OTLP_METRICS_PROTOCOL": "http/json", "OTEL_EXPORTER_OTLP_METRICS_HEADERS": "Authorization=Bearer your_token", "OTEL_METRIC_EXPORT_INTERVAL": "3600000", "OTEL_LOGS_EXPORTER": "otlp", "OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": "https://otlp.nr-data.net/v1/logs", "OTEL_EXPORTER_OTLP_LOGS_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_LOGS_HEADERS": "api-key=YOUR_NEW_RELIC_LICENSE_KEY" } }

Don’t set OTEL_EXPORTER_OTLP_HEADERS in this setup. Claude Code merges it into every signal’s headers, so each backend would receive the other’s credentials.

With either option, put the final configuration in your Claude managed settings. Managed settings replace any OpenTelemetry endpoints developers set locally.

Data collected

We receive metrics every hour, such as sessions, lines added, commits, pull requests, tokens, estimated cost, and active time. For full details on what Claude Code sends, see Monitoring usage  in Claude Code’s OpenTelemetry documentation.

We do not collect logs (for example, prompts). Only aggregated metrics are sent.

Appendix: Upload your actual costs

On Team plans, you can replace the cost estimate with your billed spend. Upload one spend report per day, plus your member list for seat costs. To upload them automatically every week, see Sync spend with Cowork.

On app.antenna.dev, go to Settings > Sources and click Configure on the Claude source to open its Claude.ai Team page.

Export one spend report per day

An Owner or Primary Owner opens Claude Analytics , scrolls to How much is Claude costing?, and clicks Export spend report. Choose Custom and set the start and end date to the same day. The report has no date column, so each file must cover exactly one day. Claude keeps the last 90 days.

Upload the reports

On the Spend Summary card, click Upload spend reports and drop in the CSVs as downloaded. You can drop several days at once, from one or more Claude.ai Team accounts. Antenna reads the organization and day from each file name.

Upload your member list

In Claude.ai Members settings , click Export CSV. On the Seat Costs card, click Import members CSV, drop in the file as downloaded, and set a monthly price for each seat tier. Upload a new list whenever your subscription changes. Antenna keeps every list, so each member has a seat history.

The spend report has one row per member, product, and model. Antenna records each member’s Total Net Spend USD for that day, the amount after any discounts or credits. Antenna keeps every product, so Chat and Cowork spend counts too. Members are matched to Claude users by email.

Days without a report use the OpenTelemetry estimate, adjusted by your calibration. Uploading a day again replaces that day’s report for that organization, and the Daily Spend Reports card shows which days have reports.

Last updated on