Skip to content
Google AnalyticsHow-to guide

GA4 Custom Dimensions: How to Create Them in 6 Steps

GA4 custom dimensions turn the event parameters and user properties you send into fields you can report on. Send the parameter first, register it in Admin under Custom definitions, then wait 24 to 48 hours before it appears in reports.

By Kristijan GjorgjioskiIndependent SEO consultant

Published 18 October 2026 · 6 min read

Key takeaways

  • A custom dimension is a registered event parameter or user property. Until you register it, GA4 receives the value but standard reports and explorations cannot show it.
  • Standard properties allow 50 event-scoped, 25 user-scoped and 10 item-scoped custom dimensions, so each slot needs a reason.
  • The scope and the parameter name cannot be changed after you save, and archiving a dimension cannot be undone.
  • Avoid high-cardinality values such as user IDs, session IDs and timestamps. They can push useful rows into the (other) bucket.

Most GA4 properties I open send far more detail than anyone can see.

The form name, the service type, the logged-in status. All arriving with every event, and none of it available in a single report.

The missing piece is almost always the same: nobody registered the parameters as GA4 custom dimensions.

This guide shows how to create them in six steps, and how to avoid wasting the limited slots you get.

What Is a Custom Dimension in GA4?

A custom dimension is an event parameter, user property or item parameter that you have registered in GA4 so you can report on it.

GA4 collects standard dimensions like page path, source and device on its own. Custom dimensions cover the details specific to your business.

There are three scopes:

Scope What it describes Example
Event One event form_name on generate_lead
User The person, across their events customer_type = trade or retail
Item One product inside an e-commerce event item size or colour

Registering is the step people miss.

Your tag can send form_name for months, and you still cannot break key events down by it until the dimension exists.

Before You Start

You need three things:

  • The Editor role or above on the property. Google requires it to create event-scoped dimensions.
  • A parameter you can send, through Tag Manager or the site code.
  • Room under your limits. Check Quota information on the Custom definitions page.

Here are the limits, from Google's custom dimension limits page:

Type Standard property Analytics 360
Event-scoped custom dimensions 50 125
User-scoped custom dimensions 25 100
Item-scoped custom dimensions 10 25
Custom metrics 50 125
Calculated metrics 5 50

Fifty sounds like plenty. It runs out faster than you think on a property that several agencies have worked on.

Step 1: Decide Which Parameters Deserve a Dimension

Start with the questions, not the parameters.

For each candidate, ask: will anyone filter or break down a report by this in the next year?

If not, it does not need a slot.

Good candidates on a service or B2B site:

  • form_name, to see which form produced each lead.
  • service_category, to group enquiries by what was asked for.
  • page_type, such as guide, service page or case study, to compare content groups.
  • customer_type as a user property, for logged-in sites.

Poor candidates:

  • Unique IDs and timestamps. Google advises against per-user IDs, per-session IDs and timestamps as custom dimensions. Use User-ID for identity instead.
  • Predefined parameters GA4 already understands. Registering them uses up quota without adding anything.
  • Anything personal. Names, email addresses and phone numbers should never reach GA4 at all.

If you have a GA4 measurement plan, this list is already in it. If not, this step is the short version.

Step 2: Choose the Right Scope

Scope decides what the value describes, and it cannot be changed after you save.

Use this rule of thumb:

  • Event scope when the value belongs to one action. The same visitor can submit a "quote" form today and a "callback" form tomorrow.
  • User scope when the value describes the person and stays true across visits, such as membership tier.
  • Item scope when the value describes one product in a purchase or basket event.

The common mistake is making a page-level detail user-scoped.

A user property holds a value about the person, so a page attribute like page_type belongs on events.

When in doubt, choose event scope. It is the most flexible and has the most slots.

Step 3: Send the Parameter With the Event

GA4 needs to receive the value before the dimension is useful.

In Tag Manager, open the GA4 event tag and add the parameter under event parameters.

Give it a clear name, such as form_name, and set the value from a variable.

That variable should come from a reliable source.

A data layer push from the form handler beats reading button text, which changes every time someone edits the page.

My explainer on the Google Tag Manager data layer covers how that works.

For user-scoped dimensions, send the value as a user property instead of an event parameter.

Two details matter here:

  • Spell the parameter name exactly as you will register it. The event parameter field cannot be changed after saving the dimension.
  • Watch values that look like numbers. Google notes that text resembling a number is converted, so a code like 94E40 becomes 9.4e+41. Prefix such codes with a letter.

Step 4: Check the Parameter Arrives in DebugView

