14 KiB
Custom Metrics & Calculated Metrics Complete Guide
Understanding GA4 Metrics
Metrics in GA4 are measurements or counts of user activity. They answer "How much?" or "How many?" questions.
Built-in GA4 Metrics (Examples):
- users
- sessions
- events
- pageViews
- revenue
- conversions
Custom Metrics extend GA4 with business-specific numerical tracking.
Standard Custom Metrics
What Are Custom Metrics?
Custom metrics track numerical values associated with events. Unlike custom dimensions (which are categorical), metrics are numbers that aggregate and calculate.
Use custom metrics for:
- Quantities (items purchased, users in queue)
- Durations (video watch time, form fill time)
- Ratings (user satisfaction score, product rating)
- Percentages (completion rate, engagement rate)
- Monetary values (order value, customer lifetime value)
- Any numerical KPI
Custom Metric Implementation
Step 1: Send Numerical Parameter in Event
// Video completion tracking
gtag('event', 'video_watched', {
'video_title': 'GA4 Basics',
'video_duration': 1200, // seconds - METRIC
'minutes_watched': 18, // METRIC
'completion_percentage': 85 // METRIC
});
// E-commerce order tracking
gtag('event', 'purchase', {
'transaction_id': 'TXN_123',
'items': [...]
// Note: 'value' parameter in purchase is auto-metric
'avg_item_price': 45.50, // METRIC
'discount_amount': 15.00 // METRIC
});
// Form completion tracking
gtag('event', 'form_submit', {
'form_name': 'contact',
'form_fields_filled': 8, // METRIC
'time_to_submit': 120, // seconds - METRIC
'form_abandonment_rate': 0 // METRIC
});
Important: Send as numerical values, not strings.
// CORRECT
'duration': 120 // Number
// WRONG
'duration': '120' // String - will be treated as dimension
'duration': '120s' // String - invalid
Step 2: Verify in DebugView
- GA4 Admin → DebugView
- Trigger event with metric parameter
- Click event in left panel
- See parameter in event details
- Confirm value is numerical
DebugView Example:
Event: video_watched
Parameters:
- video_title: "GA4 Basics"
- video_duration: 1200
- minutes_watched: 18
- completion_percentage: 85
Step 3: Register Custom Metric
- Admin → Data Display → Custom Definitions
- Click "Create Custom Metric" button
- Fill the form:
| Field | Entry | Example |
|---|---|---|
| Metric Name | Display name | "Video Duration (seconds)" |
| Type | Select "Standard" | Standard |
| Measurement Unit | (Optional) unit for reporting | "seconds" |
| Event Parameter | Parameter name | "video_duration" |
| Description | What it tracks | "Length of video watched in seconds" |
- Click Save
- Wait 24-48 hours for data population
Step 4: Use in Reports
After 24-48 hours:
- Analytics → Reports → Explorations
- Create Free-form Exploration
- Drag dimensions and metrics to canvas
- Add "Video Duration (seconds)" metric
- Analyze average, sum, or other aggregations
Example Report:
Video Title Average Duration Total Views
====================================================
GA4 Basics 900 seconds 250
Advanced Analytics 1800 seconds 180
Debugging Guide 450 seconds 320
Calculated Metrics
What Are Calculated Metrics?
Calculated metrics are derived metrics created from mathematical formulas using existing metrics. They don't require new event implementation - only calculation.
Use calculated metrics for:
- Ratios (revenue per user, conversion rate)
- Differences (abandonment = views - purchases)
- Complex formulas (LTV, efficiency scores)
- Normalized metrics (revenue per session)
Calculated Metric Examples
Example 1: Revenue Per User
Name: Revenue per User
Formula: revenue / users
Result: Shows how much revenue each user generates
Example 2: Conversion Rate
Name: Conversion Rate %
Formula: (conversions / sessions) * 100
Result: Percentage of sessions with conversion
Example 3: Bounce Rate (Inverse)
Name: Engagement Rate
Formula: (engagedSessions / sessions) * 100
Result: Percentage of engaged sessions
Example 4: Add-to-Cart Rate
Name: Add to Cart Rate
Formula: add_to_cart / view_item
Result: How many cart adds vs product views
Example 5: Revenue Per Customer
Name: Average Order Value
Formula: totalRevenue / transactions
Result: Average amount per transaction
Available Metrics in Formulas
Standard GA4 metrics available for calculated metrics:
User Metrics:
users- Total unique usersnewUsers- First-time usersactiveUsers- Users with engagement/conversion
Session Metrics:
sessions- Total sessionssessionsPerUser- Average sessions per userengagementRate- Engaged sessions percentage
Event Metrics:
eventCount- Total eventsengagements- Engaged sessionsengagementDuration- Total engagement time seconds
Conversion Metrics:
conversions- Key event countconversionValue- Total key event value
Ecommerce Metrics:
purchaseRevenue- Total revenuetransactions- Number of purchasesitemsViewed- Total products vieweditemsPurchased- Total items sold
Custom Metrics:
- Any custom metric created
Calculated Metric Formula Syntax
Basic Operators:
Addition: metric1 + metric2
Subtraction: metric1 - metric2
Multiplication: metric1 * metric2
Division: metric1 / metric2
Parentheses: (metric1 + metric2) / metric3
Example Formulas:
// Simple division
revenue / users
// Multiplication
revenue * 100
// Complex formula with parentheses
(conversions / sessions) * 100
// Multi-step calculation
(purchaseRevenue - cost) / transactions
// Using custom metrics
custom_metric_1 / custom_metric_2
Creating Calculated Metric: Step-by-Step
Scenario: Create "Revenue Per Session" Metric
-
Admin → Data Display → Custom Definitions
-
Click "Create Custom Metric" button
-
Fill form:
| Field | Entry |
|---|---|
| Metric Name | "Revenue per Session" |
| Type | Select Calculated |
| Formula | revenue / sessions |
-
Click Save
-
Calculated metrics populate immediately (no 24-48 hour wait)
-
Use in reports right away
Using Calculated Metric in Reports
- Analytics → Reports → Explorations
- Create Free-form Exploration
- Add dimensions
- Add metrics (including new calculated metric)
- View results
Example Report Using "Revenue per Session":
Traffic Source Revenue per Session
============================================
google / organic $15.50
direct / (none) $8.20
facebook / referral $12.00
Metric Type Comparison
Standard Metrics vs Calculated Metrics
| Aspect | Standard | Calculated |
|---|---|---|
| Implementation | Requires event code | No code needed |
| Delay | 24-48 hours | Immediate |
| Data Source | Event parameters | Existing metrics |
| Updates | As new events arrive | Real-time calculation |
| Example | video_duration |
revenue / users |
| Quota | 50 per property | 5 per property |
When to Use Each Type
Use Standard Custom Metric when:
- Tracking new numerical data
- Need to capture value at event time
- Value must be sent from client/server
Use Calculated Metric when:
- Combining existing metrics
- Want ratio or percentage
- Mathematical derivation from existing data
Practical Custom Metrics Examples
Example 1: Video Analytics Metrics
Standard Custom Metrics:
gtag('event', 'video_watched', {
'video_title': 'GA4 101',
'video_duration_seconds': 1200, // Custom metric
'minutes_watched': 18, // Custom metric
'completion_percentage': 85 // Custom metric
});
Admin Registration:
- Metric: "Video Duration (seconds)" = video_duration_seconds
- Metric: "Minutes Watched" = minutes_watched
- Metric: "Completion %" = completion_percentage
Calculated Metrics:
Name: Video Watch Rate
Formula: (minutes_watched / video_duration_seconds) * 100
Result: Percentage of video watched
Example 2: SaaS Trial Conversion Metrics
Standard Custom Metrics:
gtag('event', 'trial_signup', {
'trial_length_days': 14, // Custom metric
'users_on_team': 3, // Custom metric
'data_imported_count': 5 // Custom metric
});
gtag('event', 'trial_to_paid', {
'days_on_trial': 7, // Custom metric
'upsell_offer_price': 99.99 // Custom metric
});
Admin Registration:
- Metric: "Trial Length (days)"
- Metric: "Team Size"
- Metric: "Data Imported"
- Metric: "Trial Duration (days)"
- Metric: "Offer Price ($)"
Calculated Metrics:
Name: Trial to Paid Rate
Formula: trial_to_paid / trial_signup
Name: Average Trial Length
Formula: trial_length_days / trial_signup
Name: Revenue per Trial
Formula: (upsell_offer_price * trial_to_paid) / trial_signup
Example 3: E-commerce Metrics
Standard Custom Metrics:
gtag('event', 'purchase', {
'transaction_id': 'TXN_123',
'value': 299.99,
'num_items': 3, // Custom metric
'discount_amount': 30.00, // Custom metric
'profit_margin': 0.40 // Custom metric
});
Admin Registration:
- Metric: "Items per Order"
- Metric: "Discount Amount ($)"
- Metric: "Profit Margin %"
Calculated Metrics:
Name: Average Item Price
Formula: revenue / num_items
Name: Revenue After Discount
Formula: revenue - discount_amount
Name: Gross Profit
Formula: revenue * profit_margin
Metric Limits & Quotas
Standard GA4 Property Limits
- Standard Custom Metrics: 50 maximum
- Calculated Metrics: 5 maximum
- Total available: 50 standard + 5 calculated
GA4 360 Property Limits
- Standard Custom Metrics: 125 maximum
- Calculated Metrics: 50 maximum
- Total available: 125 standard + 50 calculated
Quota Management Strategy
Prioritize metrics by importance:
-
Essential (create immediately)
- Key business KPIs
- Required for dashboards
- Regulatory/compliance metrics
-
Important (create if quota allows)
- Nice-to-have analyses
- Supporting metrics
- Team requested metrics
-
Nice-to-have (create last)
- Exploratory metrics
- Lower priority analysis
Best Practices for Custom Metrics
Naming Conventions
Good names:
- "Video Duration (seconds)"
- "Form Fill Time (seconds)"
- "Revenue per Session"
- "Customer Lifetime Value ($)"
- "Engagement Score"
Poor names:
- "metric1"
- "data"
- "value"
- "custom"
Implementation Best Practices
DO:
- ✅ Send as numbers, not strings
- ✅ Use consistent units (always seconds, always dollars)
- ✅ Document what each metric represents
- ✅ Plan metrics before implementation
- ✅ Register only metrics actually used
- ✅ Include unit in metric name if applicable
DON'T:
- ❌ Send metric as string ("120" instead of 120)
- ❌ Mix units (seconds in one event, minutes in another)
- ❌ Create too many similar metrics
- ❌ Register metrics without team agreement
- ❌ Use high-cardinality metrics (too many values)
Metric Value Ranges
Recommended ranges:
- Quantities: 0-1000000
- Percentages: 0-100
- Monetary: -999999 to 999999
- Time (seconds): 0-86400 (24 hours)
- Ratings: 0-10 or 1-5
Avoid:
- Negative values (usually)
- Extreme outliers (data quality issues)
- Non-numerical data (use dimensions instead)
Troubleshooting Custom Metrics
Metric Doesn't Appear in Reports After 48 Hours
Troubleshooting:
-
Verify code sends numerical value
- Check DebugView
- Value must be a number, not string
- Example: 120 (not "120")
-
Check metric name case
- DebugView shows exact case
- Match exactly when registering
-
Confirm quota not exceeded
- Standard metrics: Under 50?
- Calculated metrics: Under 5?
- Delete unused metrics if over quota
-
Check minimum traffic threshold
- Events with metric need to fire
- If no events: Metric won't populate
- Verify code deployed and live
Metric Shows Wrong Values
Likely cause: Parameter values not numbers
// WRONG - values are strings
gtag('event', 'video_watched', {
'duration': '120' // String
});
// CORRECT - values are numbers
gtag('event', 'video_watched', {
'duration': 120 // Number
});
Calculated Metric Formula Error
Error message: "Invalid formula syntax"
Check:
- Metric names spelled correctly
- Formula uses
/,*,+,-only - Parentheses balanced
- No special characters
// WRONG
(revenue / users) + % // % not allowed
// CORRECT
(revenue / users) * 100 // Use * 100 for percentage
Advanced: Multi-Step Metrics
Chain Calculations
Create multiple calculated metrics that build on each other:
Step 1: Create basic metrics
- revenue / sessions = "Revenue per Session"
Step 2: Create metrics using other calculated metrics
- revenue_per_session * users = "Revenue Per User"
Metric Dependency Example:
Step 1: Sessions with Purchase = purchase_events (standard metric)
Step 2: Purchase Rate = purchase_events / sessions (calculated)
Step 3: Revenue Per Converting Session =
revenue / purchase_events (calculated)
Step 4: Revenue Per All Sessions =
revenue / sessions (calculated)
Using Custom Metrics in Audiences
Custom metrics can be used in audience conditions (GA4 360 only):
Audience: "High-Value Customers"
Condition: customer_lifetime_value > 1000 (custom metric)
Metric Comparison Reference
All Available Metric Types
| Metric Type | Created How | Updated | Quota |
|---|---|---|---|
| Built-in | GA4 default | Real-time | N/A |
| Standard Custom | Event code | After 24-48hrs | 50 |
| Calculated | Formula | Real-time | 5 |
Summary Table
| Scenario | Use This | Why |
|---|---|---|
| Tracking video duration | Standard Custom Metric | Requires code implementation |
| Calculating revenue/user | Calculated Metric | Derive from existing metrics |
| Counting form submissions | Built-in (conversions) | Already exists |
| Measuring engagement score | Calculated Metric | Formula from user_engagement |
| Tracking items in cart | Standard Custom Metric | New event parameter needed |