Custom dimensions in GA4 are the bridge between your raw event parameters and your reporting interface. Without them, event parameters exist in your data collection pipeline and in BigQuery, but they are completely invisible in standard reports, explorations, and any tool connecting through the GA4 Data API, including Looker Studio. Managing them well is a governance challenge as much as a technical one. Quotas run out. Outdated dimensions occupy slots. PII leaks through parameters that should never have been registered. This guide explains how custom dimensions work, how to audit them effectively, and how to build governance practices that keep them healthy over time.
Event-scoped custom dimension slots per standard GA4 property
GA4 property limit
User-scoped custom dimension slots per standard GA4 property
GA4 property limit
Item-scoped custom dimension slots (ecommerce product attributes)
GA4 property limit
Report-facing dimensions should avoid uncontrolled cardinality
How custom dimensions actually work
In GA4, every interaction is an event, and events carry parameters as key-value pairs. When you send a purchase event with a payment_method parameter, that data is collected and stored. But it is invisible in the GA4 reporting interface until you register payment_method as a custom dimension in Admin > Custom Definitions.
Registration does two things: it makes the dimension available in reports from that point forward, and it locks in the scope. The registration is not retroactive. If you send a parameter for six months and only register it in month seven, you have six months of collected data that will never appear in your standard reports. The data exists in BigQuery, but not in the GA4 interface. Pair this work with a broaderGA4 custom events auditso the events sending these parameters are themselves consistent.
Three scopes and why getting them wrong is costly
Item scope
Item-scoped dimensions are part of the items array in ecommerce events. They describe individual products: item_colour, item_size, item_rating. You get 10 item-scoped custom dimension slots. These are used for product-level reporting and only surface in ecommerce reports.
Conducting a custom dimension audit
Step 1: map current registrations against active usage
Go to Admin > Custom Definitions. Export or document every registered dimension. For each one, note the parameter name, the scope, when it was registered, and the last data it received. You can check recent data in Explorations by adding the dimension and checking if it returns values for the past 30 days. Any dimension with no recent data is either obsolete or broken.
Step 2: check for unregistered parameters that need reporting
Review your GTM container or tracking implementation documentation. List every event parameter being sent to GA4. Compare this list against your registered custom dimensions. Parameters on that list that are not registered are invisible in reports even though the data is being collected. Prioritise registration based on which parameters are needed for active reporting requirements, and cross-reference the broaderGA4 property configuration checksto confirm the property itself is set up to surface them.
Step 3: identify scope mismatches
Any parameter that describes a user attribute but is registered as event-scoped is a scope mismatch. Common examples: logged_in_status, customer_segment, subscription_plan, A/B test variant. These should be user-scoped dimensions set via user properties, not event parameters. Misscoped dimensions mean you lose the context on every event where that property was not explicitly sent, which is one of the leading causes of(not set) values appearing in GA4 reports. Note that you cannot change the scope of a registered custom dimension — you must delete the existing registration and recreate it with the correct scope.
Step 4: check for PII in dimension values
Navigate to an Exploration and add your custom dimensions one by one. Look at the values they are returning. Any dimension that contains email addresses, names, phone numbers, or any other personally identifiable information is a serious compliance issue. GA4's terms of service prohibit sending PII to the platform. Remove these registrations and modify your implementation to exclude the offending parameters.
Want to automatically scan your custom dimensions for scope mismatches and PII?
Step 5: cardinality review
High-cardinality dimensions cause the (other) row problem in GA4 reports. Specific product SKUs, individual page URLs, session IDs, and order IDs are classic examples. In Explorations, high-cardinality dimensions can trigger row limits quickly and make reports unreliable, similar to the issues described inincompatible dimensions and metrics combinations. Consider whether the parameter can be redesigned as a category that is more useful for reporting.
Governance practices to keep custom definitions healthy
- Registration as a change management step: Before any new event parameter enters production, it must go through a review that includes: does a native dimension already cover this, what is the scope, will it ever have high cardinality, does it need to appear in standard reports or is BigQuery sufficient?
- Quarterly cleanup: Audit dimensions that are no longer active or no longer needed. Archive or delete those that are clearly obsolete so quota is available for new reporting requirements.
- Documentation: Maintain a tracking plan that maps every custom dimension to the event that sends it, the expected value range, the business owner, and the date it was registered. This prevents duplicate registrations and scope errors.
Custom dimensions: audit, fix, and govern
Validate
- Go to Admin > Custom Definitions and document every registered dimension, name, scope, parameter name, and date registered
- In Explorations, add each dimension and check if it has returned data in the past 30 days, dimensions with no recent values are either obsolete or broken
- List every event parameter in your GTM container or tracking implementation and compare against registered dimensions, unregistered parameters are invisible in reports
- Inspect dimension values in Explorations for PII: email addresses, names, phone numbers, or any identifiable strings
- Check quota usage: count event-scoped, user-scoped, and item-scoped registrations against the 50 / 25 / 10 slot limits
Fix
- Delete or archive dimensions that are clearly obsolete so quota slots are available for current reporting needs
- Re-register user-level attributes (subscription_plan, customer_segment, A/B variant) as user-scoped dimensions and update implementation to use gtag('set', {'user_properties': {'property_name': 'value'}})
- Remove any registrations that expose PII and update the implementation to exclude those parameters from being sent to GA4
- Redesign high-cardinality parameters as categories before registering, use product_category instead of product_sku, content_type instead of full page title
- Register parameters that are actively sent but not yet registered, prioritised by reporting need
Watch for
- The (other) row appearing in Explorations, signals high-cardinality dimensions hitting row limits
- Quota usage getting tight enough that new reporting requirements cannot be registered cleanly
- New tracking implementations that register parameters without a governance review
- User-level attributes showing up with data gaps, only appearing on specific events rather than all events for a user
Custom dimensions audit checklist
- All registered custom dimensions are receiving data in the past 30 days
- No user-level attributes are registered as event-scoped dimensions
- No PII is present in any dimension values
- All actively sent parameters that need reporting are registered
- Dimensions with high cardinality are reviewed and redesigned if needed
- Quota usage is monitored before registration capacity becomes a constraint
- A tracking plan document maps every dimension to its source event and business owner
Related guides to read next
GA4 Custom Events Audit: Finding What's Broken and What's Missing
How to systematically audit your custom event implementation for naming inconsistencies, missing parameters, and untracked interactions.
Why GA4 Shows (not set) and How to Fix It
The definitive guide to diagnosing (not set) values in dimensions, covering all root causes by dimension type.
How healthy are your custom dimensions?
GA4Audits can flag missing registrations, scope mismatches, and dimension hygiene issues, but teams should still review definitions against their reporting plan.