Don't have one? Create one ↗
← All courses

Lesson 5 of 15

A Gallery Of Worked Examples

The four questions only click once you've watched them resolve a few times. Here's the decision applied to interactions you'll actually meet, with the rung it lands on and why.

Interaction              Q that wins   Method                         Rung
-----------------------  -----------   ----------------------------   ----------------
Add to cart (Shopify)    Q1 yes        dataLayer push + CE trigger    1 dataLayer
"Book a demo" button     Q2 yes        Click trigger + CSS selector   2 built-in
Newsletter (HTML form)   Q2 yes        Form Submission trigger        2 built-in
Price shown on PDP       Q3 yes        DOM Element variable (patch)   3 DOM scrape
Calendly booking         Q4 yes        postMessage listener           4 listener
Intercom chat opened     Q4 yes        onShow callback listener       4 listener
Scroll to 75%            Q2 yes        Scroll Depth trigger           2 built-in
Logged-in user_id        Q1 yes        dataLayer push (dev-set)       1 dataLayer

What the gallery teaches

  • Most everyday tracking lands on rungs 1 and 2, the durable ones. Listeners are the exception, not the norm.
  • Embeds (Calendly, Intercom, a video player) almost always force rung 4, because their interaction happens inside an iframe or a vendor script GTM can't observe.
  • A DOM scrape shows up for values that are displayed but never pushed, like a price rendered server-side. Capture it now, ticket the dataLayer push for later.

The same interaction, two sites

"Add to cart" lands on rung 1 for a Shopify store that emits a clean add_to_cart push, but on rung 2 (a Click trigger) for a custom store that doesn't. The interaction didn't change, the available data did. Always choose for the site in front of you, not the textbook.

Key takeaway

Run real interactions through the four questions and a pattern emerges: durable rungs cover most work, embeds force listeners, and the "right" method depends on what data the specific site already exposes.