6 min read

How to Visualize Event Count in Google Analytics 4

Event count is one of the most useful metrics in GA4, but finding it requires knowing where to look. Unlike Universal Analytics, GA4 treats every interaction as an event, so visualizing event frequency matters whether you're tracking form submissions, button clicks, or custom business events.

Visualize Event Count in the GA4 Interface

The easiest way to see how often events fire is through GA4's built-in reports.

Step 1: Navigate to the Events Report

In GA4, go to Reports > Events in the left sidebar. This shows all events collected in your property ranked by count. GA4 displays the event name and the total number of times it fired during your selected date range.

javascript
// GA4 Events Report is built-in
// Navigate via UI: Reports > Events
// No API call needed — this is the native report view
Access the Events report through the GA4 dashboard

Step 2: Filter to a Specific Event

Click on any event name to drill down into that event's details. GA4 shows you the event count broken down by user properties and custom dimensions. Use the Date range selector at the top to adjust your analysis window.

javascript
// Click an event name in the Events report
// GA4 auto-generates a secondary report showing:
// - Event parameters
// - User breakdown
// - Conversion tracking status
Drill down into event details

Step 3: Create a Custom Exploration for Advanced Visualization

For more control, use Explore (top navigation). Create a new blank exploration, add eventCount as your metric, eventName as a dimension, and adjust your visualization type to bar chart or table. This lets you compare event counts side-by-side across multiple events.

javascript
// In GA4 Explore:
// 1. Click Explore > Blank exploration
// 2. Metric: eventCount
// 3. Dimension: eventName
// 4. Visualization: Bar chart or Table
// 5. Run the report
Create a custom exploration for event count visualization
Watch out: The Events report only shows events with at least 1 occurrence. If your event isn't appearing, check that it's actually being sent by using Debug View (top right corner).

Query Event Count Programmatically with the Reporting API

To pull event count data into your own dashboard or application, use the Google Analytics Reporting API.

Step 1: Set Up Authentication with a Service Account

Create a service account in Google Cloud Console and download the JSON key file. Install the googleapis npm package. Authenticate using the service account with read-only analytics scope.

javascript
const { google } = require('googleapis');

const auth = new google.auth.GoogleAuth({
  keyFile: '/path/to/service-account-key.json',
  scopes: ['https://www.googleapis.com/auth/analytics.readonly']
});

const analyticsreporting = google.analyticsreporting({
  version: 'v4',
  auth
});
Authenticate with GA4 using a service account

Step 2: Build a Report Request for Event Count

Call reports.batchGet() with your property ID, date range, and metrics. Use eventCount as your metric and eventName as a dimension to break down counts by event. Order the results by count descending to see your most-fired events first.

javascript
const request = {
  reportRequests: [
    {
      viewId: '123456789',
      dateRanges: [
        {
          startDate: '2026-01-01',
          endDate: '2026-03-26'
        }
      ],
      metrics: [
        {
          expression: 'eventCount'
        }
      ],
      dimensions: [
        {
          name: 'eventName'
        }
      ],
      orderBys: [
        {
          fieldName: 'eventCount',
          sortOrder: 'DESCENDING'
        }
      ],
      pageSize: 100
    }
  ]
};

analyticsreporting.reports.batchGet({ requestBody: request });
Request event count broken down by event name

Step 3: Parse and Visualize the Response

The API returns rows with dimensions: [eventName] and metrics: [eventCount]. Map through the rows to extract event names and counts, then pass to Chart.js or your charting library of choice.

javascript
analyticsreporting.reports.batchGet({ requestBody: request }, (err, response) => {
  if (err) {
    console.error('API error:', err);
    return;
  }

  const report = response.data.reports[0];
  const rows = report.data.rows || [];

  const eventData = rows.map(row => ({
    eventName: row.dimensions[0],
    count: parseInt(row.metrics[0].values[0])
  }));

  console.log('Event counts:', eventData);
  // Pass to Chart.js or D3 for visualization
});
Parse API response and extract event counts
Tip: Use orderBys: { fieldName: 'eventCount', sortOrder: 'DESCENDING' } to get the most-fired events first. Without sorting, results may be in arbitrary order.

Filter Event Count by User Segments

Sometimes you need event counts for only a specific segment of users.

Step 1: Add Dimension Filters to Narrow Your Results

In your batchGet() request, add dimensionFilterClauses to filter events. For example, filter to count events only from mobile users, users in a specific country, or those with a particular property. This narrows your event count to meaningful segments.

javascript
const request = {
  reportRequests: [
    {
      viewId: '123456789',
      dateRanges: [{ startDate: '2026-01-01', endDate: '2026-03-26' }],
      metrics: [{ expression: 'eventCount' }],
      dimensions: [{ name: 'eventName' }],
      dimensionFilterClauses: [
        {
          operator: 'AND',
          filters: [
            {
              dimensionName: 'deviceCategory',
              operator: 'EXACT',
              expressions: ['mobile']
            }
          ]
        }
      ]
    }
  ]
};

analyticsreporting.reports.batchGet({ requestBody: request });
Count events only from mobile device users
Watch out: The Reporting API v4 has a 100k row limit per request. If you have thousands of events, paginate using pageToken from the response.

Common Pitfalls

  • Confusing 'eventCount' (total event firings) with 'users' (unique users) — GA4 reports both, but they measure different things.
  • Relying on Debug View for event counts — it's real-time but not for actual analytics. Use the Events report or API for definitive counts.
  • Missing events because GA4 doesn't display events with zero occurrences — check Debug View if an event you're tracking doesn't appear in reports.
  • Using an old Universal Analytics property ID instead of a GA4 property ID — GA4 IDs are numeric; UGA properties have alphanumeric IDs.

Wrapping Up

You now know how to visualize event counts in GA4 both through the dashboard and programmatically via the Reporting API. Whether you're doing a quick check in the Events report or pulling counts into a custom dashboard, event count is your foundation for understanding how often key interactions happen. If you want to track and visualize event counts automatically across multiple tools—GA4, Mixpanel, Amplitude, PostHog, and more—Product Analyst can help.

Track these metrics automatically

Product Analyst connects to your stack and surfaces the insights that matter.

Try Product Analyst — Free