PassPass

Connect Google Tag Manager to your ticketing system

Connect Google Tag Manager to your PassPass ticketing system to feed Google Analytics, Meta Pixel, TikTok, Google Ads, and your other tools from a single container.

Last updated : August 17, 2026

Google Tag Manager is a distribution box: you plug in Google Analytics, the Meta Pixel, TikTok, Google Ads, all powered by the same events. You add or remove a destination without ever asking us for anything.

If you work with an agency or a webmaster, this article is the one to pass on to them.

Google Tag Manager is not active by default. It is activated upon request to our team. A Tag Manager container can execute code on pages where your buyers' data transit. We activate the feature for organizers who need it.


Where to paste your container ID

Your ID starts with GTM- and looks like GTM-XXXXXXX. You find it at the top of your Tag Manager workspace.

For all your events (recommended)

Organizer profile → Settings → Tracking & Pixels

For a specific event

Your event → Advanced configurations → Tracking & Pixels

An event that defines its own container replaces the organization's one, only for Tag Manager. Your other IDs (Google Analytics, Meta Pixel) continue to be inherited normally.


Two scenarios

Scenario A: your buyers purchase on passpass.be

Your container is loaded on your event page and on your organizer page. It receives all the events of the journey.

Security restriction: our pages host a purchase session and personal data. The "custom HTML" tags and the "custom JavaScript variables" of your container will not execute. Everything else works normally: Google Analytics, Google Ads, Meta Pixel, TikTok, and other models from the Tag Manager gallery.

Scenario B: the ticketing is integrated on your site

The widget sends its events directly into the dataLayer of your page, on your own domain. Your Tag Manager runs on your site, as usual.

  • No restrictions from us: it's your site, your rules

  • No third-party cookie, no broken session, no loss of attribution

  • A more reliable measurement than a redirect to passpass.be

Nothing to enter in PassPass for this scenario: just have your container installed on your site. The Tag Manager field on your dashboard is only for scenario A.

The only condition: your site's domain must be listed in the widget's authorized domains.


What your container receives

These events are identical in both scenarios:

  • view_item_list : a list of events has been displayed

  • select_item : an event from the list has been clicked

  • view_item : an event page has been opened

  • add_to_cart / remove_from_cart : ticket added or removed from the cart

  • select_promotion : a promo code has been applied

  • begin_checkout : the purchase journey starts

  • add_payment_info : a payment method is chosen

  • payment_started : departure to payment (last measurable point before Stripe)

  • purchase : sale confirmed

  • purchase_cancelled : return from payment without purchase

  • order_expired : cart expired

  • generate_lead : contact form sent

Data structure

E-commerce information is in an ecommerce object, in the standard Google Analytics 4 format. Information specific to PassPass is at the root, prefixed pp_.

{
  "event": "purchase",
  "pp_organization_id": "...",
  "pp_organization_name": "Ma structure",
  "pp_event_id": "14",
  "pp_event_name": "Conférence 2026",
  "pp_language": "fr",
  "ecommerce": {
    "transaction_id": "8421",
    "value": 205.20,
    "currency": "EUR",
    "coupon": "EARLY10",
    "items": [
      {
        "item_id": "tkt_standard",
        "item_name": "Entrée Standard",
        "item_category": "Conférence 2026",
        "price": 100.00,
        "quantity": 2,
        "index": 0
      }
    ]
  }
}

Amounts are in decimal euros, never in cents.

When a buyer arrives from your organizer page or from the list widget, item_list_id is retained until purchase. You can measure the revenue generated by your organizer page. The list widget ID is embed_event_list.


Configure Tag Manager

1. Create a variable for the event name

Variables → New → type Data Layer Variable

Key name: event. Name it DLV - event.

2. Create a unique trigger

Triggers → New → type Custom Event

Check "Use regex matching", then paste:

^(view_item_list|select_item|view_item|add_to_cart|remove_from_cart|select_promotion|begin_checkout|add_payment_info|payment_started|purchase|purchase_cancelled|order_expired|generate_lead)$

3. Create a Google Analytics 4 tag

Tags → New → type Google Analytics: GA4 event

  • Event name: {{DLV - event}}

  • Expand More settings → E-commerce → check "Send e-commerce data", source Data Layer

  • Trigger: the one created in step 2

A single tag covers all events. The e-commerce box automatically maps items, amounts, and transaction ID.

4. Add the PassPass context

Create a data layer variable for pp_event_id, pp_event_name, pp_organization_name and pp_language, then add them in Event Parameters on the tag.

Then declare them in Google Analytics: Admin → Custom Definitions → Event scope, copying the names exactly. Without this step, they arrive but remain invisible in the reports.

5. Publish

Preview mode is not enough: click Submit for your tags to apply to your real visitors.


Exclude Stripe from traffic sources

Payment goes through Stripe, then the buyer returns. Without this setting, Google Analytics attributes all your sales to Stripe instead of your campaigns.

Admin → Data Streams → your stream → Configure tag settings → List of unwanted referrals

Add:

  • stripe.com

  • checkout.stripe.com

  • embedded.passpass.be (only if you use embedded widgets)


Test

  1. Open Preview mode in Tag Manager by entering the relevant URL (passpass.be for scenario A, your own site for scenario B)

  2. Unfold the journey: events appear in the left column, your tags under Tags Fired

  3. Check in Google Analytics → Admin → DebugView. Preview mode automatically enables debugging

Upon returning from Stripe, the preview session will be lost. Check the purchase in Reports → Real-time, one minute later. Take a paid ticket to test: a free ticket does not go through payment and does not trigger the same journey.


This is intentional (scenario A). Use the corresponding template in the Tag Manager gallery. On your own site (scenario B), no restrictions apply.

We only allow one container per page. Two containers would share the same data layer. Group your tags into a single container.

On passpass.be, only visitors who have accepted cookies are measured. A gap of 30 to 60% is common. On your own site, it's your consent banner that decides.

Yes, both fields are independent. But if your container already contains a Google Analytics configuration, do not enter the same ID in both: you would count each sale twice.

The expected format is GTM-XXXXXXX. A G- ID is Google Analytics, a GT- a Google tag, an AW- a Google Ads account.

Related articles

3 articles in this category