You are handed a shop, told the dataLayer is ready, and asked to wire up GA4. You open the events
list, add something to a cart, and the push that arrives is called productDetail. Or
dl_add_to_cart. Or gtm4wp.addProductToCartEEC. None of them is the name in the
documentation you were reading.
This is not a misconfiguration. Every commerce platform that ever shipped a GTM integration invented its own vocabulary for the same five steps, and most of them predate GA4’s.
The same funnel, six ways
What GA4 calls add_to_cart is spelled, depending on where you are standing:
dl_add_to_cart— Shopify with Elevar, whose whole vocabulary is prefixed:dl_view_item,dl_begin_checkout,dl_purchase.addToCart— VTEX’s GTM app, alongsideproductDetail,productClickandorderPlaced.addToCartagain — Adobe Commerce’s client data layer, which also gives youproductPageView,initiateCheckoutandplaceOrder.gtm4wp.addProductToCartEEC— WooCommerce on GTM4WP’s legacy Enhanced Ecommerce mode. Current GTM4WP pushes GA4 names, so this one tells you the plugin is old.cart_add— Tealium’s standardised set.ee-productViewand its relatives — theee-prefix is a convention on top of the old Universal Analytics vocabulary, not a vocabulary of its own.
And then there is casing. AddToCart, ADD_TO_CART and add-to-cart
are the same word to a human and three different events to GTM.
This is why an e-commerce validator on such a site reports nothing rather than reporting a problem.
A checklist that compares against literal GA4 names is not wrong on a VTEX shop — it is mute, which
looks identical to "everything passed". Tag Master resolves the spelling to the GA4 event it means
and runs the audit on that, while still showing the site’s own name. A mapping it cannot verify is
left as a gap rather than guessed at, because an invented mapping would assert that something is an
add_to_cart when it might not be.
What this breaks, in order of cost
- Triggers that never fire. A Custom Event trigger copied from a tutorial matches
add_to_cartand the site pushesdl_add_to_cart. Preview Mode shows the tag not firing and gives no reason, because from GTM’s side there is nothing wrong: no such event occurred. - Audits that pass by silence. Every "is the e-commerce layer correct" check keyed to GA4 names returns clean on a shop it has never understood.
- Half-migrated setups. A theme pushing the legacy vocabulary and a plugin pushing the GA4 one, both live, is how the same add-to-cart gets counted twice under two names.
Read the name, then map it
The reliable move is to stop assuming and read. Do one thing on the page and look at the event name that arrives — catching the push that a single interaction produced is exactly this, and it hands you the name spelled the way the site spells it, along with the values underneath.
Then map rather than rename. Trigger on the site’s own spelling; send the GA4 name from the tag. The translation lives in one place you control, instead of in a fork of a platform app that will be updated out from under you. If you are building the setup from several pushes across a checkout, the same collection can be exported as a container file with the real names already in it.
Two things to check before you trust the list
First, casing, every time. Copy the name out of the push rather than typing it.
Second, whether you are seeing the whole layer at all. On Shopify the interesting events may be running inside a sandbox your inspector cannot reach, in which case the vocabulary question is moot until you go to the network instead. A dialect you cannot see is not a dialect problem.
Questions
Why does my shop push dl_add_to_cart instead of add_to_cart?
Because dl_ is Elevar’s Shopify vocabulary, not GA4’s. The event means add_to_cart; only the spelling differs. The tag that listens for it has to listen for the name the site really pushes.
Is a GTM Custom Event trigger case sensitive?
Yes. addToCart, AddToCart and add_to_cart are three different events to GTM, and a trigger matching one will never fire on the others. This is the single most common reason a correct-looking trigger never fires.
Should I rename the events to GA4 names?
Usually not. The platform pushes what it pushes, and renaming at the source means maintaining a fork of somebody’s app. Map instead: trigger on the site’s spelling, send the GA4 name in the tag. One place to change if the platform changes.
How do I find out which dialect a site uses?
Do the thing on the page — add an item, start the checkout — and read the event name that arrives. That is the only reliable answer, because the same platform ships different vocabularies across app versions and themes.
The rest of this group: Shops and their data layers
More in Shops and their data layers
Try it on your own site
Tag Master is free, needs no account, and collects no data.
Add to Chrome — Free