Skip to main content

User Analytics for ChatGPT Enterprise and Edu

Monitor adoption, engagement, and usage trends across your workspace in ChatGPT Enterprise

Updated this week

General Overview

What is the User Analytics dashboard in ChatGPT Enterprise and Edu?

The revamped User Analytics dashboard can be accessed in the Manage workspace console in the Analytics tab. It provides more comprehensive data on usage, adoption, and engagement than the original analytics tab.

This improved dashboard gives Admins a high-level view of how ChatGPT is being used across your organization—use it to track adoption and engagement, understand usage patterns for top tools and GPTs, and identify use cases and user trends.

Who can access it?

Only ChatGPT Enterprise owners and admins can access the User Analytics dashboard. Users in a Member role do not see organization-level metrics.

What types of usage & metrics are displayed?

The User Analytics dashboard shows high-level user and GPT usage across your workspace. Additionally, it allows you to export weekly and monthly User Engagement and GPT Engagement reports that you can merge with other data sources for more advanced insights.

What is the frequency and timing of data refresh?

The data refreshes at least once every 24 hours. Use the last updated date in the dashboard to confirm.

How do I export data from the analytics page?

An “Export” button in the top-right corner allows you to download data in monthly or weekly format, in CSV format, for further analysis.

Is this the same as the Compliance API?

No, the Compliance API is not an analytics feature.

It provides access to logs and metadata from your ChatGPT Enterprise workspace that you can consume directly or via eDiscovery, DLP, and SIEM tools, and is designed for Workspace Owners who need to consume the raw inputs and outputs from ChatGPT for compliance, security, and data privacy use cases..

The Compliance API returns user inputs and outputs, including system generated / injected messages that ChatGPT writes to itself (e.g. user wants you to be more concise).

Metrics and Dimensions

Overview Tab

Unique Active Users

This metric indicates the number of distinct users who have logged in and sent at least one message during the selected timeframe. It’s a key measure of adoption and retention.

Total Messages Sent

This is the overall count of user-initiated messages (whether to ChatGPT or custom GPTs), showing general engagement volume. This is measured by models used.

GPT Messages Sent

This metric counts messages specifically sent to custom GPTs, revealing how much your organization leverages custom GPT instances.

Tool Messages Received

This covers messages or “product responses” tied to integrated tools (e.g., DALL·E, Canvas, Data Analysis). Tool outputs are tracked since user inputs are not clearly identifiable.

Users Tab

Headline metrics (Seats, Claimed, Active, Pending)

These appear at the top of the Users tab, defined below.

Seats Purchased

The total number of licenses procured.

Claimed Seat

The count of users who have accepted their license by logging in.

Active Users

The number of users actively sending at least one message during the timeframe.

Pending Invites

The number of outstanding invitations that have not been accepted.

Users Table

Each row shows a user’s name/email, total messages, GPT messages, and tool messages.

User's Name/Email

Identifies the user.

Total Messages

The overall number of messages sent by the user.

GPT Messages

The count of messages generated by GPT.

Tool Messages

The count of messages generated by tools.

Clarification

GPT messages and Tool messages are tracked separately and do not sum to Total Messages. In other words, “Tool messages” do not roll up under “Total messages”.

How can I find the most active and least active users?

To find the most active users you can sort by usage (most active or least active) or search for a specific user. This can help influence identification of champions or opportunities for training.

Please note a user with a changed email may appear as a new record. In other words, if the user has a new email address they are an entirely separate record / row.

How do I track individual users’ usage over time?

You can see a user’s total messages in the “Users” tab. If you need historical trends, export data periodically.

GPTs Tab

Headline metrics (Total GPTs, GPTs Created This Month, GPTs Active)

These appear at the top of the GPTs tab.

Total GPTs

This is the total number of custom GPTs in your workspace.

GPTs Created This Month

This metric shows how many new GPTs were created in the selected timeframe.

GPTs active

This indicates how many GPTs had at least one user message during the chosen period.

GPTs Table

The table displays each GPT’s name, creator, total messages, and active users.

Common GPT-Related Questions

Admins can sort to find the top GPTs by usage or identify GPTs that had no usage in the timeframe.

Date ranges & Filtering

Choosing a time range

Owners/Admins can monthly views using the date picker. For the data export it is weekly or monthly.

