1.10.5 • Published 2 years ago

@strawberrydigital/ecom-data-layers v1.10.5

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Usage

Registering Event Listeners

You can register event listeners using an array of objects when initialising the TagManager library:

[
  {
    "event": "gtmEventName",
    "listener": "event:fired",
    "dataSource": "event"
  },
  {
    "event": "gtmEventName2",
    "listener": "product:viewed",
    "dataSource": "[data-gtm-product]"
  }
]
OptionDescription
eventThe name of the event in Google Tag Manager.
listenerThe event to listen for on the page. For example, you may fire a cart:added event when a product is added to the cart.
dataSourceWhere the data for the dataLayer is going to come from. Use "event" to get the data from the event's detail, or you can use a selector to get the data from a

Using the event data source

Use the event data source to get the data to be pushed to the datalayer from the event itself.

For example, let's say you fire this CustomEvent:

dispatch(new CustomEvent('cart:added', {
    detail: {
        productId: 12345,
        title: 'Plain White Tee',
        price: 1699
    }
}));

The data pushed to the data layer would be

{
  "productId": 12345,
  "title": "Plain White Tee",
  "price": 1699
}

Using the event data source with a callback

If you want to use an event's detail as a data source, but the detail from the event isn't quite in the format you need it, you can specify a callback to manipulate the data before it's pushed to the data layer.

Using the example from above, you could do the following to manipulate the price:

{
    "event": "addToCart",
    "listener": "cart:added",
    "dataSource": data => {
        ...data,
        price: Number(data.price / 100).toFixed(2) // "16.99"
    }
}

Using a selector as a data source

If the data you'll be pushing to the data layer is static, you can instead pass a selector as a dataSource value.

Consider this event listener:

{
  "event": "pageView",
  "listener": "DOMContentLoaded",
  "dataSource": "[data-gtm-page]"
}

In the template, you can set up the data layer object within a JSON script tag:

<script data-gtm-page type="application/json">
    {
        title: "Meet the Team",
        page_language: "en",
        logged_in_status: true,
        customer_id: 1
    }
</script>

Initialise the TagManager

// Example
new TagManager([
    {
        event: "searchOpen",
        listener: "search:opened",
        dataSource: "event",
    },
    {
        event: "productView",
        listener: "pdp:viewed",
        dataSource: "[data-gtm-product]"
    }
]);
1.10.5

2 years ago

1.2.0

2 years ago

1.10.4

2 years ago

1.10.3

2 years ago

1.10.2

2 years ago

1.9.0

2 years ago

1.8.0

2 years ago

1.7.1

2 years ago

1.7.0

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.5.1

2 years ago

1.3.3

2 years ago

1.5.0

2 years ago

1.3.2

2 years ago

1.4.0

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.10.1

2 years ago

1.10.0

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago