6 min read

How to Monitor Engagement Rate in Google Analytics 4

Engagement Rate tells you what percentage of your sessions had meaningful interactions—clicks, scrolls, video plays, form submissions. In GA4, this metric is calculated automatically, but understanding how it's measured and setting up the right events for your business is critical for catching engagement drops early.

Finding Engagement Rate in GA4 Reports

GA4 calculates engagement rate for you automatically. The metric appears in most standard reports.

Step 1: Navigate to the Engagement Report

In GA4, go to Reports in the left sidebar, then Engagement. You'll see Engagement Rate as a primary metric alongside Sessions and Users. This is your out-of-the-box engagement metric—it counts sessions that had at least one conversion event or 10+ seconds of engagement.

javascript
// GA4 measures engagement automatically via gtag.js
// No code needed for basic engagement calculation—GA4 counts:
// 1. Sessions with duration >= 10 seconds
// 2. Sessions with at least 1 conversion event
// 3. Sessions with 2+ page views

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
Basic GA4 setup—engagement is measured automatically

Step 2: Apply Dimensions and Filters

Click the Comparison or Filters button to segment engagement by page, traffic source, device, or user cohort. For example, filter by Page Title to see which pages drive the most engagement. This helps you identify which content or features are resonating.

Step 3: Export or Set Up a Custom Dashboard

In the report view, click the Export button (top right) to download engagement data as CSV. For ongoing monitoring, create a Custom Report or use GA4's Looker Studio connector to build a real-time dashboard.

javascript
const body = {
  dateRanges: [{ startDate: '2025-01-01', endDate: '2025-03-26' }],
  metrics: [{ name: 'engagementRate' }],
  dimensions: [{ name: 'pagePath' }],
};

const response = await fetch(
  'https://analyticsreporting.googleapis.com/v4/properties/YOUR_PROPERTY_ID:runReport',
  {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${accessToken}` },
    body: JSON.stringify(body),
  }
);
const report = await response.json();
Query engagement rate by page using GA4 Reporting API
Watch out: GA4's default engagement rate includes sessions with 10+ seconds OR 1+ conversion event. If you're coming from GA Universal, note that engagement is the inverse of bounce rate.

Define Engagement Events for Your Business

GA4's default engagement logic may not match your actual business goals. Set up custom events to track the actions that matter most.

Step 1: Identify What Counts as Engagement

Before adding events, decide what engagement means for your product. For SaaS, this might be: form submission, feature button click, or pricing page view. For media, it might be: video play, article share, or 2+ minutes on page. Document these as your engagement criteria.

Step 2: Send Custom Events via gtag.js

Add gtag event calls to your site code. Each event you send will be counted toward engagement rate. Use descriptive event names and include parameters for context.

javascript
// Track a feature button click as engagement
document.getElementById('try-feature-button').addEventListener('click', () => {
  gtag('event', 'feature_button_clicked', {
    event_category: 'engagement',
    event_label: 'pricing_page',
    value: 1,
  });
});

// Track form submission
document.getElementById('signup-form').addEventListener('submit', () => {
  gtag('event', 'form_submit', {
    event_category: 'engagement',
    form_name: 'email_signup',
  });
});
Send custom engagement events to GA4

Step 3: Mark Events as Conversion Events

In GA4, go to Admin > Events and click Mark as Conversion for critical events like signups or purchases. Conversion events directly count toward engagement rate and appear in the Conversions report.

javascript
gtag('event', 'purchase', {
  transaction_id: 'T_12345',
  value: 99.99,
  currency: 'USD',
  items: [{
    item_id: 'SKU_123',
    item_name: 'Annual Plan',
    quantity: 1,
    price: 99.99,
  }],
});

// GA4 automatically counts this as both a conversion and engagement signal
GA4 conversion events boost engagement metrics
Tip: Use consistent event names across your site. GA4 is case-sensitive—feature_button_clicked and button_click will be treated as separate events.

Monitor Engagement Programmatically with Alerts

For automated monitoring, pull engagement data into your own dashboard or alerting system.

Step 1: Authenticate with GA4 Reporting API

Set up a Google Cloud service account with permission to read your GA4 property. Download the JSON key and use it to authenticate API requests. You'll need your GA4 property ID from the Admin panel.

javascript
const {BetaAnalyticsDataClient} = require('@google-analytics/data');

const analyticsDataClient = new BetaAnalyticsDataClient({
  projectId: 'YOUR_PROJECT_ID',
});

async function getEngagementData() {
  const [response] = await analyticsDataClient.runReport({
    property: `properties/YOUR_GA4_PROPERTY_ID`,
    dateRanges: [{ startDate: '7daysAgo', endDate: 'today' }],
    metrics: [{ name: 'engagementRate' }, { name: 'sessions' }],
    dimensions: [{ name: 'date' }],
  });
  return response;
}

const data = await getEngagementData();
Fetch engagement rate from GA4 using the Node.js client library

Step 2: Set Up Daily Monitoring with Alerts

Run the script daily to pull engagement data. Compare today's rate to your baseline (7-day or 30-day average). If engagement drops below your threshold, log a warning or send a Slack notification.

javascript
async function checkEngagementHealth() {
  const data = await getEngagementData();
  const latestRow = data.rows[data.rows.length - 1];
  const engagementRate = parseFloat(latestRow.metricValues[0].value);
  
  const threshold = 0.30; // Alert if below 30%
  if (engagementRate < threshold) {
    console.error(`⚠️ Engagement dropped to ${(engagementRate * 100).toFixed(1)}%`);
    // Send notification
    await sendSlackAlert(`Engagement alert: ${engagementRate}`);
  }
}

checkEngagementHealth();
Monitor engagement rate and alert on drops
Watch out: GA4's Reporting API has a limit of 100K requests per day per project. Query daily or hourly—not every minute—to stay within limits.

Common Pitfalls

  • GA4's engagement rate includes any session with 10+ seconds OR 1+ conversion event. It's not identical to other analytics tools—test your baseline expectations against your actual traffic.
  • Custom events must be defined in your gtag code AND configured in GA4 admin to count toward engagement. Adding gtag calls alone won't mark them as engagement signals.
  • Engagement rate is a session-level metric, not user-level. GA4 calculates it across all sessions in your date range, so a user with 5 engaged sessions appears as part of that engagement percentage.
  • GA4's real-time report shows engagement data with a 30-minute lag. For truly real-time monitoring, use the Reporting API and query hourly instead.

Wrapping Up

You now know how to find engagement rate in GA4 reports, define what engagement means for your product, and monitor it programmatically. Start by checking the out-of-the-box engagement report, then layer on custom events that match your business goals. If you want to track engagement automatically across all your tools and get unified alerts, Product Analyst can help.

Track these metrics automatically

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

Try Product Analyst — Free