Why don’t I see today’s data?

The data refreshes every 1–24 hours, typically landing within a 6–12 hour range, with a 24-hour SLA. Use the last updated date in the dashboard to confirm.

Comparisons to previous periods

User Analytics displays the percentage increase or decrease when comparing the selected period to its prior equivalent (e.g., +11% month-over-month).

How do I compare this month’s active users to last month?

Select the monthly view and check the top-level active user metric or the percentage increase/decrease.

Data discrepancies & troubleshooting

Why does User Analytics differ from the Compliance API logs?

The Compliance API reflects raw logs (input/output) for security and compliance purposes, whereas User Analytics aggregates usage data.

Why does the sum of GPT + tool messages not equal total messages?

Some messages are standard ChatGPT interactions (not tool or GPT-specific), so they’re in “Total” but not in either subset.

Why am I seeing negative or zero values?

A newly created GPT with no usage or a sharp drop between periods can yield very low or negative percentage changes.

Interpreting the graphs

Stacked bars can represent token categories, while line charts show daily trends. Tooltips reveal date-specific counts.

Latency or missing data

User Analytics may be delayed by roughly 24 hours.

System errors or not seeing the dashboard

Owners/Admins should confirm they have the correct ChatGPT Enterprise entitlement. If the tab is missing or errors persist, open a conversation with OpenAI Support and include your workspace ID in your details.

Limitations

Can you schedule data exports?

No, but we may offer this in the future.

What limitations are there for customers who have Data residency for ChatGPT?

These customers will not be able to see GPT messages on the Overview tab, the GPT tab itself, or be able to export / download the GPT report

Is real-time data available?

Currently no; data refresh is daily rather than real-time. The data refreshes at least once every 24 hours. Use the last updated date in the dashboard to confirm.

Can I drill down by department or segment?

Not in the initial release. More detailed segmentation may require exporting data and combining with external data sources.

Can I view historical data beyond X months?

Data retention may limit how far back you can go. You can go back 12 months.

Can I customize the visuals or dashboards?

Not currently. For more advanced visualizations, you can export the data and use external tools.

Adoption & engagement best practices

How to increase adoption based on these metrics?

Teams often conduct training, “office hours,” or champion successful GPT use cases to boost adoption. A best practice to increase adoption is to encourage webinar and training attendance.

How to interpret trends (spikes or drops)?

Look for factors like user onboarding surges, feature releases, or holiday seasons impacting usage.

Exporting data for presentations

We recommend using the exported data which you can transform into your own charts, dashboards, or reports.

Data Export - column definitions

User export – column definitions

⚠️ Every column name listed below in this section, except last_day_active, is either a metric in period, or a dimension as of period end.

Column name

Definition

cadence

The time granularity of a given data export: Monthly, Weekly, Partial Monthly, Partial Weekly. Weeks are calculated from midnight UTC Sunday through 23:59:59 UTC Saturday. Partial period represent the current (and incomplete) period. Some pre-computed fields are not available for partial periods.

period_start

The starting date for a given report

period_end

The ending date for a given report. Note that this date will be in the future for partial periods

account_id

The account_id associated with a given report

public_id

The public_id associated with a given user

name

The name associated with a given user. Note that this will be blank for pending users

email

The email address associated with a given user

role

User-entered role for a given user

user_role

Denotes if a user is a user, admin, or owner as of period end**

department

User-entered department for a given user

groups

A map object containing all groups a user is part of as of period end**

user_status

Denotes if a user is enabled, deleted, or pending as of period_end**

created_or_invited_date

The date the user’s account was provisioned for enabled or deleted users. For pending users, this is the earliest, non-expired invitation a user received.

is_active

true if the user has ever sent at least one message in the given period

first_day_active_in_period

The first day a user is active (e.g. sent a message) in the given period

last_day_active_in_period

The last day a user is active (e.g. sent a message) in the given period

last_day_active

The last day a user is active (e.g. sent a message) in this, or any prior period

messages

Overall number of messages sent by the user in the period

messages_rank

Relative position of the user in a list sorted by messages (1 = most)

model_to_messages

JSON map showing {model_name: message_count} (e.g., {"o3": 5, "4o": 16})*

gpt_messages

Total messages the user sent to any custom GPT in the period

