GA4 Ultimate Stack
Check that GA4 parameters are populated on real traffic
A registered dimension isn't proof the data is there. Validate parameters across properties, read each status, set a sensible tolerance and find what's behind a failure.
Registered isn't the same as populated
A custom dimension can be registered, the event can fire, and the report can still be useless, because the parameter arrives blank, as (not set), or as a placeholder like undefined. Setup checks won't show that. Only the collected data does.
Dimensions Control Center's Validate mode reads real, already-collected traffic and checks how often each parameter is actually populated. It is read-only.
Two panels: setup shows the dimension registered and the event firing, while real traffic shows large shares of not set and undefined values.
Pick properties, dimensions, a window and a tolerance
- Select the properties. Free checks one property per run; Premium can check several.
- List the dimensions to check by display name, for example Form Name, Insurance Type.
- Choose the date window.
- Optionally set a tolerance: the share of rows allowed to be blank before a dimension fails.
- Run Validate.
A validate form with two dimensions, a 28-day window and a 2% tolerance.
Read the results
Results come back as a property × dimension matrix. Click a cell for the detail behind it. Each cell carries one status:
| Status | Meaning |
|---|---|
| pass | Populated on every real row checked, or blank on no more rows than the tolerance allows |
| fail | Blank, (not set) or a placeholder on more rows than the tolerance allows |
| no data | Nothing fired for this parameter in the window, so there was nothing to check |
| not registered | No custom dimension with this display name exists on the property |
| unsupported scope | Item-scoped dimensions aren't validated |
| no access | Your Google account can't read this property |
A property by dimension grid with pass, fail with percentages, not registered and no data cells.
Each status needs a different response
- fail is a tracking problem: the tag sends the parameter without a useful value.
- not registered is a configuration gap: register the dimension, or check that the display name matches.
- no data may be normal for a seasonal form, or a sign the event stopped. Check the event first.
- unsupported scope and no access mean the check couldn't run, which is different from a failure.
A two-column list of the six validation statuses with their meanings.
Set a tolerance that reflects reality
Some blank rows are genuine: an edge case, an old browser, a form submitted before the page finished loading. A small tolerance, such as 2%, absorbs those without hiding a broken implementation. Agree the number with whoever owns the reporting, and use the same tolerance every time you compare.
Three bars of blank share by brand, labelled pass or fail at a 2% tolerance.
Investigate a failure
Open the failing cell. The values usually point straight at the cause:
- (not set) means the parameter wasn't sent on those events at all.
- undefined, null or an empty string usually means the tag read a variable before the page set it.
- A real value on some rows and blanks on others often means one form or page template is missing it.
Fix it at the source, in the tag or the page, then validate again over a fresh window.
A table of values for Form Name on Brand C: not set, contact, undefined and quote, with placeholder and real labels.
ODDVX for Windows
Every property, one screen.
Start free on one GA4 brand per run. Premium adds every brand in one run, batch writes, exports and scheduled checks.