Enhanced E-Commerce Bridge via JENTIS State
Many websites use the Google Tag Manager's window.dataLayer
to manage tracking and events. With JENTIS, it's possible to integrate seamlessly into this existing infrastructure. This guide outlines how to connect JENTIS to the dataLayer
using a JENTIS State, enabling reactive tracking based on dataLayer.push()
events.
💡 Product Note: JENTIS can automatically react to asynchronous data layer pushes (like
gtm.init
), enabling detailed tracking and tag activation based on external systems like GTM or other frontend tools.
Overview
To receive and respond to events from your website's dataLayer
, follow these steps:
Connect JENTIS to the dataLayer (via a State)
Create variables that read from dataLayer objects
Create triggers and tags that activate based on those variables
Step 1: Connect JENTIS to the dataLayer
We'll first configure a JENTIS State that listens to events in the global window.dataLayer
. This ensures JENTIS observes events both retrospectively (already pushed items) and in real time (new push()
calls).
Example: We want to react to
event: "gtm.init"
and track associated values likeevent_category
.
Setup Instructions
Go to JENTIS Tag Manager > States
Click on "+ Add New State"
In the "JavaScript Code" field, paste the following code:
function(initState){
var RELEVANT_EVENTS = ["gtm.init"];
var IGNORE_CASE = true;
var DATALAYER_NAME = "dataLayer";
var dl = window[DATALAYER_NAME] || [];
if(Array.isArray(dl) && dl.length > 0) {
dl.forEach(arrayItem => {
initiateRelevantStates(arrayItem.event, arrayItem);
})
}
var originalPush = dl.push;
dl.push = function(args){
originalPush.call(window[DATALAYER_NAME], args);
initiateRelevantStates(args.event, args);
}
window[DATALAYER_NAME] = dl;
function initiateRelevantStates(event_name, event_object){
if(Array.isArray(RELEVANT_EVENTS) && RELEVANT_EVENTS.length > 0 && typeof event_name !== "undefined") {
if(IGNORE_CASE) {
event_name = event_name.toLowerCase();
for(let i = 0; i < RELEVANT_EVENTS.length; i++)
RELEVANT_EVENTS[i] = RELEVANT_EVENTS[i].toLowerCase();
}
if(RELEVANT_EVENTS.includes(event_name)) {
initState(event_object);
}
} else if(typeof event_name !== "undefined") {
initState(event_object);
}
}
}
Step 2: Create Variables
To use values from the dataLayer, you need to create variables.
Example: Read event_category
event_category
Go to JENTIS Tag Manager > Variables
Click "+ Add New Variable"
Select "GTM Data Layer Value" as the template
Enter the key:
event_category
🔁 Occurrence Pointer:
first
: first match in the array
last
: most recent push
state context
: safest choice to refer to the data of the currently observed state
Step 3: Create a Trigger
Go to JENTIS Tag Manager > Triggers
Click "+ Add New Trigger"
Choose the JENTIS State you created
Optionally, add a condition (e.g.,
Event Category equals newsletter
)
Step 4: Create a Tag
Create a tag that uses the variable and is triggered by the above trigger.
Example:
Tool: Google Analytics 4
Template: Event
Trigger: previously created trigger
Parameters:
event_category
: reference the variable you created
Once done, preview and publish the setup.
Summary
This approach (Option A) connects JENTIS to existing GTM-style dataLayer pushes using a state. It ensures full compatibility with asynchronous pushes and provides a flexible, scalable way to map existing tracking setups into JENTIS. For even deeper integration, consider Option B, which uses code snippets directly within JENTIS instead of custom states.
Last updated
Was this helpful?