Dimensions and metrics in GA4 (what you need to know)
Understand the difference between dimensions and metrics in Google Analytics 4. Learn about custom dimensions, limits, and how to use them effectively.
Dimensions and metrics are the building blocks of every GA4 report. Understanding what they are and how to use , especially custom ones, is essential for getting real insights from your data.
Let me break this down.
The basics
| Type | What it is | Examples |
|---|---|---|
| Dimension | Describes your data (text/category) | Country, Page path, Device type |
| Metric | Measures your data (number) | Users, Sessions, Conversions |
Think of it this way:
- Dimensions answer: "What is it?"
- Metrics answer: "How much?"
Built-in vs custom
GA4 provides many dimensions and metrics out of the box. But you can also create custom ones for data specific to your business.
Built-in dimensions (examples)
| Category | Dimensions |
|---|---|
| User | Country, City, Age, Gender |
| Session | Source, Medium, Campaign |
| Page | Page path, Page title, Content group |
| Device | Device category, Browser, OS |
| Event | Event name |
Built-in metrics (examples)
| Category | Metrics |
|---|---|
| User | Total users, Active users, New users |
| Session | Sessions, Engaged sessions |
| Engagement | Engagement rate, Average engagement time |
| Events | Event count, Key events |
| Revenue | Total revenue, Purchase revenue |
Custom dimensions: when you need them
Use custom dimensions when you need to track information that GA4 doesn't collect by default.
Common use cases
| Custom dimension | What it tracks |
|---|---|
| User role | Logged-in user type (admin, customer, guest) |
| Content author | Who wrote the article |
| Product category | Beyond standard e-commerce |
| Membership level | Free, Pro, Enterprise |
| A/B test variant | Which test variation they saw |
Types of custom dimensions
| Scope | Applies to | Use for |
|---|---|---|
| Event-scoped | Single event | Button clicked, form submitted, page attribute |
| User-scoped | All events from user | User type, subscription status |
| Item-scoped | E-commerce items | Product attributes beyond defaults |
Creating custom dimensions
Step 1: Send the parameter
First, you need to send the data with your events.
Via gtag.js:
gtag('event', 'page_view', {
'content_author': 'Antoine',
'content_type': 'blog_post'
});
Via GTM: Add event parameters to your GA4 Event tag.
Step 2: Register in GA4
GA4 won't report on parameters until you register them.
- Go to Admin → Custom definitions
- Click Create custom dimension
- Fill in:
- Dimension name: What you'll see in reports (e.g., "Content Author")
- Scope: Event, User, or Item
- Event parameter: The exact parameter name you're sending (e.g.,
content_author)
- Click Save
Step 3: Wait and verify
- New dimensions appear in reports within 24-48 hours
- Historical data before registration isn't retroactive
- Test in DebugView to confirm data is coming through
Custom metrics
Custom metrics work similarly but for numeric values.
Common use cases
| Custom metric | What it measures |
|---|---|
| Reading time | Time spent reading content |
| Score | Game scores, quiz results |
| Stock level | Inventory quantity |
| Custom revenue | Non-standard revenue types |
Creating custom metrics
- Go to Admin → Custom definitions → Custom metrics
- Click Create custom metric
- Fill in:
- Metric name: Display name
- Scope: Event
- Event parameter: Parameter name
- Unit of measurement: Standard, Currency, Distance, etc.
- Click Save
Limits to know
| Type | Standard GA4 | GA4 360 |
|---|---|---|
| Event-scoped dimensions | 50 | 125 |
| User-scoped dimensions | 25 | 100 |
| Item-scoped dimensions | 10 | 25 |
| Event-scoped metrics | 50 | 125 |
50 event-scoped dimensions sounds like a lot, but plan carefully. You can't delete them (only archive).
Best practices
Naming conventions
Use consistent, descriptive names:
| Good | Bad |
|---|---|
content_category | cat |
user_membership_level | level |
product_stock_status | status |
Avoid high-cardinality dimensions
High cardinality = too many unique values (500+ per day).
| High cardinality (avoid) | Better alternative |
|---|---|
| Exact timestamp | Hour buckets |
| User email | User ID |
| Full URL with parameters | Page path only |
| Session ID | Segment by behavior |
High-cardinality dimensions cause data to be grouped into "(other)" in reports.
Don't register what you don't analyze
Each custom dimension counts against your limit. Only register what you'll actually use in reports or audiences.
Send consistent values
Case matters. premium and Premium are different values. Standardize in your implementation.
Using dimensions and metrics in reports
Standard reports
You can add secondary dimensions to most reports:
- Click on a report
- Click + to add a dimension
- Select from available dimensions
Explorations
Explorations give you full flexibility:
- Create a new Exploration
- Add dimensions and metrics from the panel
- Build custom tables, funnels, or path analyses
Incompatible combinations
Sometimes a dimension and metric can't be used together (grayed out in the interface). This happens when:
- They come from different scopes
- The data model doesn't support the combination
- The exploration technique doesn't allow it
The "(not set)" problem
You'll see "(not set)" when:
- The parameter wasn't sent for that event
- Data hasn't been received yet
- The dimension is new and no data exists
Fix: Ensure your implementation always sends a value, even a default one like "none" or "unknown."
Practical examples
User membership tracking
// On login, set user properties
gtag('set', 'user_properties', {
membership_level: 'pro',
signup_date: '2024-01-15'
});
Register as user-scoped dimension.
Content categorization
gtag('event', 'page_view', {
content_category: 'tutorials',
content_author: 'Antoine',
content_length: 'long'
});
Register each as event-scoped dimension.
Custom engagement metric
// Track reading progress
gtag('event', 'reading_progress', {
article_id: 'abc123',
percent_read: 75 // Register this as custom metric
});
Next steps
Once you understand dimensions and metrics:
- Create custom events with meaningful parameters
- Build dashboards using your custom data
- Set up audiences based on custom dimensions
For a cleaner way to visualize your GA4 , including custom dimensions, try Analayer.
See your analytics clearly
Stop struggling with Google Analytics. Connect your account and get a cleaner, simpler view of your data in seconds.