# GTM Event Settings for production store catalogues

Reuse currency, coupon and user properties across Google tags and GA4 Event tags instead of pasting the same parameters on every catalogue event.

- Date: 2026-09-21
- Category: Tag Manager

GTM Event Settings are the reusable event-level parameter pack I attach to a Google tag or a GA4 Event tag so Magento, Shopify and WooCommerce catalogues stop pasting `currency`, `coupon` and `content_group` into every tag by hand. I am Alan Vo, a Gold Coast web developer. Eighteen years of storefronts taught me that AUD on the PDP and USD on checkout is not a reporting style. It is a broken feed.

This note is for production catalogues I ship. Google's [Reuse event settings in Google Tag Manager](https://support.google.com/tagmanager/answer/13438771?hl=en) page is the product name I mean: a user-defined variable of type Google Tag: Event Settings. You fill it once, inherit it on the tags that should share those values, and override one field when one event is different. It is not a `dataLayer` and it will not invent `items` for a Magento configurable or a Woo variation.

## What GTM Event Settings changed for catalogue measurement in 2026

GTM Event Settings changed catalogue measurement because the Google tag in Tag Manager now has a first-class place to reuse event parameters and user properties, instead of cloning the same pairs across a dozen GA4 Event tags. Google's [Set up your Google tag in Google Tag Manager](https://support.google.com/tagmanager/answer/15756616) help page calls that field Shared event settings. The reuse article's example is a store sale: put `discount` in the variable once instead of editing every tag.

That is the 2026 shape I walk into. A Shopify Plus theme still fires `view_item`, `add_to_cart`, `begin_checkout` and `purchase`. A Magento store view still has a currency. A WooCommerce catalogue still has a coupon that only exists after apply-coupon. If each GA4 Event tag types `currency` as a constant, someone will change the AUD store and leave the gift-card tag on USD.

Google's [Set up event parameters](https://developers.google.com/analytics/devguides/collection/ga4/event-parameters) guide (last updated 3 June 2026) is the other half. Recommended names already have required and optional parameters. Custom names still have to be [registered as custom dimensions or metrics](https://support.google.com/analytics/answer/14240153) before Explorations can use them. The variable does not register anything. If you add `store_view` and skip the event-scoped dimension, DebugView looks healthy and the report stays empty.

I do not invent a conversion lift from tidying the container. Their Nibs still has the Shopify figures I can publish: 31% more conversions and 48% more orders after a rebuild that was not a GTM variable. The Magento retail conversion case still has the +$2.5m year-on-year sales figure. Event Settings is how I keep those stacks from reporting two currencies on the same order. Google's [user-defined variable types](https://support.google.com/tagmanager/answer/7683362) list names both Configuration Settings and Event Settings. Mixing them is the first ticket I close.

![GTM Event Settings container work on a developer laptop](../../images/blog/gtm-event-settings-catalogues-1.jpg)

## How GTM Event Settings actually work on a catalogue

GTM Event Settings actually work as a user-defined variable you create under Variables, then attach either to a Google tag (every event that tag owns) or to a GA4 Event tag (only that event). Google's reuse article is the click path: Variables, New, Variable Configuration, Google Tag: Event Settings. You add predefined names from their table, or you type a custom name. You can also add Google Analytics user properties as key-value pairs on the same variable.

The predefined list is not an event name list. Google says that outright. `currency`, `coupon`, `value`, `transaction_id`, `content_group`, `language`, `shipping`, `tax`, `items` and `user_data` sit there because they are event parameters. `language` is the one Google pre-fills, from `navigator.language`. If you set `value`, the table still wants `currency` so revenue math is not fiction.

Attach the variable on a Google tag when the parameter should travel with every event that tag sends. Attach it on a GA4 Event tag when only `purchase` or `view_item` should carry it. The UI then lets you Show inherited settings, Edit a value for that tag only, or Reset the override. I use that on Magento when shared `currency` is right and a gift-card purchase needs a different `coupon`.

Configuration Settings is the other variable. Google's [Reuse configuration settings](https://support.google.com/tagmanager/answer/13438166?hl=en) page is for load-time behaviour: `cookie_domain`, `server_container_url`, `send_page_view`, `user_id`. `user_id` there must not be PII and has a 256 character limit. Event Settings is the payload on the event. `server_container_url` in Event Settings will not move collect hits to your tagging server.

User properties are the third slot. Google's Google tag setup page says you can set up to 25 additional user properties per GA4 property. A store-view code is a user property. A SKU is not. SKUs belong in `items`.

