Custom Dimensions
Custom dimensions let you capture additional data beyond standard analytics fields, enabling business-specific analysis.
What Are Custom Dimensions?
Standard tracking captures common fields:
- Page URL
- Referrer
- Device type
- Country
Custom dimensions let you add your own fields:
- Customer type (free/premium)
- Product category
- A/B test variant
- Subscription plan
Accessing Custom Dimensions
- Click the gear icon in the main navigation
- Select Tracking → Custom Dimensions
Dimension Scopes
Hit-Level Dimensions
Attached to individual events. Pass as properties in your tracking calls:
// Conversion with custom dimensions as properties
sealmetrics.conv('purchase', 149.99, {
product_category: 'Electronics',
page_type: 'product-detail',
payment_method: 'credit_card'
});
// Microconversion with custom dimensions as properties
sealmetrics.micro('product_view', {
product_category: 'Electronics',
product_brand: 'Apple',
price_range: '100-500'
});
Session-Level Dimensions
For data that applies to the entire session (e.g., A/B test variant, entry campaign), include the dimension as a property on every event in that session:
// Include session context in each event
sealmetrics.micro('add_to_cart', {
product_id: 'SKU-123',
ab_variant: 'B', // Session context
entry_campaign: 'summer-sale' // Session context
});
sealmetrics.conv('purchase', 99.99, {
ab_variant: 'B',
entry_campaign: 'summer-sale'
});
User-Level Dimensions
For data about the user (e.g., customer tier, plan type), include it as a property with each event. Server-side rendering is the best way to inject this data:
<script>
window.addEventListener('load', function() {
sealmetrics.conv('purchase', <?php echo $order->total; ?>, {
customer_type: '<?php echo $user->tier; ?>',
plan: '<?php echo $user->plan; ?>',
currency: '<?php echo $order->currency; ?>'
});
});
</script>
Creating Custom Dimensions
Add New Dimension
- Click + Add Custom Dimension
- Configure:
Add Custom Dimension
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Name: [Customer Type ]
Internal ID: [customer_type ]
(used in code, no spaces)
Scope: [Hit ▼]
Data Type: [String ▼]
Description: [Free, pro, or enterprise tier]
Default Value: [free ]
(optional, used when not set)
[Create Dimension]
Available Data Types
| Type | Example Values | Use Case |
|---|---|---|
| String | "premium", "category-a" | Categories, names |
| Number | 42, 3.14 | Counts, scores |
| Boolean | true, false | Flags, toggles |
| Date | "2024-01-15" | Timestamps |
Setting Dimension Values via JavaScript
Dimensions are set as properties in your tracking calls:
// With conversions (3rd parameter)
sealmetrics.conv('purchase', 149.99, {
product_category: 'Electronics',
customer_type: 'premium',
payment_method: 'credit_card'
});
// With microconversions (2nd parameter)
sealmetrics.micro('add_to_cart', {
product_id: 'SKU-123',
product_category: 'Electronics',
customer_type: 'premium'
});
Using Custom Dimensions in Reports
Filtering
Filter any report by custom dimension:
Traffic Report
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Filters:
+ Customer Type: [Premium ▼]
+ Product Category: [Electronics ▼]
Showing data for: Premium customers viewing Electronics
Breaking Down
Break down metrics by dimension:
Conversions by Customer Type
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Customer Type Conversions Conv Rate Revenue
─────────────────────────────────────────────────────
Enterprise 234 5.2% €89,000
Pro 567 3.8% €45,600
Free 123 0.8% €2,340
Custom Reports
Create reports specifically for your dimensions:
Custom Report: A/B Test Analysis
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Dimension: ab_variant
Metrics: Sessions, Conversions, Revenue
Results:
─────────────────────────────────────────────────────
Variant Sessions Conversions Conv Rate
─────────────────────────────────────────────────────
Control 12,340 234 1.90%
Variant A 12,120 298 2.46% ↑
Variant B 12,540 187 1.49% ↓
Common Dimension Examples
E-commerce
// Purchase with dimensions
sealmetrics.conv('purchase', 149.99, {
product_category: 'Electronics',
product_brand: 'Apple',
price_range: '100-500',
customer_tier: 'gold',
payment_method: 'credit_card'
});
SaaS
// Feature usage with dimensions
sealmetrics.micro('feature_used', {
feature_name: 'export',
feature_category: 'reporting',
plan_type: 'pro',
company_size: '50-200',
industry: 'technology'
});
Media/Content
// Content grouping is handled via the group parameter:
// <script src="https://t.sealmetrics.com/t.js?id=YOUR_ID&group=blog" defer></script>
// Additional content dimensions via microconversions:
sealmetrics.micro('article_engagement', {
content_type: 'article',
author: 'john-smith',
category: 'technology',
word_count_bucket: '1000-2000',
has_video: 'true'
});
Dimension Limits
All plans include up to 50 custom dimensions.
Each dimension can have:
- Name: 64 characters max
- ID: 32 characters max, alphanumeric + underscore
- Value: 256 characters max per value
Managing Dimensions
Edit Dimension
- Click on dimension name
- Modify settings (cannot change scope or ID)
- Save changes
Archive Dimension
Stop collecting new data but keep historical:
Archive Dimension
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Archiving "old_campaign_id" will:
• Stop accepting new values
• Keep existing historical data
• Free up a dimension slot
• Allow unarchiving later
[Cancel] [Archive]
Delete Dimension
Permanently remove dimension and all data:
⚠️ Delete Dimension
This will PERMANENTLY delete:
• The dimension definition
• ALL historical data for this dimension
This cannot be undone.
Type dimension ID to confirm: [old_campaign_id]
[Cancel] [Delete]
Best Practices
Naming Conventions
- Use snake_case for IDs:
customer_type, notcustomerType - Use descriptive names:
product_category, notcat1 - Prefix related dimensions:
user_tier,user_industry,user_company_size
Choosing Scope
| Scope | Use When | Example |
|---|---|---|
| Hit | Value changes per event | Product category, page type |
| Session | Value is constant for visit | Entry campaign, A/B variant |
| User | Value is constant for user | Customer tier, signup date |
Performance Tips
- Don't create dimensions you won't analyze
- Use predefined values where possible (faster queries)
- Consider cardinality (dimensions with millions of unique values are slower)
Troubleshooting
Dimension Not Appearing in Reports
- Check dimension is not archived
- Verify the property name in your code matches the dimension ID exactly (case-sensitive)
- Ensure you're sending the property with your events
- Wait a few minutes for data processing
Values Showing as "(not set)"
- Value wasn't sent with the event
- Dimension was created after data was collected
- Default value not configured