CM.com ticketshop tracking via Google Tag Manager- installation in 6 steps
This container measures the complete ecommerce funnel in the CM ticketshop (sales.ticketing.cm.com) for GA4, Google Ads, Meta, TikTok and Snapchat. It also ensures that campaign traffic from your event website passes through correctly to the shop.
Step 1: Import the container (2 min)
Open your GTM container > Admin > Import Container.
Choose cm_tracking_container_v5.2.json.
Workspace: New (recommended name: ‘CM tracking v5’).
Import option:
-
New or empty container > Overwrite.
-
Existing container with your own tags > Merge > Rename conflicting tags. This way you won’t overwrite any existing elements.
Review the overview of what will be added and confirm the import.
Step 2: Enter your IDs (3 min)
Go to Variables > Constants folder and fill in:
|
Variable |
Example |
Where to find it |
|---|---|---|
|
http://CM.com Ticketshop - GA4 Measurement ID |
G-XXXXXXXXXX |
GA4 > Admin > Data streams |
|
http://CM.com Ticketshop - Google Ads Conversion ID |
123456789 |
Google Ads > Goals > Conversions > tag setup |
|
http://CM.com Ticketshop - Google Ads Conversion Label |
AbC-dEfGhIjK |
Google Ads > Goals > Conversions > ‘purchase’ conversion action |
|
http://CM.com Ticketshop - Facebook Tracking Pixel ID |
1234567890123 |
Meta Events Manager |
|
http://CM.com Ticketshop - TikTok ID |
CXXXXXXXXXXXXXXX |
TikTok Events Manager |
|
http://CM.com Ticketshop - Snapchat Pixel |
xxxx-xxxx-xxxx |
Snap Events Manager |
Not using a channel? Leave the value empty and pause the tags in that folder (Facebook, TikTok, Snap, Google Ads). Leave http://CM.com Template - Version as is. CM support uses it to see which version you are running.
Step 3: Do you already have a Google tag? (1 min)
Does your container already contain a Google tag with the same GA4 Measurement ID? Then delete the imported tag ‘Google tag - GA4 - http://CM.com ’ and, in your own Google tag, set the configuration setting send_page_view to {{http://CM.com - send_page_view}}. This variable returns false on the ticketshop and true on your own website.
Reason: the ticketshop switches between steps without GA4 recognizing this as a new page. That is why the tag ‘GA4 - page_view - http://CM.com ’ sends its own page_view per step there, with the correct page title (Products, Merchandise, Your details, Payment, etc.). Without this setting, the first shop page is counted twice.
No Google tag of your own? Then you don’t need to do anything.
Step 4: Enter your own domain (1 min)
Open the trigger ‘PV - Hostname Event Page - Invullen zonder www.’ (fill in without www.) and replace ENTERYOURDOMAIN.nl with your own website domain, for example festivalnederland.nl. This:
-
stores the fbclid/ttclid from your campaigns and passes them on to the ticketshop
-
fires one marketing page view on your own website so that Meta/TikTok can place the click ID in a cookie
Do you already load a Meta/TikTok pixel on your own website via another tag? Then do not enable this trigger on the Facebook/TikTok/Snap page view tags (otherwise you will measure double).
Step 5: GA4 cross-domain (1 min)
GA4 > Admin > Data streams > your stream > Configure tag settings > Configure your domains > add:
Without this step, GA4 starts a new session when someone clicks through to the shop, and you will see purchases appear as ‘direct’.
In the same data stream, under Enhanced measurement > Page views (settings), turn off the option ‘Page changes based on browser history events’. The ticketshop changes the URL via the browser history at every step; with that option on, the Google tag sends an extra page_view per step in addition to the page_view from the tag ‘GA4 - page_view - http://CM.com ’, and every step is counted twice.
Step 6: Test and publish (5 min)
Preview in GTM and open your own website. Check: consent banner > make a choice > the Facebook/TikTok/Snap page view tags fire once in Tag Assistant.
Click through to the ticketshop and go through the steps up to and including the payment page.
Check whether you have one page_view from CM and one page view per marketing channel at each step. Check whether add_to_cart, begin_checkout and add_payment_info fire for the channels GA4, Meta, TikTok and Snap (if ID is filled in).
Meta Events Manager > Test events: every event arrives with an event ID.
Publish.
Optional: testing purchase. A test purchase is not required to go live; the purchase tags use the same dataLayer as the steps before it. Do you still want to test purchase beforehand, or do you not see any purchases coming in after going live? Ask your CSM for a 100% discount code and go through the shop in Preview up to and including the confirmation page. Check that the purchase tags fire and that the Purchase arrives in Meta Events Manager > Test events with the order number as event ID. The full test method can be found in the Knowledge Center under “No conversions after going live?”.
Server-side (First party) in the CM platform: what to combine and what not to
In the CM platform you can enter pixels and tokens under E-commerce > Tracking method > First party. CM will then also send the events server-side.
|
Channel |
GTM (this container) + CM server-side together? |
Explanation |
|---|---|---|
|
Meta, TikTok, Snapchat |
Yes, recommended |
Every event has the same event ID on both sides and the platforms deduplicate on their own. Purchase uses the order number as event ID. |
|
Google Ads |
Yes, but with separate conversion labels |
Use one label in GTM and a different label in the CM platform, otherwise you will count double. |
|
GA4 |
No, choose one of the two |
Either the GA4 tags in this container, or the GA4 Measurement ID in the CM platform. Both = duplicate events. Possibly feasible with a second GA4 property per tracking method. |
What this container deliberately does not solve
-
Consent on your own website. Your own cookie banner (Cookiebot, Complianz, Usercentrics, OneTrust) must pass on Consent Mode v2. Marketing tags in this container only fire when ad_storage = granted.
-
Ticketshop in an iFrame. Do you load the shop in an iFrame on your own site? Then cross-domain tracking does not work reliably. Therefore, preferably link through to the shop URL.
-
Seated ticketing (http://shop.ticketing.cm.com ): no custom GTM container can be loaded there. Use the First party option in the CM platform.