gpts_messaged

Number of distinct custom GPTs the user messaged in the period*

gpt_to_messages

JSON map of {gpt_id: message_count} for each custom GPT the user messaged*

tool_messages

Count of messages that invoked a tool (e.g., Deep research, Search, Image Gen, Canvas)

tools_messaged

Number of distinct tools the user invoked*

tool_to_messages

JSON map of {tool_name: message_count} (e.g., {"Image Gen": 6, "Deep research": 2})*

project_messages

Messages the user sent inside any Project

projects_messaged

Number of distinct Projects the user contributed to*

project_to_messages

JSON map of {project_id: message_count} for each Project*

projects_created

Total Projects the user created

*Denotes that this metric is not available for partial periods. Custom aggregations (distinct counts, map objects) are only pre-computed at fixed time intervals (e.g. weekly and monthly) and are not available for partial period reports.

**Or the latest available date for partial periods

Tools referenced by the full user export

(These names populate inside tool_to_messages when you run a complete-period export.)

  • Canvas

    • Used to edit documents and code in a structured interface. Messages represent interactions (creation, querying, deletion) with Canvas

  • Code

  • DALL·E

    • Used to generate images from prompts. Messages represent image generation or variation

  • Data analysis

    • Used to inspect, analyze, and visualize structured data (e.g. csvs). Messages represent data manipulation– upload, inspect, filter, plot, or summarize

  • Deep research

    • Used to run interactive multi-part queries, often using other tools (such as Retreival). Messages represent deep research task launch and intermediate steps (e.g. search, analyze, report)

  • GPT Editor

    • Used to modify or configure custom GPTs. A message represents edit actions (e.g name change, profile picture upload)

  • GPT External API Actions

    • Used to execute external API calls via agent tools. A message represents calls to external APIs

  • Image Gen

    • Used to generate or edit imaged directly in ChatGPT. A message represents image creation or editing

  • Legacy search

    • Used to search over an internal knowledge base. A message represents documents being searched, found, or opened. Note: Legacy Search and Search execute similar functionality, but are via different infrastructure and methods– at present, “legacy” is a bit of a misnomer and this tool is still used

  • Memory

    • Used to store long-term, structured memories about a user. A message represents a memory being written, read, updated, or deleted

  • Retrieval

    • Used to search internal knowledge. A message represents a query being made or when sources are injected into context

  • Search

    • Used to search over internal or external sources. A message represents any search-related activity

  • Tasks

    • Used to execute a multi-step plan. A message represents a task (or subtask) start, update, or completion

(If you run a full-period export, these names will populate inside tool_to_messages.)

GPT export – column definitions

Tools represented in the GPT report: None.

(The file tracks GPT activity only; no per-tool counts or names appear.)

Column name

Definition

cadence

The time granularity of a given data export: Monthly, Weekly, Partial Monthly, Partial Weekly. Weeks are calculated from midnight UTC Sunday through 23:59:59 UTC Saturday. Partial period represents the current (and incomplete) period. Some pre-computed fields are not available for partial periods.

period_start

The starting date for a given report

period_end

The ending date for a given report. Note that this date will be in the future for partial periods.

account_id

The account_id associated with a given report

gpt_id

The id of a given custom GPT

gpt_name

The name of a custom GPT as of period end**

config_type

The status of a custom GPT as of period end**. Live = published, Draft = created but not published.

gpt_description

The description of a custom GPT as of period end**

gpt_url

The URL of a custom GPT

gpt_creator_public_id

The public id associated with the creator of a custom GPT

is_active

Indicates that someone messaged this custom GPT during the period

first_day_active_in_period

The earliest day a custom GPT was active in the period

last_day_active_in_period

The latest day a custom GPT was active in the period

messages_workspace

Count of messages sent to this GPT within your workspace. (Official GPTs can exist in many workspaces, so this figure is workspace-specific)

unique_messagers_workspace

Count of individual users in the workspace who sent ≥ 1 message to this GPT in a given time period*

gpt_creator_email

The email associated with the creator of a custom GPT

*Denotes that this metric is not available for partial periods. Custom aggregations (distinct counts, map objects) are only pre-computed at fixed time intervals (e.g. weekly and monthly) and are not available for partial period reports.

**Or the latest available date for partial periods

Did this answer your question?