The short answer
To add Google Tag Manager to Wix, go to Marketing Integrations in the Wix dashboard, choose Google Tag Manager and enter your container ID. This needs a Premium plan and a connected domain. To track Google Ads conversions properly, build them from the events Wix already pushes into the dataLayer rather than from thank-you page URLs, and check what Google tags Wix is already loading before you add anything, or you will double count.
This guide covers the setup in order, and the problems that came up on a recent Wix Studio build for a service business taking bookings and payments online.
How do you add Google Tag Manager to Wix?
- In the Wix dashboard, open Marketing Integrations.
- Choose Google Tag Manager and add your container ID (it starts with
GTM-). - Save, then open GTM's Preview mode on the live site and confirm the container loads on every page.
Wix requires a Premium plan and a connected domain for this integration. There is no workaround on the free plan.
Wix sites behave as single-page applications, so GTM's standard All Pages trigger fires once, on the first page of a visit, and not again as the visitor moves around. Wix's own setup guide is blunt about it: do not use the All Pages trigger. Wix pushes its own page view event into the dataLayer on each page change, so the page view tag goes on a Custom Event trigger matching that event instead, and send_page_view is set to false in the GA4 configuration so the tag does not also fire on load. Wix's guide names the event Pageview; confirm the exact name in GTM Preview rather than trusting it, because the name is the whole trigger.
Whichever way you set it up, confirm in GA4 DebugView that each page change sends exactly one page_view.
What is Wix already loading?
Before building anything in GTM, open Google Tag Assistant on the live site and list every tag ID that loads. Wix can load Google tags through its own Marketing Integrations, and a Google Ads or GA4 connection added by a previous agency or an earlier setup will keep firing alongside anything you build in GTM. That is a common cause of doubled page views and conversions on Wix.
On the build this post is based on:
- There was no GTM container, but a Google tag was loading through Wix with a Google Ads destination and a GA4 destination attached.
- The tag appeared in the Google Ads account's Data Manager but was read-only, because it was administered from the linked GA4 property.
- Nobody could find that GA4 property.
Rather than chase access to a property no one could locate, I created a fresh GA4 property and built the tracking in GTM. If you are in the same position, do the same.
An analytics property you cannot administer is not something to build on.
Which events should Wix conversions be built on?
The usual way to track a booking is a trigger on the thank-you page URL. On Wix this goes wrong in a specific way. On this site, paid bookings landed on /thank-you-page/ followed by an order ID, while free consultation bookings landed on plain /thank-you-page/. A "URL contains thank-you" rule counts both as the same conversion and cannot tell a paid booking from a free one.
Wix pushes its own events into the dataLayer, and these are more reliable. On this build, a completed booking produced two events at the same moment:
purchase, carrying the order value, currency, a transaction ID and an items array with the service name and service IDschedule, carrying the service name and a booking ID
Free bookings fired schedule with no value attached. A trigger on purchase handled paid bookings, and a second trigger on schedule, filtered to the free consultation's service name, sent those to GA4 as generate_lead.
Wix does not publish a full list of the events it sends. Before building anything, open GTM Preview, complete a real booking or form submission, and look at what actually arrives.
The parameters sit under eventModel
Wix's events arrive gtag-style, so GTM exposes their parameters under eventModel rather than at the top level of the dataLayer. Your Data Layer Variables need paths like these:
eventModel.value
eventModel.currency
eventModel.transaction_id
eventModel.items
The items array also uses Wix's key names (id, name, category) rather than GA4's (item_id, item_name, item_category). A Custom JavaScript variable remaps them:
function() {
var items = {{DLV - eventModel.items}} || [];
return items.map(function(i) {
return {
item_id: i.id,
item_name: i.name,
item_category: i.category,
price: i.price,
quantity: i.quantity
};
});
}
Why is Google Ads conversion tracking not working on Wix?
These are the causes worth checking first:
- A second Google tag. Wix's own integration and GTM are both sending the same events. Check Tag Assistant for duplicate IDs.
- URL-based triggers. Thank-you page rules that match more than one type of conversion, or that fire again on refresh.
- Missing parameters. On this build, the first real purchase reached GA4 with no value, no currency and no transaction ID. The dataLayer push was intact. The GA4 event tag's Event Parameters section was empty. An event showing in GA4 Realtime does not mean it is complete: open it and confirm every parameter is present before importing it into Google Ads.
- Page views firing once. The single-page application issue described above.
- Consent defaults. Covered below.
A conversion that arrives without a value is the quieter version of this problem, and it survives for months because the count looks right. That is the subject of why a conversion count is the number least likely to be questioned.
What conversion value should a Wix booking report?
Wix's purchase value is the order total, not the money collected. For a service that takes a deposit online and the balance in person, a £250 booking with a £25 deposit reports £250.
That is often the right number for Google Ads, because the booking is worth the full price if the customer turns up. Two things need checking first:
- Can a booking complete without payment? On this site, a manual payment option let a full booking through with no card details and no money taken, and
purchasestill fired with the full value. - Are cancelled or missed bookings ever removed? If not, the conversion value is committed bookings, not revenue.
If neither is controlled, report the value as bookings made and say so in any report built on it. The gap between what a checkout records and what the business actually banked is the whole story of this checkout tracking rebuild.
One thing that did not need fixing: card payments through Wix Payments, including the 3D Secure step, stayed inside the page rather than redirecting to a payment provider. The session was not broken, and nothing needed adding to GA4's unwanted referrals. Confirm this on your own setup, but it is one less job than some booking platforms create.
Does Google consent mode work on Wix?
Google's documentation states that once you have enabled the Wix consent banner, consent mode is enabled automatically. Check it anyway. Open the site in Tag Assistant, before interacting with the banner, and look at the consent default command.
On this build, the default set all seven consent types to granted before any interaction, while the cookie banner itself recorded only one category as accepted. The two systems disagreed, so consent mode was having no effect. That is a compliance issue for the site owner as well as a measurement one, and it should be raised with them in writing even if fixing it is outside your scope.
What is a GCLID, and how do you capture it on Wix without Velo?
The GCLID (Google click ID) is a parameter Google Ads adds to your landing page URL when someone clicks an ad, for example ?gclid=Cj0KCQ.... Storing it against each lead lets you send conversions that happen later, by phone or in person, back to Google Ads as offline conversions.
The usual method is a hidden form field. On Wix, getting a value into a hidden field reliably means using Velo, Wix's development platform, which is a lot of risk to add to a live site for one field.
A lighter approach that works:
- A GTM Custom HTML tag reads the
gclidparameter on landing and stores it in a first-party cookie. Fire it only when ad storage consent is granted, like any other advertising cookie. - When a booking or enquiry completes, a second tag sends the GCLID, with the booking ID, service and value, to a Google Sheet through a small Google Apps Script web app.
- Google Ads imports offline conversions from that Sheet on a schedule.
The Sheet doubles as the attribution record and the import file. On the build it was tested on, the GCLID persisted from the landing page to the confirmation page and logged correctly for both paid and free bookings.
Can you use enhanced conversions on Wix?
Yes, but check which customer details are actually on the page when the conversion fires. On this build, the final booking step collected name and phone number but had no email field, so phone was the only identifier available at that point.
Wix form field IDs also include a suffix that changes, so select fields by their aria-label rather than their ID if you are reading values from the page. Normalisation matters as much as selection here, which is one of the recurring themes in what a GTM consultant actually fixes.
Wix Google Tag Manager checklist
- List every tag Wix already loads, using Tag Assistant
- Replace any Google tag you cannot administer
- Add GTM through Marketing Integrations (Premium plan and connected domain)
- Send page views from Wix's page view event and confirm one per page change
- Build conversions from Wix's dataLayer events, not thank-you page URLs
- Point Data Layer Variables at
eventModel.* - Confirm value, currency and transaction ID in GA4 DebugView
- Agree with the business what the conversion value represents
- Check the consent default in Tag Assistant
- Store the GCLID and log it for offline conversion import
Frequently asked questions
Can you add Google Tag Manager to Wix on the free plan?
No. Wix's Google Tag Manager integration requires a Premium plan and a connected domain.
Why does GTM only fire once on Wix?
Wix sites behave as single-page applications, so the All Pages trigger fires on the first page load only. Use Wix's own page view event for subsequent pages.
Where is the purchase value in Wix's dataLayer?
Under eventModel, for example eventModel.value and eventModel.transaction_id, because Wix pushes its events gtag-style.
Does the Wix purchase event report the deposit or the full price?
The full order total. If you take a deposit online, the event still reports the full booking value.
How do you capture the GCLID on Wix without Velo?
Store it in a first-party cookie with a GTM Custom HTML tag, then send it to a Google Sheet when a conversion completes. Google Ads can import offline conversions from that Sheet on a schedule.