13 KiB
Complete Dimension Registration Walkthrough
Pre-Registration Checklist
Before registering a custom dimension in GA4 Admin:
- Parameter is being sent in event code
- Parameter name is finalized (case-sensitive)
- Scope is determined (event/user/item)
- Parameter verified in DebugView
- Dimension name is approved by team
- Not exceeding quota for scope type
Method 1: Event-Scoped Dimension Registration
Scenario: Tracking Which Forms Users Submit
Step 1: Implement in Code
Place the custom parameter in gtag event:
// On form submission
document.getElementById('contact-form').addEventListener('submit', function() {
gtag('event', 'form_submit', {
'form_name': 'Contact Form',
'form_id': 'contact-form-v1',
'form_destination': '/thank-you'
});
});
Step 2: Verify in DebugView
- Open GA4 property → Admin → DebugView
- Install Google Analytics Debugger Chrome extension (if not installed)
- Enable the extension (click icon, ensure enabled)
- Refresh website page
- Perform action that triggers event (submit form)
- In DebugView left panel, click the "form_submit" event
- Expand event details on right panel
- Verify "form_name" parameter appears with correct value
Expected DebugView Output:
Event: form_submit
Timestamp: 2024-11-10 10:30:45.123
Parameters:
- form_name: "Contact Form"
- form_id: "contact-form-v1"
- form_destination: "/thank-you"
- (other auto-collected parameters)
Step 3: Navigate to Custom Definitions
- In GA4 property interface, click Admin (bottom left)
- Under "Data Display" section, click Custom Definitions
Step 4: Create Custom Dimension
- Click "Create Custom Dimension" button (blue button, top right)
- Fill the form that appears:
| Field | Entry | Example |
|---|---|---|
| Dimension Name | Human-friendly name (appears in reports) | "Form Name" |
| Scope | Select "Event" | Event |
| Event Parameter | Exact parameter name from code (case-sensitive) | form_name |
| Description | Optional explanation | "Name of form submitted" |
- Click Save button
Step 5: Wait 24-48 Hours
- First 24 hours: DebugView may show parameter (if debug mode enabled)
- 24-48 hours: Reports begin showing dimension
- Retroactive population: Previous events reprocessed with dimension
Step 6: Verify in Reports
After 24-48 hours:
- Go to Analytics → Reports → any report
- Click + Customize or + Add dimension
- Search for "Form Name"
- Add to report
- Dimension values appear in data
Method 2: User-Scoped Dimension Registration
Scenario: Tracking Customer Subscription Tier
Step 1: Implement in Code
Set user property after user authentication:
// After successful login
function handleLoginSuccess(user) {
gtag('set', {
'subscription_tier': user.planType, // 'free', 'pro', 'enterprise'
'customer_id': user.id,
'account_created_date': user.createdDate
});
gtag('event', 'login', {
'method': 'email'
});
}
Important: Set user properties BEFORE sending events to ensure properties apply to all events.
Step 2: Verify in DebugView
- GA4 property → Admin → DebugView
- Click any event after login (page_view, button_click, etc.)
- Expand event details
- Scroll to "User properties" section
- Verify "subscription_tier" appears with correct value
Expected DebugView Output:
Event: page_view
User properties:
- subscription_tier: "pro"
- customer_id: "CUST_12345"
- account_created_date: "2020-05-15"
Step 3: Navigate to Custom Definitions
- Click Admin → Custom Definitions
Step 4: Create Custom Dimension
- Click "Create Custom Dimension"
- Fill the form:
| Field | Entry | Example |
|---|---|---|
| Dimension Name | Human-friendly name | "Subscription Tier" |
| Scope | Select "User" | User |
| User Property | Exact property name from code | subscription_tier |
| Description | Optional | "Customer's plan type" |
- Click Save
Step 5: Wait 24-48 Hours
Same as event-scoped dimensions.
Step 6: Verify in Reports
After 24-48 hours:
- Analytics → Reports
- Add dimension "Subscription Tier"
- See all events grouped by subscription tier
Method 3: Item-Scoped Dimension Registration
Scenario: Tracking Product Colors in Purchases
Step 1: Implement in Code
Place parameter in items array of ecommerce event:
gtag('event', 'purchase', {
'transaction_id': 'TXN_' + Math.random(),
'value': 149.98,
'currency': 'USD',
'items': [
{
'item_id': 'SKU_SHIRT_BLUE',
'item_name': 'Blue T-Shirt',
'price': 29.99,
'quantity': 2,
'item_category': 'Apparel',
'item_color': 'blue' // CUSTOM DIMENSION
},
{
'item_id': 'SKU_PANTS_BLACK',
'item_name': 'Black Pants',
'price': 49.99,
'quantity': 1,
'item_category': 'Apparel',
'item_color': 'black' // CUSTOM DIMENSION - DIFFERENT VALUE
}
]
});
Step 2: Verify in DebugView
- GA4 property → Admin → DebugView
- Find "purchase" event
- Click to expand event details
- Scroll to "Items" section
- Verify each item shows "item_color" parameter
Expected DebugView Output:
Event: purchase
Items:
[0]:
- item_id: "SKU_SHIRT_BLUE"
- item_name: "Blue T-Shirt"
- item_color: "blue"
[1]:
- item_id: "SKU_PANTS_BLACK"
- item_name: "Black Pants"
- item_color: "black"
Step 3: Navigate to Custom Definitions
- Click Admin → Custom Definitions
Step 4: Create Custom Dimension
- Click "Create Custom Dimension"
- Fill the form:
| Field | Entry | Example |
|---|---|---|
| Dimension Name | Human-friendly name | "Item Color" |
| Scope | Select "Item" | Item |
| Event Parameter | Parameter name from items array | item_color |
| Description | Optional | "Color variant of product" |
- Click Save
Step 5: Wait 24-48 Hours
Same delay as other scope types.
Step 6: Verify in Reports
After 24-48 hours:
- Analytics → Reports → Monetization → Items
- Items report shows "Item Color" dimension
- Analyze which colors have best revenue, quantity, etc.
Custom Dimension Registration Form - Field Reference
Dimension Name Field
What to enter: Human-friendly name that will appear in reports and UI
Best practices:
- Descriptive (not "custom1" or "data")
- Title case ("Form Name", not "form name")
- Under 50 characters
- No special characters (use underscores if needed)
- Avoid jargon unfamiliar to team
Good examples:
- "Form Name"
- "Video Quality"
- "Customer Segment"
- "Item Color"
- "Error Type"
Poor examples:
- "custom_param_1"
- "data"
- "x"
- "param123"
Scope Field
What to select:
Three radio button options:
-
Event - Single event occurrence
- Use for event-specific context
- Each event sends its own value
- Examples: button_name, form_id, video_title
-
User - All user events
- Use for user attributes
- Set once, applies to all events
- Examples: subscription_tier, customer_segment
-
Item - Products in ecommerce events
- Use for product-level data
- Goes in items array
- Examples: item_color, item_size
Cannot be changed after creation - Choose carefully.
Event Parameter / User Property Field
What to enter: Exact parameter or property name from code
Critical requirements:
- Case-sensitive (subscription_tier ≠ subscription_Tier)
- Must match exactly as sent in code
- No spaces or special characters (use underscores)
- Under 40 characters
How to find exact name:
- Look at DebugView parameter/property name
- Copy parameter name exactly
- Paste into this field
Example matching:
Code sends:
gtag('event', 'video_watch', {
'video_quality': 'hd'
});
Registration field should contain:
video_quality
NOT: "Video Quality" (that's the dimension name), "video_Quality", or "videoQuality"
Description Field (Optional)
What to enter: Brief explanation of what dimension tracks
Good descriptions:
- "Quality setting of video watched (hd, sd, auto)"
- "Customer's plan type (free, pro, enterprise)"
- "Color variant of product in purchase"
- "Name of form submitted (contact, newsletter, demo)"
Poor descriptions:
- "custom data"
- "info"
- "tracking"
Post-Registration Verification Workflow
Hour 0-6: Immediate Post-Registration
- Do NOT create duplicate dimension while waiting
- Do NOT modify the custom definition (requires deletion and recreation)
- Continue sending parameter in events (essential for population)
Hour 24: First 24-Hour Check
- Go to DebugView
- Verify current events still sending parameter
- Check if any data appearing in reports (may show before 48 hours)
- Do NOT assume failure if not visible yet
Hour 48: Full Population Expected
- Go to Analytics → Reports
- Add custom dimension to any report
- If dimension appears: SUCCESS
- If dimension doesn't appear: Troubleshoot
Verification Checklist
- Dimension appears in dimension picker (Admin → Custom Definitions)
- Current events show dimension values in DebugView
- After 48 hours, dimension appears in reports
- Dimension values are accurate
- No duplicate dimensions created by mistake
Editing & Deleting Custom Dimensions
Edit Custom Dimension
Cannot directly edit. To change dimension:
- Note dimension settings (name, scope, parameter)
- Delete existing dimension
- Create new dimension with updated settings
- Wait 24-48 hours for new data population
Why limited edits?
- Scope cannot change (event to user, etc.)
- Parameter name essentially permanent
- Dimension name can be edited, but best practices say don't
Delete Custom Dimension
When to delete:
- No longer tracking that parameter
- Exceeding quota limits
- Created by mistake
- Need to recreate with different settings
Process:
- Admin → Custom Definitions
- Find dimension in list
- Click the dimension name
- Click Delete button
- Confirm deletion
After deletion:
- Historical data remains in reports (for 2-14 months per retention)
- New dimension can be created with same parameter name
- Takes 24-48 hours to remove from dimension picker
Do NOT delete and immediately recreate - Wait 24 hours to avoid conflicts.
Batch Registration Strategy
When registering many dimensions at once:
Prioritize by Quota
Standard GA4 limits:
- Event-scoped: 50 max
- User-scoped: 25 max
- Item-scoped: 10 max
Prioritize:
- Essential for business reporting (register first)
- Important but not critical (register second)
- Nice-to-have (register if quota allows)
Register in Waves
Wave 1 (First): High-Priority Dimensions
- Register 5-10 critical dimensions
- Wait 24-48 hours for population
- Verify data accuracy
Wave 2 (Later): Medium-Priority Dimensions
- Register after Wave 1 verified
- Again wait 24-48 hours
- Continue verification
Wave 3 (Much Later): Low-Priority Dimensions
- Register final wave if quota allows
- Ensure no conflicts with existing
Why Wave Registration?
- Easier troubleshooting (fewer variables)
- Confirm code quality before scale
- Verify team understands process
- Catch quota issues early
Common Registration Issues & Solutions
Dimension Doesn't Appear After 48 Hours
Troubleshooting steps:
-
Verify code still sending parameter
- Check DebugView
- Confirm events have parameter
- If missing: Fix code implementation
-
Check parameter name case-sensitivity
- Go to DebugView
- Look at exact parameter name shown
- Compare to registered parameter name
- Must be EXACT match
-
Confirm scope is correct
- Go to Admin → Custom Definitions
- Check scope: Event, User, or Item?
- Verify matches implementation
-
Check quota not exceeded
- Event-scoped: Are you over 50?
- User-scoped: Are you over 25?
- Item-scoped: Are you over 10?
- If over quota: Delete unused dimensions
-
Check minimum traffic threshold
- Dimension needs at least 1000 events with parameter
- Low-traffic dimensions may not populate
- Wait longer if very low traffic
Parameter Appears in DebugView But Not Reports
- Expected in first 24 hours - Normal, wait until 48
- After 48 hours - Troubleshoot above
Multiple Duplicates Created By Mistake
- Delete all but one copy
- Wait 24-48 hours between deletions
- Recreate if needed
Can't Find Parameter in DebugView
- Code may not be live - Verify changes deployed
- Parameter not sent - Check event fires on intended action
- Event not triggering - Test event manually
- DebugView device wrong - Select correct device from dropdown