{"meta":{"title":"Reconciling Copilot usage metrics across dashboards, APIs, and reports","intro":"Copilot usage metrics are derived from the same underlying telemetry but are aggregated and presented differently across dashboards, APIs, and exported reports.","product":"GitHub Copilot","breadcrumbs":[{"href":"/en/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/en/enterprise-cloud@latest/copilot/reference","title":"Reference"},{"href":"/en/enterprise-cloud@latest/copilot/reference/copilot-usage-metrics","title":"Copilot usage metrics"},{"href":"/en/enterprise-cloud@latest/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics","title":"Reconciling Copilot usage metrics"}],"documentType":"article"},"body":"# Reconciling Copilot usage metrics across dashboards, APIs, and reports\n\nCopilot usage metrics are derived from the same underlying telemetry but are aggregated and presented differently across dashboards, APIs, and exported reports.\n\nThe Copilot usage metrics dashboard, APIs, and export files all use the same underlying telemetry data, but they aggregate and present it differently. Understanding these differences helps you reconcile numbers across sources and trust your analysis when preparing internal reports.\n\n* The Copilot usage metrics dashboards are available at the **enterprise** and **organization** level.\n* The Copilot usage metrics APIs support **enterprise-, organization-, repository-, and user-level** records.\n* Team-level totals are not pre-aggregated. They are constructed by joining the user-teams report with the per-user usage metrics report. See [Team-level Copilot usage metrics](/en/enterprise-cloud@latest/copilot/reference/copilot-usage-metrics/team-level-metrics).\n* Repository-level reports provide daily pull request activity for repositories with activity on the requested day. See [Data available in Copilot usage metrics](/en/enterprise-cloud@latest/copilot/reference/copilot-usage-metrics/copilot-usage-metrics#repository-level-fields-api-only).\n\n## Prerequisite\n\nIDE-based Copilot usage metrics depend on **telemetry from users' IDEs**. If a developer has disabled telemetry in their IDE, their detailed IDE-based Copilot activity, such as per-IDE, per-feature, and lines-of-code breakdowns, will **not** appear in the dashboard, API reports, or exported data. However, server-side telemetry may still surface these users in your active user counts even when client telemetry is unavailable.\n\nIf you notice missing users or unexpectedly low adoption numbers, verify IDE telemetry settings before troubleshooting other causes.\n\nCopilot CLI metrics (`daily_active_cli_users` and `totals_by_cli`) are collected and reported separately from IDE telemetry. CLI usage does **not** contribute to IDE-based active user counts or other IDE metrics.\n\nDo not reconcile `totals_by_3rd_party_agent[].user_initiated_interaction_count`, which counts user-initiated agent app jobs, with the top-level `user_initiated_interaction_count`, which counts explicit prompts from other supported telemetry.\n\n## Metric alignment\n\nThe dashboard and APIs use shared definitions for key metrics:\n\n| Concept               | Dashboard metric                                | API or export field                                                 | Notes                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| :-------------------- | :---------------------------------------------- | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Active users          | Daily/weekly/total active users                 | `user_initiated_interaction_count` > 0                              | A user is considered active if they interacted with Copilot in their IDE on that day.                                                                                                                                                                                                                                                                                                                                     |\n| Acceptance rate       | Code completion acceptance rate                 | `code_acceptance_activity_count` ÷ `code_generation_activity_count` | Both sources calculate acceptance rate the same way, though rounding may differ.                                                                                                                                                                                                                                                                                                                                          |\n| Agent adoption        | Agent adoption chart                            | `totals_by_feature` where feature = “agent”                         | Reflects users who interacted with the Copilot agent.                                                                                                                                                                                                                                                                                                                                                                     |\n| Language usage        | Language usage charts                           | `totals_by_language_feature` or `totals_by_language_model`          | The dashboard visualizes these aggregated fields.                                                                                                                                                                                                                                                                                                                                                                         |\n| Adoption cohort/phase | Adoption cohort distribution (impact dashboard) | `ai_adoption_phase`, `totals_by_ai_adoption_phase`                  | The phase definitions are shared, but the populations differ. The dashboard includes every user active during the trailing 28-day window, while the aggregated `totals_by_ai_adoption_phase` field counts users active on the record's specific day. Dashboard and API cohort counts and percentages therefore do not match. Users displayed as \"Passive users\" in the dashboard correspond to the `No Cohort` API value. |\n\nFor complete field descriptions, see [GitHub Copilot usage metrics](/en/enterprise-cloud@latest/copilot/reference/copilot-usage-metrics).\n\n## Discrepancies between reports\n\nSmall differences between dashboard data, API reports, and exports are expected. These variations are usually caused by differences in time windows, scope, or data freshness.\n\n### Time windows\n\nEach data source aggregates data differently.\n\n| Source         | Time window           | Aggregation method                                                                |\n| :------------- | :-------------------- | :-------------------------------------------------------------------------------- |\n| Dashboard      | 28-day rolling window | Metrics are aggregated continuously over the past 28 days to smooth fluctuations. |\n| APIs           | Daily                 | Each record represents a single day per user, enabling daily trend analysis.      |\n| NDJSON exports | Daily                 | Mirrors API output for BI tools and long-term reporting.                          |\n\nAligning your reporting period with the dashboard’s 28-day window makes most comparisons more consistent. However, it does not make adoption cohort counts match because the dashboard counts distinct users across the window and the aggregated API fields contain daily counts.\n\n### Delayed telemetry\n\nBecause IDE telemetry is processed asynchronously, data for recent days may appear incomplete or missing. Data typically finalizes within three full UTC days. Apparent drops in recent daily metrics often resolve once telemetry is fully processed.\n\n### Export timing\n\nNDJSON files reflect data available at the time of export. If a file is downloaded before new telemetry is processed, the data may lag behind the dashboard or API. Re-exporting the file after the three-day window provides the most accurate view.\n\n## `Unknown` values\n\nThe value `Unknown` appears in some API or export breakdowns when telemetry from the IDE client lacks sufficient detail to categorize the activity. This is expected behavior and does not indicate missing data.\n\n| Breakdown | Explanation                                                                                                                                                                                                                               |\n| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Language  | Shown as `Unknown` when the IDE cannot identify the programming language of the active file.                                                                                                                                              |\n| Feature   | Appears when an older client sends a generic event without specifying a chat mode (for example, `chat_panel_unknown_mode`).                                                                                                               |\n| Model     | Appears when the event lacks information identifying the model used. Some internal models (for example, `gpt-4o-mini`) may appear alongside `Unknown` when used for non-user-facing operations such as summarization or intent detection. |\n\n`Unknown` values are excluded from dashboard visualizations but appear in API and NDJSON data for completeness. The amount of `Unknown` data decreases as users upgrade to newer IDE and extension versions that send richer telemetry.\n\n## Users surfaced by server-side telemetry\n\nCopilot usage metrics combine client-side and server-side telemetry to identify active users. Users confirmed as active through server-side telemetry, but for whom no client telemetry was received, are included in your active user totals (such as `daily_active_users`). When available, these users may also appear in `totals_by_ide` (and in per-user reports this includes the most recently detected IDE and Copilot extension versions). However, other dimensional breakdowns (`totals_by_feature`, `totals_by_language_feature`, `totals_by_language_model`, `totals_by_model_feature`) and lines-of-code metrics will still be empty.\n\nThis means your top-level active user counts may be higher than the sum of users reflected in the breakdown arrays. This is expected behavior and does not indicate a data error."}