GA4 Custom Dimensions and Metrics: How to Use Them

Emily RedmondData Analyst, EmilyticsApril 18, 2026

GA4 Custom Dimensions and Metrics: How to Use Them

By Emily Redmond, Data Analyst at Emilytics · April 2026

TL;DR: Custom dimensions are attributes (e.g., "subscription tier") you use to segment data. Custom metrics are calculated values (e.g., "revenue per user") that appear in reports. Both let you measure what matters to your business, not what Google decides to measure.


Standard GA4 reports show you traffic, users, conversions. But they don't show your business. Custom dimensions and metrics let you track the things unique to you: which customers are paying, which features are popular, which campaigns drive the highest-value users.


Custom Dimensions vs. Custom Metrics

Custom Dimensions

A custom dimension is an attribute or label attached to a user, session, or event.

Examples:

  • subscription_tier: "free", "pro", "enterprise"
  • customer_id: Your internal user ID
  • feature_used: "dashboard", "API", "webhooks"
  • utm_campaign_internal: Your campaign name
  • experiment_id: A/B test ID
  • traffic_source_detail: "organic_google", "paid_facebook", etc.

Use custom dimensions to segment and filter your data. "Show me conversion rate by subscription tier" or "Which features do paying users use most?"

Custom dimensions come from event parameters. When you fire an event, you include a parameter:

gtag('event', 'page_view', {
  subscription_tier: 'pro',
  customer_id: 'cust_12345'
});

Then you create a custom dimension in GA4 that maps subscription_tier to the dimension name.

Custom Metrics

A custom metric is a calculated value that aggregates across events.

Examples:

  • total_revenue_per_user: Sum of all purchase values for each user
  • form_completion_rate: (Form submissions / Form starts) × 100
  • pages_per_session: Average pages viewed in each session
  • time_between_signups: Days between user signup and first purchase

Use custom metrics to measure aggregate performance. "What's the average revenue per user by traffic source?" or "Which pages have the highest engagement rate?"

Custom metrics are calculated from standard metrics (counts, sums) or custom dimensions.

AspectCustom DimensionCustom Metric
What It IsAttribute or labelCalculated value
SourceEvent parametersAggregations of metrics
Used ForSegmentation, filteringMeasurement, calculation
Examplesubscription_tier: "pro"revenue_per_user: 87.5
How It Shows UpIn dimension rowsIn metric columns

How to Create a Custom Dimension

Step 1: Send the Parameter in Your Events

First, your events must include the data. You can't create a custom dimension from nothing.

gtag('event', 'purchase', {
  transaction_id: 'txn_12345',
  value: 99.99,
  currency: 'USD',
  subscription_tier: 'pro',  // <-- This is the parameter
  customer_lifetime_value: 450.00
});

Or, if you want the dimension on every event (not just one), set it as a user property:

gtag('set', {'user_properties': {
  'subscription_tier': 'pro',
  'customer_lifetime_value': '450.00'
}});

Once that's set, every subsequent event from that user includes the property.

