Shopify Custom Pixel is incompatible with Google Ads conversions (bug report)

Topic summary

A critical incompatibility exists between Shopify’s Custom Web Pixels feature and Google Ads conversion tracking. The gtag.js script loads successfully within Custom Pixels but fails to export conversions, while the same code works properly when implemented directly in theme files.

Root Cause & Resolution:

  • Initial issue stemmed from cross-domain restrictions in the Custom Pixel sandbox environment preventing gtag.js from loading via googletagmanager.com
  • Google shipped a fix addressing the Ads tag’s inability to correctly detect sandboxed iframes
  • Conversions are now being captured successfully for most users

Ongoing Issue:
A new error has emerged: Failed to execute 'joinAdInterestGroup' on 'Navigator' from td.doubleclick.net. One working solution involves disabling interest groups:

gtag('config', 'AW-1234', { allow_interest_groups: false });

This requires separate, property-specific config calls rather than common configuration.

Alternative Approaches:

  • Using postMessage to send data from Custom Pixel to main window
  • Loading GTM via Custom Pixel with “Google Ads Conversion Tracking” tags
  • Creating custom dataLayer events that push conversion data to GTM
  • Temporarily reverting to Additional Scripts implementation

The discussion includes test stores and screenshots demonstrating the problem and various workarounds.

Summarized with AI on October 29. AI used: claude-sonnet-4-5-20250929.

I ran into the same thing. This took several hours to figure out but I got something working:

gtag('config', 'AW-1234', { allow_interest_groups: false });

Do not use the common config for all properties, you have to pass this config specifically to this property, there is a hidden error if you use irrelevant config properties for AW properties that you can only see in the console logs of the deprecated google analytics debugger chrome extension. If there is an error in the config, the AW config is ignored, as if you had not configured anything, no matter what properties you try. Do not naively reuse the GA4 config for the AW config. Do not use the common config call. Make two separate specific config calls and specify a specific property id as the second parameter each one, then only specify the relevant properties in the AW one.

After doing this (while having GTM setup in an iframe Shopify custom web pixel with an AW property also receiving events via send to), I no longer see the promise rejection from joinAdInterestGroup.

1 Like