Google Tag Manager: Events and Data Sent by the Booking Widget

When you turn on Enable host page Google Tag Manager tracking in the booking widget settings, Buzzshot will push GA4-shaped e-commerce events to the dataLayer on the page that embeds the widget. From there you can use GTM triggers and tags to forward them on to GA4, Google Ads, or any other tag platform.

This article is a reference for the events and data we send. For a step-by-step setup guide that wires GTM up to GA4, see Ecommerce Tracking to GA4. For a higher-level overview of all the tracking options, see Tracking and Analytics for the Booking Widget.

For web developers and marketing agencies: this article is intentionally technical — it's safe to forward to whoever manages your GTM container. If you previously had tracking working with another booking system (Bookeo, Resova, etc.), your existing GTM configuration almost certainly needs reconfiguring: each booking system uses its own event names and data structure, and your tags will have been tuned to the previous one.

Enabling

  1. In Buzzshot, go to Settings > Booking Widget
  2. Open the widget you want to configure
  3. Click the Tracking tab
  4. Turn on Enable host page Google Tag Manager tracking
  5. Click Save

GTM must already be installed on the website where you embed the widget. The widget pushes events to your website's GTM container — it doesn't install or use one of its own.

Format

Every event is pushed to window.dataLayer using GA4's standard e-commerce schema. The event has an event property (the event name) and, for e-commerce events, an ecommerce object containing the data:

window.dataLayer.push({
  event: "add_to_cart",
  ecommerce: {
    currency: "USD",
    value: 60.00,
    items: [
      {
        item_id: "ROOM-1",
        item_name: "The Heist",
        price: 30.00,
        quantity: 2,
        item_variant: "Adult Ticket"
      }
    ]
  }
});

Before each e-commerce event we also push { ecommerce: null } to clear any previous e-commerce data, as recommended by Google. This means you'll see two pushes per e-commerce event in your dataLayer.

Events

The widget sends these events:

Event When it fires
page_view Every time the customer navigates to a new page in the widget. Includes a page_path parameter.
view_item The customer opens a room (or other bookable) details page.
add_to_cart The customer adds a slot or product to their cart.
remove_from_cart The customer removes something from their cart.
view_cart The customer views the cart.
begin_checkout The customer starts checkout.
purchase The customer completes a booking and payment. Includes a transaction_id.

E-commerce Data

For all e-commerce events (everything except page_view), the ecommerce object contains:

Field Description
currency The currency code, e.g. "USD", "GBP", "EUR"
value Total price as a number, e.g. 60.00
items Array of items — see below

For purchase events the ecommerce object also contains:

Field Description
transaction_id Buzzshot's order reference (also shown to the customer on the confirmation page)

Items

Each entry in items describes one product line in the cart:

Field Description
item_id The product's SKU if you've set one, otherwise its internal ID
item_name The name of the room (or other bookable)
price Per-unit price as a number
quantity Number of units (e.g. number of tickets)
item_variant The specific product name (e.g. "Adult Ticket", "Child Ticket")

For add_to_cart and remove_from_cart the items array contains just the items being added or removed. For view_cart, begin_checkout, and purchase it contains everything currently in the cart.

view_item does not currently include the currency, value, or items fields — it just announces that the customer has opened a room's details page. (This is a deviation from the standard GA4 spec, which includes the items array on view_item. We may add this in future.)

Setting Up a GA4 Tag

The simplest way to forward these events to GA4 is with a single GTM tag that listens for all the e-commerce events and sends them on. We have a step-by-step guide for this: Ecommerce Tracking to GA4 using GTM.

Setting Up Other Tags

You can use the same dataLayer pushes to fire any other GTM tag — for example, Google Ads conversion tags, Microsoft Ads, TikTok Pixel, etc. Use a Custom Event trigger that matches the event name (purchase, begin_checkout, etc.) and reference the data with dataLayer variables (e.g. ecommerce.value, ecommerce.transaction_id).

Testing

  1. Embed the widget on your website (testing on the Direct URL won't work — there's no host page with GTM)
  2. In GTM, click Preview (top right) and connect to your site
  3. Walk through a booking
  4. In Tag Assistant, click each event in the left sidebar to inspect the dataLayer at the moment it fired

If the events don't appear:

  • Check that GTM is actually installed on the page (look for the dataLayer array in the browser console)
  • Make sure your GTM container has been published (not just saved)
  • Confirm Enable host page Google Tag Manager tracking is turned on for the widget you're testing

If events appear in GA4 but you can't see revenue or item details in the Monetisation > Ecommerce purchases report:

  • In your GA4 Event tag in GTM, make sure Send Ecommerce data is ticked and Data source is set to Data Layer
  • Allow up to 24 hours for the standard GA4 reports to populate (the Realtime report should show events within seconds)