Custom Dimensions in GA4: Audit and Governance Guide
GA4 custom dimensions are one of the most powerful features of the platform and one of the most poorly maintained. Without governance, they accumulate, duplicated, misnamed, orphaned, until the schema becomes impossible to trust and expensive to clean up.
Common Custom Dimension Problems
The most frequent issue is duplication: the same data point registered multiple times under different names.
This happens when different team members create dimensions independently, or when an implementation is migrated or updated without removing old registrations.
A property might have user_type, userType, and user_category all pointing to the same underlying data source, splitting the data across three dimensions and making segmentation unreliable.
A second common problem is cardinality: high cardinality values like order IDs, session timestamps, or user generated strings registered as event scoped dimensions can cause the "other" row problem where GA4 aggregates low frequency values into an unanalysable bucket.
GA4 can handle cardinality better than Universal Analytics but it still has limits, and dimensions with thousands of unique values per day perform poorly in exploration reports.
A third issue is orphaned dimensions, registered dimensions that no longer receive any data because the event or parameter that populated them was renamed or removed.
How to Audit Your Existing Custom Dimensions
Start with the Custom Definitions section in GA4 Admin. For each registered custom dimension, note the scope (event, user, or item), the associated parameter name, the description, and when it was created.
Then cross reference this against your actual event stream: use the GA4 Data API or BigQuery to query whether each parameter is actually being sent with events in the last 30 days.
Any custom dimension that has received zero data in the past month is either orphaned or intermittently populated and should be flagged for investigation.
Next, check for naming inconsistencies, are snake_case conventions followed consistently, or are there camelCase and hyphenated variants mixed in?
Inconsistent naming suggests dimensions were created by different people without coordination.
Finally, compare the registered dimension list against your measurement plan or tagging specification document if one exists, gaps indicate undocumented dimensions that were added without going through a governance process.
Building a Governance Process That Sticks
Governance is not a one time audit, it is an ongoing process. The minimum viable governance structure for custom dimensions includes three things.
First, a canonical measurement plan that documents every custom dimension, its scope, the event it is associated with, who owns it, and what business question it answers.
Second, a change request process: no new custom dimensions should be created in production GA4 without review, because the slot limit (currently 50 event scoped, 25 user scoped per property) means careless creation eventually forces painful cleanup decisions.
Third, a quarterly review of orphaned dimensions using the BigQuery export or Data API to check which registered dimensions received zero traffic in the preceding quarter.
Properties with these three practices in place avoid the slow entropy that makes most GA4 custom dimension schemas unusable after two years.
Ready to audit your GA4 property?
Run a full GA4 audit in under 10 minutes. Free to start.
Start Free Audit