GA4 purchase, and Google Ads and Meta, was counting every order twice. The cause was a duplicate client and duplicate triggers in the server container — and you had already staged the exact fix, it had simply never been published. We published it (Version 24) and cleaned up the GA4 key events. Expect conversions to roughly halve: that is the fix working, not a drop in sales.
Every purchase fired 2× into GA4, Google Ads and Meta CAPI. The doubling came entirely from the server container insights.odiseimusic.com: an old container import had left behind a duplicate Data client (DC) and a duplicate set of _import_1 triggers, so every incoming event was processed twice. You spotted this and staged the cleanup (the DC client you removed on 17 Jun). It just never went live — the container was still on Version 23.
Where everything stood at the start of the session.
| Account | Access | Status | Tracking state before |
|---|---|---|---|
| Google Analytics 4 properties/335468068 | Full | Connected | Purchase firing 2× per order · revenue ≈ 2.3× real · 5 legacy events marked as key events |
| Google Ads 6952001760 | Read Only | Connected | Purchase conversions 2× inflated · two primary purchase conversions · ROAS reading false |
| Meta / Facebook Ads act_372486130628156 | Read & Write | Connected | CAPI purchase 2× · had a token 401 earlier, since reconnected |
| Google Tag Manager 6051269543 | Read & Write | Connected | Server container on Version 23 with the duplicates live — see breakdown below |
| Shopify odisei-music-instrument | Read & Write | Connected | Source of truth — healthy. Some B2B orders sit financial_status: pending |
| Klaviyo SnQi6f | Read & Write | Connected | Out of scope for this fix |
| Container | ID | Type | State before |
|---|---|---|---|
insights.odiseimusic.com | GTM-TFH5NWMS | Server | Live = Version 23. Duplicate DC client + _import_1 triggers active → everything fired 2×. Cleanup staged (9 deletions) but unpublished |
www.odiseimusic.com | GTM-5K7J3TX | Web | Live v94. Correct: GA4 routes through the server, client side Google Ads tags paused. Leftover _import_1 variables (harmless) |
new.odiseimusic.com | GTM-K72FXPBR | Web | All tags paused (your work, 17 Jun) — inert |
| Odisei Music AMP | GTM-55WLTFR | AMP | Not in the fix path |
The only thing that changed is inside the server container.
Published your 9 staged deletions: the duplicate DC client and all _import_1 triggers (ga4 - purchase_import_1, ga4 - add_to_cart_import_1, ga4 - begin_checkout_import_1, clientName - GA4_import_1) plus the orphan cEvent - triggers. Each event now fires once. Fully reversible — revert to Version 23 if ever needed.
Unmarked five wrong or legacy key events: user_engagement, carrito_de_la_compra, tramitación_de_la_compra, realización_de_un_pedido, contactar. Kept only add_to_cart and purchase (purchase is locked because it is linked to Google Ads).
GA4 + Data Client, DC gone); zero _import_1 triggers.GA forwarder → GA4 Trigger; ADS - Purchase → ga4 - purchase; Meta - Purchase → dc - purchase).add_to_cart + purchase._import_1 or _1 names — that suffix only ever lived on GTM triggers and variables, never as a GA4 event. The analytics layer is clean.Across GA4, Google Ads and Meta over the next days, purchase counts and revenue will drop to about half. That is the duplicate going away, not a sales drop. The honest figure has always been Shopify cash — compare against that.
| Item | Why | Owner |
|---|---|---|
| Purchase value ≈ 15% high | Uniform +15.5% on value and tax, even on orders with zero tax / shipping / discount. The GTM mapping is correct (value = {{dlv - ecommerce.value}}); the inflation is upstream in the Stape Shopify Customer Events pixel. Needs GA4 DebugView on a test order to pin it, then a pixel fix. Do not blanket divide — the ratio varies per order. | Alana + Walter |
| Two primary purchase conversions | Compra TM Odisei and Google Shopping App Purchase both count in Google Ads. Set one to secondary so Ads stops double counting (match the label to the live Stape tag first). | Walter |
_import_1 variable names in www | GTM web-container naming only — invisible in GA4. Each reads the correct data-layer path and has an identical clean twin, so zero data impact. Optional scrub: repoint the 13 tags to the twins, delete the 11 variables, republish the web container. | Optional |
| Pending B2B orders as revenue | Unpaid bank transfer orders fire purchase at checkout. Exclude financial_status = pending on the dashboard side. | Amplio dashboard |
| Confirm the fix on the next order | Verify GA4 transactions matches Shopify orders 1:1, and Meta Events Manager shows one purchase. | Alana |
| Spanish legacy events still firing | tramitación_de_la_compra, carrito_de_la_compra, venta_* still reach GA4 in small volumes — a legacy taxonomy, not _1. Already unmarked as key events; stopping them firing means finding their source tag and switching it off. | Alana |