`items` is where catalogues get expensive. Google's [Measure ecommerce](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce) guide wants `currency` at event level whenever you send `value`. An `items` array can hold up to 200 products, plus up to 27 custom item parameters. Google's [item-scoped custom parameters](https://developers.google.com/analytics/devguides/collection/ga4/item-scoped-ecommerce) page is the quota: 10 item-scoped custom dimensions on a standard property, 25 on Analytics 360. I do not put `items` in the shared Event Settings on the Google tag.

![Browser debug tools open beside a notepad](../../images/blog/gtm-event-settings-catalogues-2.jpg)

On Magento and WooCommerce I resolve `currency` and `content_group` from the dataLayer the theme already pushes. On Shopify, theme-hosted GTM can read a dataLayer in `theme.liquid`. A [Shopify custom pixel for Google Tag Manager](https://alanvo.com/blog/shopify-gtm-custom-pixel/) cannot. I keep Event Settings in the web container for storefront pages, and I map checkout parameters inside the pixel so the same names leave both rooms. Google's table also lets you set `user_data` to null on selected pages to opt out of automatic user-provided data.

## Production checklist for GTM Event Settings

The production checklist for GTM Event Settings is one shared variable for values that belong on every event, separate variables for ecommerce events that carry `items`, then DebugView on a real order.

1. Inventory the Google tags and GA4 Event tags. Keep one web container. Export the current version before you touch Shared event settings.
2. Create a user-defined Google Tag: Event Settings variable. Name it for the scope, such as Shared catalogue events, not Settings 2.
3. Put only cross-event keys in the shared variable: `currency`, `content_group`, and `language` if the store view is not the browser language. Leave `items`, `transaction_id`, `value`, `shipping` and `tax` off this one.
4. Create a second Event Settings variable for purchase and refund. Map `transaction_id` to the platform order id, `value` to the sum of price times quantity, plus `shipping`, `tax`, `coupon` and `items`.
5. Create a third for item views and cart mutations if those tags share an `items` builder. Do not reuse the purchase variable on `view_item_list`.
6. Attach the shared variable on the Google tag as Shared event settings. Trigger that Google tag on Initialization - All pages, as Google's setup page recommends.
7. Attach the ecommerce variables on the matching GA4 Event tags. Show inherited settings. Override `coupon` or `value` only when that event is the exception.
8. If you need user properties, add them on the shared variable and stay at or under 25 extras per property. Register each custom user property as a user-scoped custom dimension.
9. Register every custom event parameter you typed by hand. Google's custom definitions page says reporting can take 24 to 48 hours. Predefined ecommerce names do not need a second registration.
10. Preview a collection, a product, cart, checkout and a paid test order. Confirm `currency` matches the shop and `items` is absent on `page_view`. Refund the order. Reconcile `transaction_id` against the platform.

![Server racks as a stand-in for server-side tagging](../../images/blog/gtm-event-settings-catalogues-3.jpg)

Consent still sits in front. An Event Settings variable does not grant `ad_storage`. [GTM Consent Mode for Australian storefronts](https://alanvo.com/blog/gtm-consent-mode-australia/) is the AU-shaped version. If hits already travel on a first-party path, [Google tag gateway](https://alanvo.com/blog/google-tag-gateway/) is the host change, not a second parameter pack.

## What breaks when GTM Event Settings sit on the wrong tag

What breaks when GTM Event Settings sit on the wrong tag is inheritance: a shared `items` array on the Google tag, or a purchase-only `transaction_id` leaking onto `view_item`. Google's reuse UI will inherit whatever you selected. Preview is where that shows up, not the variable editor.

The second break is Configuration Settings in the Event Settings slot. `server_container_url` and `send_page_view` belong on the Google tag configuration. Drop `send_page_view` into Event Settings and you still get the default page view. Drop `cookie_prefix` into Event Settings and the cookie name does not change.

The third break is a constant `currency` that does not match the store. Magento multi-store is the usual case. The AUD view and the USD view share one GTM container. A constant `AUD` makes the US purchase look Australian. I bind `currency` to the dataLayer the store view already emits. Google's ecommerce recommendations say to set `currency` at event level when you send `value`. They do not say to hard-code it if the shop has two currencies.

The fourth break is custom parameters you never register. `fitment` or `store_code` will appear in DebugView and vanish from Explorations. Standard properties have a quota of 50 event-scoped custom dimensions and 10 item-scoped custom dimensions. Burning one on `transaction_id` is the anti-pattern the custom definitions page names, because that field is already predefined.

The fifth break is `items` built from the DOM. A Magento configurable shows the parent. A Woo variation gallery shows the first colour. [GA4 ecommerce events](https://alanvo.com/blog/ga4-ecommerce-events/) still want `item_id` to match the Shopping feed.

The sixth break is Shopify checkout. An Event Settings variable in the web container does not travel into Customer Events. I duplicate the parameter names in the pixel mapping. Two Google tags with two shared variables that disagree is the same class of mess. [Google tag and Tag Manager unification](https://alanvo.com/blog/gtm-google-tag-unification/) still applies: one Google tag, one shared Event Settings variable, then the ecommerce tags.

## How to measure GTM Event Settings

You measure GTM Event Settings in Tag Assistant and GA4 DebugView, then against platform orders, not against a green badge on the variable. Preview the workspace. Open the Google tag and each GA4 Event tag. Show inherited settings must list the keys you expect. An edited key should show as an override. A Reset should bring the shared value back.

![Sticky notes mapping events on a desk](../../images/blog/gtm-event-settings-catalogues-4.jpg)

In DebugView, pick `view_item`, `add_to_cart`, `begin_checkout` and `purchase` from the same session. `currency` should be identical when `value` is present. `items` should exist on those ecommerce events and not on `page_view`. `transaction_id` on `purchase` should be the Magento increment id, the Shopify order name you chose to send, or the WooCommerce order number. Google's ecommerce purchase example uses `transaction_id` as the dedupe key. Duplicates are how refunds stop matching.

If you added custom parameters, wait for the custom definition. Google's custom dimensions page says 24 to 48 hours before you can report and advertise with the new field. Event Settings does not add a second `gtm.js`. If the page got heavier, you added a tag. [Defer third-party tags](https://alanvo.com/blog/defer-third-party-tags/) still applies to chat and reviews.

I do not report a conversion percentage from creating the variable. I report whether inherited parameters match the shop, whether `items` stay on ecommerce events, and whether 48 hours of purchases match the platform after a refund of the test order.

## Related work on this site

Related work on this site is the catalogues where measurement already had to survive a real purchase path. [Their Nibs](https://alanvo.com/work/their-nibs/) is the Shopify rebuild with the published +31% conversions and +48% orders. [Offporter](https://alanvo.com/work/offporter/) is another Shopify storefront where checkout events cannot live only in `theme.liquid`. [Retail conversion](https://alanvo.com/work/retail-conversion/) is the Magento work with the published +$2.5m year-on-year sales figure, which is where a shared `currency` across store views is a production object. Pairing notes: [Google tag gateway](https://alanvo.com/blog/google-tag-gateway/) and [GA4 ecommerce events](https://alanvo.com/blog/ga4-ecommerce-events/).

## GTM Event Settings FAQ

GTM Event Settings FAQ answers are the production questions I get after someone pastes `currency` into twelve tags and calls the container done.

### Do GTM Event Settings replace a dataLayer on Magento or WooCommerce?

GTM Event Settings do not replace a dataLayer on Magento or WooCommerce. The variable repeats values you already resolved. `currency`, `items` and `transaction_id` still have to come from the theme, a module, or a dataLayer variable. If the layer is empty, inheritance just shares the emptiness.

### Should I put items inside a shared GTM Event Settings variable?

You should not put `items` inside a shared GTM Event Settings variable on the Google tag. Google's ecommerce guide attaches `items` to shopping events. A shared array will leak last page's product onto `page_view` or reuse a cart on `view_item_list`. Keep `items` on the Event Settings variable that only the ecommerce tags inherit.

![Laptop showing a tag manager overview screen](../../images/blog/gtm-event-settings-catalogues-5.jpg)

### How do GTM Event Settings differ from Configuration Settings?

GTM Event Settings differ from Configuration Settings in when they apply. Event Settings send parameters with events. Configuration Settings change how the Google tag loads: cookies, `server_container_url`, `send_page_view`, `user_id`. Google documents them as two variable types. I attach both to the Google tag when both are needed, and I do not swap the dropdowns.

### How do I debug GTM Event Settings on a Shopify checkout?

You debug GTM Event Settings on a Shopify checkout in two places. Theme-hosted GTM can inherit the web-container variable. Checkout in a custom pixel cannot. Confirm storefront events in Tag Assistant, then confirm `checkout_completed` in Customer Events and Pixel Helper. If the names differ, the reports will treat them as different shops.

I keep Event Settings boring on purpose. Shared keys stay shared. Purchase keys stay on purchase. The catalogue already has enough ways to lie about revenue.


![GTM Event Settings container work on a developer laptop](../../images/blog/gtm-event-settings-catalogues-6.jpg)


HTML version: https://alanvo.com/blog/gtm-event-settings-catalogues/