Step 2: Create the Custom Dimension in GA4

  1. Go to Admin (bottom left)
  2. Under "Data collection and modification," click Custom definitions
  3. Click Create custom dimension
  4. Fill in:
    • Dimension name: e.g., "Subscription Tier"
    • Scope:
      • User (if it's a user property that stays the same)
      • Event (if it's specific to one event)
      • Item (if it's attached to a product or item in an ecommerce event)
    • Event parameter / User property: Match the name of the parameter you sent (e.g., subscription_tier)
    • Description: "Paid tier level (free, pro, enterprise)"
  5. Click Save

GA4 backfills the dimension (takes a few hours) and now it appears in all your reports.

💡 Emily's take: I once spent two hours debugging why a custom dimension wasn't working, only to realize the event parameter had a typo. subscription_type in the events, but subscription_tier in the custom dimension definition. They didn't match, so GA4 couldn't map the data. Check your parameter names twice.


How to Create a Custom Metric

Custom metrics are calculated, not sent from your events. You define the calculation in GA4.

  1. Go to AdminCustom definitions
  2. Click Create custom metric
  3. Fill in:
    • Metric name: e.g., "Revenue Per User"
    • Description: "Total revenue divided by active users"
    • Measurement unit: "Currency" or "Standard"
    • Formula:
      • Select two metrics to combine
      • Example: SUM(purchase_value) / COUNT(DISTINCT user_id)
  4. Click Save

Now your custom metric appears in reports. Example use case: "What's the revenue per user by traffic source?" You'd create a report with traffic source as a dimension and "Revenue Per User" as the metric.

GA4's metric formulas are limited compared to raw SQL, but they cover most needs. If you need complex metrics, export to BigQuery and write SQL.


Common Custom Dimensions to Track

For All Businesses

DimensionWhat It IsWhy It Matters
Customer IDYour internal user IDLinks GA4 to your CRM; enables audience export
User Type"Logged in user", "Anonymous", "Admin"Segment by known vs. unknown users
Page Category"Blog", "Product", "Pricing", "Documentation"Understand which sections drive value
Content Type"Blog post", "Video", "Whitepaper", "Product"See which content formats convert
Experiment IDA/B test IDTrack performance by test variant

For SaaS

DimensionWhat It IsWhy It Matters
Subscription Tier"Free", "Pro", "Enterprise"Measure engagement by plan
Account Owner Status"Owner", "Collaborator", "Viewer"See which roles convert
Days Since Signup1, 7, 30, 90, 180, 365+Analyze onboarding funnel
Feature Enabled"API access", "Custom domains", etc.See which features drive stickiness

For Ecommerce

DimensionWhat It IsWhy It Matters
Product Category"Clothing", "Electronics", "Home"See which categories convert
Product Price Range"<$50", "$50-100", ">$100"Measure AOV by price point
Loyalty Member Status"VIP", "Member", "Guest"Track engagement by loyalty tier
Repeat Customer"Yes", "No"Segment new vs. returning customers

Common Custom Metrics to Track

Revenue and Value

  • Revenue Per Session: Total revenue / session count
  • Revenue Per User: Total revenue / unique users
  • Average Order Value: Total revenue / order count
  • Customer Lifetime Value (CLV): Total revenue per customer (if tracked)

Engagement

  • Pages Per Session: Page views / sessions
  • Average Session Duration: Total time / session count
  • Scroll Depth: Average scroll percentage
  • Form Completion Rate: Forms submitted / forms started

Acquisition and Conversion

  • Cost Per Acquisition (CPA): Ad spend / conversions (if imported)
  • Conversion Rate: Conversions / sessions
  • Lead Quality: High-value conversions / total conversions

Using Custom Dimensions in Reports

Once you've created a custom dimension, it appears in all your reports. You can:

Filter by Custom Dimension

  1. Go to any report
  2. Click Add filter → Select your custom dimension
  3. Choose values (e.g., "Subscription Tier" = "pro")
  4. Apply

Now the report shows only data for pro subscribers.

Segment by Custom Dimension

  1. Create a report in Explorations
  2. Add your custom dimension as a dimension
  3. Add a metric (users, conversions, revenue)
  4. GA4 breaks down the metric by your custom dimension values

Example: Rows show "free", "pro", "enterprise"; columns show user count, conversion rate, revenue.

Compare Custom Dimensions

  1. Create a report with two dimensions (e.g., "Traffic Source" and "Subscription Tier")
  2. GA4 shows a table with combinations (e.g., "Organic + Free", "Paid + Pro")
  3. Compare metrics across combinations

Data Latency and Backfilling

New Custom Dimensions

When you create a custom dimension, GA4 backfills existing data (takes a few hours). You can then see historical data segmented by that dimension.

However, if the parameter was never sent in your events, there's no data to backfill. Example: If you add a custom dimension for premium_feature_used but you just started sending that parameter yesterday, you can only see data from the last day, not the last month.

Pro tip: Decide what you want to track, then start sending the parameters. Once you've accumulated data, create the custom dimension. Or create it retroactively—GA4 will backfill what it can.

Custom Metric Latency

Custom metrics are calculated on-demand. Some reports show custom metrics with a small delay (a few minutes). This is normal.


Limits and Best Practices

Limits

  • Up to 25 custom dimensions per property
  • Up to 25 custom metrics per property
  • Dimension value max length: 100 characters
  • Metric calculation: Limited to basic operations (sum, count, max, min, divide)

Best Practices

  1. Name clearly: "subscription_tier" beats "st" or "tier"
  2. Use consistent values: "free", "pro", "enterprise" (not "Free", "PRO", "ent")
  3. Track what matters: Don't create dimensions you won't analyze
  4. Document it: Keep a list of what each dimension means
  5. Avoid PII: Don't send email, phone, or user names as custom dimension values
  6. Plan ahead: Decide what you'll track before you start sending data

Frequently Asked Questions

Q: Can I change a custom dimension after I create it? A: You can edit the name and description, but not the event parameter it maps to. If you need to change what parameter it tracks, create a new dimension.

Q: Why isn't my custom dimension showing data? A: Most likely the event parameter name doesn't match exactly. Custom dimensions are case-sensitive. "subscription_tier" and "subscription_Tier" are different.

Q: How long until my custom dimension shows in reports? A: A few hours for backfilling. New events that include the parameter show up within 30 minutes.

Q: Can I use custom metrics in audiences? A: Not directly. You can create audiences based on custom dimensions, but not custom metrics. If you need to segment by a calculated value, use BigQuery.

Q: What if I want to track something across multiple events? A: Use a user property (set with gtag('set', {})) instead of an event parameter. User properties persist and apply to all events from that user.


The Bottom Line

Custom dimensions and metrics are how you make GA4 yours. Standard GA4 shows traffic and conversions; custom dimensions and metrics show your business—which customers are valuable, which features drive engagement, which content converts.

Start simple: one custom dimension (maybe "customer_tier" or "experiment_id"), one custom metric (maybe "revenue_per_user"). Get comfortable, then expand.

For advanced segmentation, see GA4 Filters and Segments: How to Slice Your Data.


Emily Redmond is a data analyst at Emilytics — the AI analytics agent that watches your GA4, Search Console, and Bing data around the clock so you never miss what matters. 8 years of experience helping founders and growth teams turn data noise into clear decisions. Say hi →