Disclaimer: The links to external resources provided in this article are for informational purposes only. Zenoti bears no responsibility for the accuracy, legality, or the content of the external site or for that of subsequent links.

Google Tag Manager is an E-Marketing tag tool, which adds analytics and audience measurement functionality to your Webstore. To set it up, you must add Google Tag Manager to Webstore.

After the set up, you can use Google Tag Manager for customized tracking based on your needs. For customized tracking Google Tag Manager uses tags, triggers, and variables from dataLayers, which are virtual layers (JavaScript objects) that temporarily stores data that gets generated by visitors engaging with your Webstore.

Configure tags for the Data Layer provided by Zenoti

Currently, Zenoti provides dataLayer for purchase events, with the code structure formatted in Universal Analytics enhanced ecommerce dataLayer format. You must configure triggers and variables based on custom events available in the dataLayer.


To configure tags for the Zenoti dataLayer you must set up triggers based on custom events available in dataLayer. There are 4 types of dataLayer events we send:


DataLayer Trigger

Service Booking


Gift Card Purchase


Membership Purchase


Series Package Purchase


Tip: You can club all 4 custom events into 1 trigger using a RegEx based custom event



Data Layer variables enable Google Tag Manager to read a value from your dataLayer implementation and turn it into a variable that can be passed to tags, triggers, and other variables. For Google Tag Manager to recognize custom data in the dataLayer, you must use a dataLayer variable.

As Zenoti follows Universal Analytics enhanced ecommerce dataLayer format, you may already be able to configure and fetch the values you need.

Below are the key dataLayer variables and their paths for use in Google Tag Manager.



Purchase Revenue


Transaction ID




Service Line (Custom)


You can use the Service Line (Custom) variable (with name eventtype) as an additional dataLayer variable when you want to implement any additional tracking logic.

Learn more

Did this answer your question?