Before you register anything, confirm the value reaches GA4.

  1. Turn on Tag Manager's preview mode or Tag Assistant.
  2. Trigger the event on the site, such as submitting the form.
  3. In GA4, open Admin, then DebugView under Data display.
  4. Click the event and look for your parameter and its value.

Check three things: the parameter is present, the value is right, and it is not empty on some pages or forms.

If it is missing, the problem is in the tag or the variable.

These steps to debug Google Tag Manager help you find where it drops.

Step 5: Register the Dimension in Custom Definitions

Now create the dimension. Google's guide to event-scoped dimensions lists the steps:

  1. In Admin, under Data display, click Custom definitions.
  2. Select the Custom dimensions tab.
  3. Click Create custom dimensions.
  4. Fill in the fields below, then click Save.
Field What to enter Can it change later?
Dimension name Readable name for reports, such as "Form name" Yes
Scope Event, User or Item No
Description What it holds and who added it Yes
Event parameter (or user property) The exact name your tag sends, such as form_name No

Hyphens are not allowed in the dimension name. Underscores and spaces are.

Pro tip: Use the description field as documentation. "Form that produced the lead. Sent by GTM tag GA4 - generate_lead. Added Oct 2026." saves the next analyst an hour of guessing.

Step 6: Wait, Then Use It in Reports

According to Google, the dimension becomes available 24 to 48 hours after the data was sent and the dimension was created.

Then put it to work:

  • Standard reports: add it as a secondary dimension, or add it to a detail report through report customisation.
  • Explorations: import it in the Variables column and use it as a breakdown or filter.
  • Audiences: build an audience from users with a given value, such as customer_type equals trade.

In my experience, values only appear from around the time the dimension is registered.

Earlier events that carried the parameter do not fill in.

So register as soon as the parameter goes live.

If a key report depends on the new dimension, check that your key events fire correctly too.

A form_name breakdown of a broken key event is still broken.

How to Manage Custom Dimensions Over Time

Custom dimensions pile up. Every agency adds a few, and nobody removes any.

Keep them tidy with three habits:

Keep a register. One row per dimension: name, scope, parameter, purpose, owner and date added.

Archive what nobody uses. Google's archiving guide says archiving frees a slot, but it cannot be undone. Audiences that use the dimension stop gaining users, and explorations and segments that use it will not load. Export the list of affected items first.

Watch cardinality. If a report shows a large (other) row, a high-cardinality dimension may be the cause. Move that kind of detail to BigQuery, which holds every raw parameter whether or not it was registered. My piece on GA4 data retention covers why BigQuery is worth linking early.

Unregistered parameters, missing dimensions and (other) rows all feature in my GA4 audit checklist.

Register Your First Dimension Today

Pick one parameter your tags already send that someone keeps asking about. form_name is usually the easiest win.

Check it in DebugView, register it with a proper description, and look at the report in two days.

If you would rather plan the whole set at once, choosing dimensions, scopes and data layer fields together is part of how I build a GA4 implementation.

Where the parameters come from a crowded container, a Google Tag Manager cleanup usually comes first, and the GA4 setup service picks up from there.

Frequently asked questions

What is the difference between an event parameter and a custom dimension in GA4?

An event parameter is the extra detail you send with an event, such as form_name with a generate_lead event. A custom dimension is that parameter registered in GA4 Admin so it becomes available in reports, explorations and audiences. You can send many parameters, but only registered ones show up as dimensions you can filter and break down by.

How long do GA4 custom dimensions take to show data?

Google Analytics Help says you can use a new custom dimension in reports 24 to 48 hours after the custom data was sent and the dimension was created. Until then you may see (not set) or nothing at all. DebugView shows the parameter arriving straight away, so use it to confirm the setup while you wait.

Do GA4 custom dimensions work on historical data?

In my experience, no. Reports show values for a custom dimension from around the time it is registered, not for earlier events that carried the same parameter. That is why I register dimensions as soon as the parameter goes live. If you link BigQuery, the raw parameter values are in the export whether or not they were registered.

What happens when I hit the custom dimension limit in GA4?

You cannot create more until you free a slot. Archiving an unused dimension frees one, but archiving cannot be undone and it invalidates audiences, explorations and segments that use it. Google also notes that after deleting dimensions you need to wait 48 hours before adding new ones, so plan replacements in advance.

About the author

Kristijan Gjorgjioski

Independent SEO consultant · 6+ years in SEO · 60+ client websites worked on

I'm an independent SEO consultant with 6+ years in SEO. I run audits, migrations and content programmes for businesses in Europe, the UK and the USA, and I build the automation behind my own research.

Need help with ga4 setup?

Book a free 30-minute call. I look at your site first and tell you plainly what I would fix, and in what order.