Back to Google Analytics in Google Sheets
SheetXAI logo
Google Analytics logo
Google Analytics · Google Sheets Guide

Export GA4 Custom Dimensions and Metrics to Google Sheets for Documentation

2026-05-13
4 min read
See the Excel version →

The Scenario

You are a marketing ops manager. Platform migration starts in four weeks. Your team is moving from one analytics platform to another and needs a complete inventory of every custom dimension and custom metric on your GA4 property before the cutover — all 25 custom dimensions and 10 custom metrics — in a format that engineers and stakeholders can both read.

The GA4 Admin panel shows you each custom dimension one at a time. It does not export a list. You can use the Admin API to pull the full list programmatically, but that requires writing a script. The migration is happening with or without you, and the engineers want the inventory by end of week.

The bad version of the next two days:

  • Open GA4 Admin → Custom Definitions → Custom Dimensions
  • Manually read and type each of the 25 dimensions into a Google Sheet: display name, parameter name, scope, description
  • Repeat for the 10 custom metrics
  • Realize you missed the "archived" filter and some of the 25 are archived — you have to go back and check each one
  • Cross-check the sheet against what engineers see in the API to make sure nothing is missing
  • You spend two days on data entry and still cannot be 100% sure the sheet matches the actual property state.

The fast version is one prompt.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent inside your Google Sheet that can list all custom definitions from your GA4 property in one call.

Open the SheetXAI sidebar and type:

List all custom dimensions and custom metrics on my GA4 property. Write them into my Google Sheet as two separate tables: one for custom dimensions starting at A1 with columns for Display Name, Parameter Name, Scope, Description, and Status (active or archived); and one for custom metrics starting at A30 with the same columns plus a Unit column.

SheetXAI calls the GA4 Admin API, pulls both lists in full, and writes them as two clean tables — no manual typing, no missed archived entries.

What You Get

Two reference tables in one sheet:

Custom Dimensions table (starting at A1):

  • Display Name — the human-readable label
  • Parameter Name — the raw parameter used in tagging
  • Scope — event-level or user-level
  • Description — whatever was entered when the dimension was created (blank if none)
  • Status — Active or Archived

Custom Metrics table (starting at A30):

  • Display Name — the human-readable label
  • Parameter Name — the raw parameter
  • Scope — event-level
  • Description — whatever was entered
  • Unit — Standard, Currency, Feet, Meters, etc.
  • Status — Active or Archived

Both tables include archived entries. This is the complete property state, not just what is currently active. For a migration, you need both.

What If the Data Is Not Quite Ready

Migration inventories always surface surprises. SheetXAI handles them inline.

When you want to flag parameters that look like they might conflict

Two custom dimensions might share a parameter name pattern with a GA4 standard field, which causes data collection issues.

List all custom dimensions on my GA4 property with display name, parameter name, scope, and status. After writing the table at A1, add a "Conflict Risk" column — flag any parameter name that is the same as or a known near-match for a GA4 standard parameter (like page_title, session_id, etc.).

When you want to sort by scope

Your engineering team needs to see all user-scoped dimensions separately from event-scoped dimensions for the migration plan.

List all custom dimensions from my GA4 property. Sort the table so user-scoped dimensions appear first, then event-scoped. Write at A1 with headers. Include archived entries and note their status in a Status column.

When you also need the count of how many events use each custom dimension

Knowing a custom dimension exists is one thing. Knowing it fired 50,000 times last month tells you whether it is business-critical.

List all custom dimensions on my GA4 property. For each one, also pull the count of events that sent that parameter last month from the GA4 Data API. Write both lists at A1 and A30 with an additional column for Last Month Event Count.

When you want the full migration doc in one shot

You need both tables, the event count column, a count of active vs archived for each type, and a one-paragraph migration notes section written from the data — all in one sheet by end of day.

List all custom dimensions and custom metrics on my GA4 property. For each, include display name, parameter name, scope, description, status, and last-month event count. Write custom dimensions at A1 and custom metrics at A30. Below each table, write a one-sentence count: "X active, Y archived." Then write a two-sentence migration note in cell A60 describing which dimensions and metrics appear critical based on event count and which appear safe to archive.

The pattern: instead of two days of manual data entry plus a cross-check, you describe the inventory you need and SheetXAI produces it directly from the GA4 Admin API.

Try It

Get the 7-day free trial of SheetXAI and ask it to export your GA4 custom definitions into any sheet you have open. The Google Analytics integration is included in every SheetXAI plan. See also how to export GA4 key events with counts for a tagging audit or the Google Analytics in Google Sheets overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more