GTM Kit pushes standard GA4 events to your dataLayer so Google Tag Manager can pick them up without you writing any tracking code. This page lists every event the plugin sends, when it fires, which tier it ships in, and the parameters it carries.
Free covers the GA4 standard events plus the full WooCommerce e-commerce set. Premium adds the advanced commerce events (wishlist, refunds, server-side order and subscription events).
How events reach your dataLayer
Events are pushed through GTM Kit’s client-side seam (window.gtmkit.events.push()), which writes to the dataLayer variable configured in your settings (dataLayer by default). For e-commerce events, the plugin clears the previous ecommerce object with a { ecommerce: null } push before each event, as Google recommends, so values never leak between events.
Most e-commerce events follow the GA4 recommended ecommerce schema: an event name and an ecommerce object containing event-level fields plus an items array. Server-side Premium events (refund, order_paid, and the off-session subscription events) are dispatched from your server to your server-side GTM (sGTM) container rather than pushed to the browser dataLayer.
The item object
Every e-commerce event carries one or more items in ecommerce.items. Each item is built the same way, so it is documented once here and referenced by the events below.
| Parameter | Always present | Description |
|---|---|---|
item_id | Yes | Product SKU or product ID, with the configured prefix applied. SKU is used when “Use SKU” is enabled, otherwise the numeric product ID. |
id | Yes | Legacy alias of item_id, kept for backward compatibility. |
item_name | Yes | Product title. |
currency | Yes | Store currency (ISO 4217, e.g. USD). |
price | Yes | Unit price, resolved against your include/exclude-tax setting. |
item_brand | Optional | Populated when a brand taxonomy is selected in the WooCommerce settings. |
item_category, item_category2, … | Optional | The product’s primary category hierarchy, one parameter per level. |
item_variant | Variations only | Selected variation attributes. |
google_business_vertical | Optional | Populated when a Google business vertical is configured. |
quantity | Cart / order contexts | Quantity for the line item. |
coupon | When a coupon applies | Pipe-separated coupon codes affecting the item. |
discount | When a coupon applies | Discount amount on the item. |
index, item_list_name | List contexts | Position and list name, set on view_item_list and select_item. |
The item object is filterable, and several parameters depend on the WooCommerce integration settings (SKU usage, ID prefix, brand taxonomy, category depth, tax handling).
Search
search
Tier: Free
Fires: On search results pages with a non-empty query term.
| Parameter | Description |
|---|---|
search_term | The trimmed, decoded search query. |
Account
login
Tier: Free
Fires: When a user logs in (WordPress core, WooCommerce My Account, or REST). Handed off server-side so it stays cache-safe.
| Parameter | Description |
|---|---|
method | Login method. Defaults to wordpress; can be set per provider for social-login setups. |
sign_up
Tier: Free
Fires: When a new account is created on the front end. Front-end registrations only (programmatic/admin user creation is excluded).
| Parameter | Description |
|---|---|
method | Registration method. wordpress for standard registration, upgraded to woocommerce when the account is created through a WooCommerce checkout or My Account flow. |
user_data
Tier: Free
Fires: Alongside the purchase event on the order-received page, when “Include customer data” is enabled in the WooCommerce settings.
This is a user_data object (not a standalone GA4 event) carrying hashed customer identifiers, formatted for GA4 user-provided data / enhanced conversions.
| Parameter | Description |
|---|---|
sha256_email_address | SHA-256 hash of the normalized billing email. |
sha256_phone_number | SHA-256 hash of the normalized billing phone. |
address.sha256_first_name | SHA-256 hash of the billing first name. |
address.sha256_last_name | SHA-256 hash of the billing last name. |
address.street | Billing address line 1. |
address.city | Billing city. |
address.region | Billing state / region. |
address.postal_code | Billing postcode. |
address.country | Billing country. |
WooCommerce e-commerce (standard)
These events ship in Free and Premium. All carry an ecommerce object.
view_item_list
Tier: Free
Fires: On pages that render product lists (shop, category, search results, product blocks).
| Field | Description |
|---|---|
ecommerce.items | The products in the list. Each item carries index and item_list_name. |
view_item
Tier: Free
Fires: On the single product page, and again when a variation is selected on a variable product. Variable-product behaviour is governed by the “variable product tracking” setting.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Item price. |
ecommerce.items | The viewed product (single item). |
select_item
Tier: Free
Fires: When a product is clicked within a product list.
| Field | Description |
|---|---|
ecommerce.items | The clicked product, carrying its index and item_list_name. |
add_to_cart
Tier: Free
Fires: Adding to cart from a product list, the single product page (simple, variable, and grouped products), and when cart quantity is increased on the cart page.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Price × quantity added. |
ecommerce.items | The added product(s). |
view_cart
Tier: Free
Fires: On the cart page.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Cart total (per tax setting). |
ecommerce.items | All cart line items. |
remove_from_cart
Tier: Free
Fires: Clicking a remove link (cart or mini-cart), and when cart quantity is decreased on the cart page.
| Field | Description |
|---|---|
ecommerce.currency | Store currency (on quantity-decrease). |
ecommerce.value | Price × quantity removed (on quantity-decrease). |
ecommerce.items | The removed product(s). |
begin_checkout
Tier: Free
Fires: On the checkout page.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Cart total (per tax setting). |
ecommerce.coupon | Pipe-separated applied coupon codes, when present. |
ecommerce.items | All cart line items. |
add_shipping_info
Tier: Free
Fires: When a shipping method is chosen, or on place-order, depending on the configured trigger.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Cart value. |
ecommerce.shippingTier | Selected shipping method. |
ecommerce.items | All cart line items. |
add_payment_info
Tier: Free
Fires: When a payment method is chosen, or on place-order, depending on the configured trigger.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Cart value. |
ecommerce.payment_type | Selected payment method. |
ecommerce.items | All cart line items. |
purchase
Tier: Free
Fires: On the order-received (thank-you) page, once per order (tracked to prevent duplicates).
| Field | Description |
|---|---|
ecommerce.transaction_id | Order number. |
ecommerce.value | Order total (per tax and shipping settings). |
ecommerce.tax | Total tax. |
ecommerce.shipping | Shipping total. |
ecommerce.currency | Order currency. |
ecommerce.coupon | Pipe-separated coupon codes, when present. |
ecommerce.items | Ordered products. |
new_customer | true when the order is from a first-time customer. |
WooCommerce e-commerce (advanced, Premium)
These events require GTM Kit Premium. The server-side events are sent to your server-side GTM container.
add_to_wishlist
Tier: Premium
Fires: Clicking a wishlist button, on product lists and the single product page. Works with configurable CSS selectors and supports TI WooCommerce Wishlist.
| Field | Description |
|---|---|
ecommerce.currency | Store currency. |
ecommerce.value | Item price × quantity. |
ecommerce.items | The wishlisted product. |
refund
Tier: Premium
Fires: Server-side, when an order is refunded or cancelled. Dispatched to your sGTM container.
| Field | Description |
|---|---|
ecommerce.transaction_id | Original order ID. |
ecommerce.currency | Order currency. |
ecommerce.value | Refunded value. |
ecommerce.shipping | Refunded shipping. |
ecommerce.tax | Refunded tax (negative). |
ecommerce.items | Refunded line items. |
attribution | Original-order attribution snapshot, when available. |
order_paid
Tier: Premium
Fires: Server-side, when an order reaches “Processing” status. Dispatched to your sGTM container. Carries the same ecommerce structure as purchase (transaction_id, value, tax, shipping, currency, items), plus the attribution snapshot when available.
subscription_started
Tier: Premium
Fires: On the order-received page when the order contains a WooCommerce subscription. An optional server-side mode is available.
| Parameter | Description |
|---|---|
subscription_id | The subscription ID. |
billing_period | Billing period (e.g. month, year). |
billing_interval | Number of periods between renewals. |
value | Subscription total. |
currency | Subscription currency. |
trial | true when the subscription includes a trial. |
Notes
- Most events have a per-event on/off toggle in the GTM Kit settings, so you can disable any event you’d rather implement yourself.
- E-commerce values and item prices respect your include/exclude-tax and shipping settings.
- Item parameters such as
item_brand, category depth, SKU usage, and the ID prefix are controlled by the WooCommerce integration settings.