Skip to content

Guide 16 · Debugging · GA4 + Tag Manager

The custom parameter is sent but never shows: register it as a custom dimension

Checked 11 November 2026 · Verification: registration counts recomputed (3 params, 1 then 3 registered) · Steps traced to Tag Manager Help and Analytics Help, opened 11 November 2026 · 7-minute read

GA4 receives every parameter you send, but a custom parameter only becomes a dimension in your reports after you register it — and it only applies to events sent after registration.

Expected signal

After the steps below, the parameter is registered as an event-scoped custom dimension, and events sent after registration carry it into reports; earlier events stay (not set).

Download the check: the debugging check (JSON) (MD5 b653289f8138fe0376f6ba55646f35c4, 548 bytes). It lists the checkpoints from this guide and the worked check, with the figures recomputed. The file was built for this guide and validated structurally — it was not exported from a live container or a live property.

What you need

  • The exact parameter name. Spelled exactly as the tag sends it — registration matches on the name, letter for letter.
  • Editor access on the GA4 property. Custom definitions live under Admin, then Data display, then Custom definitions.
  • One event in DebugView carrying the parameter. Proof the tag sends it, so registration is the missing step and not a cover for a tag that sends nothing.
  • The scope, decided in advance. Event scope for a parameter that describes one event; the scope cannot be changed after saving.

The trace

The worked check: the figures below were recomputed before publication, and the note under the table shows the working.

CheckFigure
Custom parameters the tag sends3
Custom dimensions registered before the fix1
Custom dimensions registered after the fix3
Events sent before registration showing the value0
Events sent after registration showing the value5

The tag sent 3 custom parameters and 1 was registered, so 3 minus 1 is 2 parameters with no dimension. After registering the other 2, the property held 3 dimensions. Five events sent after registration showed the value — 5 of 5 — and 0 events sent before registration showed it, because registration is not retroactive.

  1. Prove the tag sends the parameter. Open DebugView, do the action, and click the event. The parameter must be listed with its value. If it is not there, the tag is not sending it, and no registration will help. Registration only surfaces what is already arriving.
  2. Open Custom definitions. In Analytics, go to Admin, then under Data display, click Custom definitions. This is where event-scoped and user-scoped dimensions are registered. Look for the parameter name in the list before you add anything — it may already be registered under a different display name.
  3. Register it with event scope. Create an event-scoped custom dimension with the exact parameter name. Choose the scope before you save: event scope for a parameter that describes one event. The scope and the event parameter cannot be changed after saving, so a wrong scope means deleting the dimension and starting again.
  4. Wait, then check with a fresh event. A new custom dimension can be added to a report 24 to 48 hours after the data was sent and the dimension was created. Send a fresh event after registration and check the report the next day. Events sent before registration show as (not set), even after the dimension exists.
  5. Use the dimension name in your reports, not the parameter name. In the report builder, the registered dimension appears under its display name. If you filter by the raw parameter name and find nothing, you are searching for the wrong label.

Dead ends

DEAD END — EXPECTING OLD EVENTS TO FILL IN. Registration is not retroactive. Events sent before the dimension was created show as (not set) forever. If the report looks empty the day after registration, check whether the events in it were sent before or after the dimension existed.

DEAD END — THE WRONG SCOPE, SAVED FOREVER. The scope and the event parameter cannot be changed after saving. An event parameter registered with user scope will not behave like an event dimension, and the fix is to delete it and register it again, correctly.

DEAD END — A TYPO IN THE PARAMETER NAME. Registration matches the parameter name exactly. A dimension registered for member_tier does nothing for a tag sending memberTier. Copy the name from DebugView, where the tag's own spelling is shown.

End state

The parameter proven in DebugView, registered with event scope under its exact name, and confirmed in a report on events sent after registration. Earlier events stay (not set) — that is the rule, not a new fault — and from here the parameter is a dimension like any other.

Sources

Checked 11 November 2026. The click paths above are the ones in Google's help pages, opened 11 November 2026. What was run: the registration counts, recomputed — 3 parameters sent, 1 registered before and 3 after, so 2 were missing, with 5 of 5 events after registration showing the value and 0 before. No step in this guide was run inside a live Analytics property or a live Tag Manager container, because both need a Google sign-in and this site does not sign in as anyone. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.