Home / Guides

Your shop does not say add_to_cart

dl_add_to_cart, addToCart, productPageView, gtm4wp.addProductToCartEEC, ee-productView. Every platform invented its own vocabulary for the same five steps, and a checklist written against GA4 names finds nothing on any of them.

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:

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.

A dl_add_to_cart push in the events list with a smaller note beside it reading
The site's own spelling stays first and stays largest, because that is the name a trigger has to match. What GA4 would call it rides beside it, which is what lets an audit written against GA4 names work here at all.

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

  1. Triggers that never fire. A Custom Event trigger copied from a tutorial matches add_to_cart and the site pushes dl_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.
  2. 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.
  3. 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.

Doing this in the panel →

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