---
title: "GTM Kit 2.11.0: Exclude tax now covers cart, checkout, variations, coupons, and refunds"
date: 2026-05-11
author: "GTM Kit"
categories:
  - name: "Announcements"
    url: "/category/announcements.md"
---

# GTM Kit 2.11.0: Exclude tax now covers cart, checkout, variations, coupons, and refunds

GTM Kit 2.11.0 closes a long-standing rough edge in the WooCommerce e-commerce data layer: the “Exclude tax” toggle now actually does what its name promises. One switch controls tax handling for every standard e-commerce event GTM Kit emits — cart, checkout, purchase, variation prices, coupon discounts, and (paired with the next GTM Kit Woo and Premium releases) refunds.

If you have not toggled “Exclude tax” and your WooCommerce tax settings are simple, you may not notice anything. If your store falls into one of the configurations covered below, your GA4 numbers will move. Read the migration note before you upgrade on a busy store.

---

## What changed

### One toggle, every event

Until 2.11.0, the “Exclude tax” toggle only affected the `purchase` event. Cart and checkout events branched on WooCommerce’s “Prices entered with tax” setting; variation prices on the product page branched on the cart-display setting; per-item coupon `discount` branched on yet another setting. Different parts of the same data layer payload could disagree on whether tax was included.

In 2.11.0, every standard e-commerce event respects the same toggle. `view_cart`, `begin_checkout`, `purchase`, variation prices on variable product pages, and the per-item coupon `discount` field all use the same convention: toggle ON means ex-tax, toggle OFF means inc-tax. The invariant `sum(items[].price × quantity) === ecommerce.value` now holds in every event.

The companion GTM Kit Woo and GTM Kit Premium releases extend the same coverage to refund and order-paid events in those add-ons.

### Two new filters for developers

If you need to override the toggle’s effect from code (for example, a per-context tax convention different from the global setting), two new filters give you control:

- **`gtmkit_resolve_tax_mode`** — receives the resolved boolean (`true` for ex-tax, `false` for inc-tax) and lets you override per-event or per-context. Applied once per data layer payload.
- **`gtmkit_resolve_item_discount`** — receives the resolved per-item coupon discount value and lets you adjust it. Mirrors the tax-mode filter for the discount-specific path.

Both ship in core and are reachable from add-on plugins.

### Two minor compatibility fixes

- The “translation loading triggered too early” notice that WordPress 6.7+ logs against the `gtm-kit` text domain is silenced by registering translations earlier in `init`.
- A script-dependency notice edge case under WordPress 6.9.1+ when consent or CMP plugins toggled the GTM Kit container active mid-request is closed by asking the WordPress script registry directly which scripts were registered.

Both are purely defensive; you can ignore them unless you saw the warnings in your logs.

---

## Migration note

GA4 numbers may move after this update. Three configurations are affected:

1. **Stores with prices entered ex-tax and tax-inclusive cart display.** Cart and checkout `value` flips from ex-tax to inc-tax. (Same stores that prompted the support thread that drove this fix.)
2. **Stores running variable products with the “Exclude tax” toggle on.** Variation `value` and `price` on the product page flip from inc-tax to ex-tax to match the rest of the data layer.
3. **Stores using percentage coupons.** Per-item `discount` may flip convention to match the surrounding `price` field.

If you compensated for the prior inconsistency in a downstream transformation (server-side GTM container, BigQuery view, GA4 server config), remove the compensation when you upgrade. Otherwise you will double-correct.

Stores that have not toggled “Exclude tax” and use simple WooCommerce tax settings (entered and displayed the same way) see no numerical change.

---

## Developer notes

- New filters: `gtmkit_resolve_tax_mode`, `gtmkit_resolve_item_discount`. Both apply once per payload, both accept and return the resolved value.
- New helper: `\TLA_Media\GTM_Kit\Integration\Tax\TaxResolver` is the canonical price/total resolver for the data layer. Reachable from add-on plugins. Existing event builders that read `wc_prices_include_tax()`, `woocommerce_tax_display_*`, or the toggle option directly should migrate to the helper. New events should use the helper from the start.
- New schema entry: `integrations.woocommerce_exclude_tax` is now a registered option (previously only seeded by the legacy data import path). Default `false` (inc-tax data layer). Type `boolean`.

---

## What’s next

The companion GTM Kit Woo release that extend the same consistency to refund and order-paid events ship within the next few days, paired with each other.

Future tax-handling work in any new e-commerce events will use the same `TaxResolver` from day one. The toggle is no longer a partial promise.