How to dynamically return product array with Google Tag Manager and standard enhance e-commerce data layer using a lookup table

In this article, I’ll show you how to create a dynamic data layer variable to return the products array for each e-commerce action (e.i impressions, add to cart, checkout, etc…). Credit goes to Simo Ahava. He gave me this tip while answering a question I asked on the slack measure channel.

The issue: multiple data layer variable returning the same product array

When you want to return the products array with a standard Google Analytics Enhanced Ecommerce data layer, you have to create multiple data layer variables. More precisely, you have to create a data layer variable for each e-commerce action. Let’s take a look at the hierarchy of standard google e-commerce data layer JavaScript objects to understand better the issue I’m describing.

Here is the e-commerce object of purchases action:

'ecommerce': {
  'purchase': {
    'actionField': {
      'id': 'T12345',                         
      'affiliation': 'Online Store',
      'revenue': '35.43',                     
      'shipping': '5.99',
      'coupon': 'SUMMER_SALE'
    'products': [{ product one here },{ product two here }]

Here is the e-commerce object of checkouts action:

 'ecommerce': {
   'checkout': {
     'products': [{ products here }]

If you want to return the products array for each one of these actions you will need to go through the ecommerce object, then a second level object which is different for each action: purchase and checkout. You will end up creating a specific Data Layer Variable for each e-commerce action:

Data Layer Variable

It can be even worth if you try to capture specific variables within the products array. When you have a container with hundred of elements saving few variables is always a good thing.

That’s why I looked for a way to always return the products array independently of the e-commerce action.

The solution: e-commerce event action lookup table

Simo came up with a nice and easy solution using a lookup table associated with event action. The lookup table takes action ecommerce event as Input and javascript object as Output. The following capture speaks for itself:

google tag manager lookup table

then you can pass the lookup table as a variable into your main products variable:

Google Tag Manager Data Layer Variable


Nothing fancy, but when working with a standard data layer e-commerce implementation, it can help save few variables. It is also an interesting mechanic to share as it is a good example of how you can use a lookup table. Ultimately it is also a good remember that you should ALWAYS ALWAYS attached an event variable which each data layer push.


Leave a Comment