BigCommerce Google Ads Conversion Tracking: The Complete Guide
Your BigCommerce Google Ads campaigns are only as good as the data feeding them. Most store owners don’t realize this until they’ve spent thousands of dollars and wonder why their “profitable” campaigns aren’t generating the revenue they expected.
Here’s what I see in almost every BigCommerce tracking audit I run: the store is either tracking no conversions at all, firing the purchase tag on the wrong page, passing $0 as the order value, or — most expensively — counting the same purchase two or three times due to duplicate tags left behind by previous agencies.
All of these problems share the same consequence: Google’s Smart Bidding algorithm is optimizing your campaigns based on lies. And the longer that runs, the harder it is to recover campaign performance.
This guide covers everything you need to set up BigCommerce Google Ads conversion tracking correctly — including the specific issues with order value passing, duplicate conversions, and enhanced conversions that most tutorials skip entirely. I’ll also explain how each setup decision affects your actual advertising results, not just your reporting numbers.
Whether you’re setting this up for the first time or auditing an existing setup that doesn’t feel right, this is the guide I wish had existed when I started auditing e-commerce tracking setups.
Why Your BigCommerce Google Ads Campaigns Fail Without Accurate Conversion Tracking
Before we touch any settings, it’s worth understanding what’s actually at stake.
Google Ads Smart Bidding strategies — Target ROAS, Target CPA, Maximize Conversions, and Maximize Conversion Value — are not guessing. They’re using your historical conversion data to model who is likely to convert and how much each conversion is worth. When you tell Google to “maximize conversion value,” the algorithm looks at every past conversion in your account, identifies patterns in who converted (device, time of day, location, audience signal, search query), and adjusts your bids in real time based on those patterns.
Feed it accurate data, and Smart Bidding gets better over time. Feed it garbage, and it optimizes confidently in the completely wrong direction.
Here’s a real scenario I see constantly: a BigCommerce store sets up the purchase conversion tag incorrectly, and it fires on every page load rather than specifically on the order confirmation page. Now Google thinks every visitor to the store is a customer. The algorithm decides the campaigns are performing brilliantly — cost per conversion looks fantastic because every session is counted as a win. The actual ROAS in Google Ads looks incredible. But the store owner checks their BigCommerce orders dashboard and the numbers don’t come close to matching. Revenue isn’t growing. The campaigns are burning budget while Google confidently “optimizes” toward anyone who lands on the site.
That’s an extreme example, but subtler versions of the same problem are far more common. A conversion tag firing twice per order due to duplicate tags makes your cost per acquisition look half of what it actually is. Missing order values means your ROAS target is meaningless — Google has no idea what a conversion is worth. A static default value of $1 instead of the real order amount means Smart Bidding treats a $400 purchase exactly the same as a $20 one.
These aren’t just reporting problems. They directly determine whether your campaigns scale profitably or slowly drain your budget while showing metrics that look fine on the surface.
There’s a second problem specific to BigCommerce that makes this more complicated than it sounds. Unlike platforms with tightly controlled tracking integrations, BigCommerce has multiple ways to implement Google Ads tracking — and it’s completely possible to end up with more than one of them active at the same time, producing conflicting data. That’s why having a proper tracking setup for paid ads is essential before scaling campaign budgets.
Understanding BigCommerce's Tracking Architecture Before You Set Anything Up
Before you touch a single conversion tag, you need to understand how BigCommerce handles code injection, where the order confirmation page sits in your store’s architecture, and which setup method you’re going to use.
The Order Confirmation Page Is the Only Correct Place to Fire a Purchase Conversion
This sounds obvious, but it’s where most setups go wrong. In BigCommerce, the purchase journey ends on an order confirmation page — sometimes called the “thank you” page — that appears after the checkout is complete. This is the only page where a purchase conversion should fire.
BigCommerce uses a one-page optimized checkout hosted at a separate checkout domain (e.g., checkout.yourdomain.com). This is important for one specific reason: standard Google Tag Manager snippets installed via BigCommerce’s Script Manager won’t automatically fire on the checkout pages because the checkout is hosted separately. Many store owners don’t know this, and it affects how you structure certain types of tracking. For purchase conversions specifically, the confirmation page after checkout is where your tags need to fire — and BigCommerce does give you the tools to inject code there.
The Three Setup Methods Available in BigCommerce
There are three ways to get Google Ads conversion tracking onto a BigCommerce store, and choosing the wrong one — or accidentally running two at the same time — creates serious problems.
Method 1: BigCommerce Affiliate Conversion Tracking (built-in)
Inside your BigCommerce control panel, under Advanced Settings, there’s a section called Affiliate Conversion Tracking. This is a code injection field that BigCommerce loads specifically on the order confirmation page. The most useful thing about this section is that BigCommerce automatically makes order variables available here — specifically, this.transaction.value and this.transaction.transaction_id — so you can pass real order revenue and a unique order ID without any additional code.
This is the simplest method and works well for stores that only need to track Google Ads purchases without a broader tag management setup. Its limitation is flexibility: if you later want to add Meta tracking, TikTok, or other platforms, you’re either stuffing everything into this one code box or running a parallel GTM setup — which is exactly how duplicate conversions happen.
Method 2: Google Tag Manager via Script Manager (recommended for most stores)
BigCommerce’s Script Manager (under Storefront in the control panel) lets you inject scripts across your entire store or on specific page types. This is where you install the Google Tag Manager container snippet. Once GTM is installed, you manage all your tracking tags from one place — Google Ads, GA4, Meta, TikTok, Microsoft Ads — without ever touching your store’s theme code again.
The challenge with this method is that BigCommerce does not push purchase data to the GTM dataLayer by default. You need to add a custom script that pushes order details — including the transaction ID, order value, currency, and optionally product data — into the dataLayer on the order confirmation page. I’ll cover exactly how to do this in the setup section.
For any store running more than one ad platform, GTM is the right infrastructure. The upfront setup is slightly more involved, but the long-term flexibility is worth it.
Method 3: Direct script injection into theme template files
This involves hardcoding tracking tags directly into your BigCommerce theme’s HTML template files. It works, but it’s the approach I recommend against for almost every situation. Changes require editing live theme files, which means every update risks breaking your tracking. You can’t easily test tags without pushing changes. And when multiple people have touched the theme over time, you often end up with tracking code from three different setups that nobody fully understands anymore.
The only time this method makes sense is on legacy BigCommerce themes that don’t support Script Manager. In that case, it may be your only option for certain types of tracking.
The critical risk: running more than one method simultaneously
Here’s the most expensive mistake I see in BigCommerce tracking audits: a store that previously used the Affiliate Conversion Tracking method, then hired an agency that added GTM-based tracking on top. Nobody removed the original Affiliate Conversion Tracking code. Now both methods are firing on every order confirmation page, and every purchase is being counted twice in Google Ads.
The result: Google Ads shows half the actual cost per conversion. Campaigns look far more profitable than they are. The ROAS figure is completely fabricated. Smart Bidding is optimizing toward a performance standard the campaigns will never actually hit.
Before you set up anything new, check whether existing tracking code is already in the Affiliate Conversion Tracking section. If it is and you’re adding GTM-based tracking, remove the old code first.
Method 1: Setting Up Google Ads Conversion Tracking Using BigCommerce's Built-In Method
If you want the simplest possible setup and you’re only running Google Ads without other ad platforms, the Affiliate Conversion Tracking method gets you working purchase tracking without needing GTM. Here’s how to do it correctly.
Step 1: Create the Conversion Action in Google Ads
In your Google Ads account, navigate to Goals > Conversions > New conversion action. Select Website as the type.
A few settings here matter significantly for BigCommerce stores:
- Category: Set this to Purchase. This matters because Google’s reporting and Smart Bidding treat different conversion categories differently. Marking a purchase as “other” or “lead” means your campaigns lose access to revenue-based bidding strategies.
- Value: Choose “Use different values for each conversion.” Do not choose a fixed value. The whole point of conversion tracking for an e-commerce store is knowing how much revenue each conversion generates. If you set a fixed value — even temporarily — and forget to change it, your ROAS data becomes meaningless. I’ve seen stores running on a $1.50 fixed conversion value for months, convinced their campaigns were generating 40x ROAS.
Set a default value as well, but understand that this only applies if the actual order value somehow fails to pass. It’s a fallback, not the primary value. - Count: Set this to “One.” This tells Google to count only one conversion per ad click. If a customer somehow ends up on the confirmation page twice — by refreshing or navigating back — you don’t want to count it as two purchases. The transaction ID deduplication we’ll set up adds another layer of protection, but setting count to “One” is the first safeguard.
- Conversion window: The default is 30 days. For most ecommerce stores selling standard products, this is fine. If you sell higher-consideration items where the research and purchase cycle is longer — furniture, appliances, B2B supplies — consider extending this to 60 or 90 days. Otherwise you’re missing conversions from customers who saw your ad, researched for five weeks, and then bought.
Step 2: Copy the Conversion ID and Conversion Label
Once you’ve created the conversion action, Google gives you two values you need: the Conversion ID (formatted as AW-XXXXXXXXXX) and the Conversion Label (a short alphanumeric string). You need both. A common mistake is copying only the full AW- string when what’s actually needed is the ID and label as separate values. Look at the event snippet Google provides and copy both pieces carefully.
Step 3: Install the Global Site Tag Across All Pages
The Global Site Tag (now part of Google Tag) needs to load on every page of your store — not just the confirmation page. This is the component that captures the Google Click Identifier (GCLID) when someone arrives from a Google ad. Without it loading on all pages, Google can’t connect the visit to an ad click, and your conversion attribution breaks.
For the Affiliate Conversion Tracking method, you add this global snippet to your BigCommerce theme’s base template, or you can use Script Manager to load it on all pages. Replace AW-CONVERSION_ID with your actual conversion ID.
Step 4: Add the Event Snippet to BigCommerce's Affiliate Conversion Tracking
In your BigCommerce control panel, go to Advanced Settings > Affiliate Conversion Tracking. This is where the purchase-specific conversion event code goes.
The critical piece here — and the part most guides gloss over — is how to pass the real order value and transaction ID. BigCommerce exposes these values through its template variables, but only within this specific Affiliate Conversion Tracking context. The correct variables are:
- this.transaction.value — the order total
- this.transaction.transaction_id — the unique order ID
A correct event snippet in this section looks something like this (replace the placeholders with your actual values):
gtag(‘event’, ‘conversion’, {
‘send_to’: ‘AW-CONVERSION_ID/CONVERSION_LABEL’,
‘value’: this.transaction.value,
‘currency’: ‘USD’,
‘transaction_id’: this.transaction.transaction_id
});
The reason many setups show $0 in Google Ads is that someone copied a generic event snippet and either left a static value or used a variable format that doesn’t work in BigCommerce’s template context. The this.transaction.value syntax is specific to BigCommerce’s JavaScript context on the order confirmation page — it won’t work in a regular GTM tag, for example.
The order value and shipping problem: By default, this.transaction.value passes the full order total, including shipping. For some stores, this is fine — total revenue is total revenue. For stores that want to track product revenue only (excluding shipping), this needs to be adjusted. I recommend being consistent — pick one approach and stick with it — but document which one you’re using so your ROAS calculations are accurate.
Step 5: Validate Before You Consider It Done
Place a test order — a small one, or a test transaction if your payment gateway supports it. Then check:
- Does a conversion appear in Google Ads within a few hours? (Use Google Tag Assistant in preview mode for immediate verification)
- Is the conversion value the actual order amount, not $0 or a default value?
- Is the transaction ID showing in the conversion details?
- Is the tag firing exactly once?
If you see “No recent conversions” after a test purchase and several hours have passed, something is wrong. Don’t scale ad spend before resolving it.
Method 2: Setting Up Google Ads Conversion Tracking in BigCommerce Using Google Tag Manager (Recommended)
For most BigCommerce stores — especially those running ads on multiple platforms or planning to — GTM is the right infrastructure. The initial setup takes more effort than the built-in method, but everything becomes easier to manage, debug, and expand afterward.
Step 1: Install GTM on BigCommerce Using Script Manager
Create a GTM account and container at tagmanager.google.com if you don’t already have one. Google provides two snippets: a script for the <head> and a noscript for the <body>. Both need to be installed.
In your BigCommerce control panel, go to Storefront > Script Manager > Create a Script. Create one script for the head snippet and another for the body snippet. Set both to load on “All Pages.” Set the location to “Head” and “Footer” respectively.
After publishing, verify GTM is loading correctly by visiting your store and checking that the GTM container fires in Google Tag Assistant or the browser’s network tab.
One important note: Script Manager installs scripts on your storefront pages, but the BigCommerce checkout (which runs on a separate checkout subdomain) is handled differently. For the purchase conversion specifically, the order confirmation page is where we inject our tracking via Script Manager scoped to Order Confirmation pages — so this distinction matters less for purchase tracking, but it’s worth knowing for other tracking scenarios.
Step 2: Set Up the BigCommerce dataLayer for Purchase Events
This is the most important step in the GTM method, and it’s the step most guides either skip or explain poorly.
GTM works by reading data from the page’s dataLayer — a JavaScript array that sits in the page’s code and holds structured information about what just happened. When a customer completes a purchase, we need BigCommerce to push the relevant order details into this dataLayer so GTM can read them and send them to Google Ads.
The problem: BigCommerce does not automatically push purchase data to the dataLayer on the order confirmation page. You have to add this yourself.
In Script Manager, create a new script. Set the page type to “Order Confirmation” specifically — this ensures the script only runs after a completed purchase, not on any other page. The script needs to push the transaction details to the dataLayer using this structure:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: ‘purchase’,
transaction_id: ‘{{order.id}}’,
value: {{order.total}},
currency: ‘USD’,
items: [] // Optional: add product-level data here if needed
});
The exact variable syntax for order ID and order total in BigCommerce depends on which template context you’re using. BigCommerce makes these available as server-side template variables when the script is set to run on the Order Confirmation page type — {{order.id}} and {{order.total}} are the commonly used ones, but verify against current BigCommerce documentation for your specific theme and setup.
A few things that commonly go wrong here:
First, the dataLayer push fires before GTM has loaded. The order of script execution matters. Make sure the GTM container is loading before this custom script. Using Script Manager’s ordering or placing the dataLayer script after the GTM snippet helps.
Second, the variable values are undefined or null. This usually means the script is running on the wrong page type, or the variable name doesn’t match what BigCommerce exposes in that context. Always test with a real order and check the actual dataLayer values in GTM Preview mode.
Third, the transaction ID is missing or consistently set to the same value. Without a unique transaction ID per order, GTM and Google Ads can’t tell one purchase from another. If a customer refreshes the confirmation page, both page loads look identical and can count as two conversions.
Step 3: Create the Google Ads Conversion Tag in GTM
In GTM, create a new tag. Choose Google Ads Conversion Tracking as the tag type.
Configure it as follows:
- Conversion ID: Your Google Ads Conversion ID (AW-XXXXXXXXXX)
- Conversion Label: Your conversion label from the Google Ads conversion action
- Conversion Value: Create a dataLayer variable that reads the value field from your purchase event push. In GTM, this is a Variable of type “Data Layer Variable” with the variable name set to value.
- Transaction ID: Create another dataLayer variable that reads transaction_id
- Currency Code: Either hardcode this as USD (or your store’s currency) or pull it from the dataLayer if you push it there
The trigger: Create a Custom Event trigger that fires when the event name equals “purchase” — matching exactly what you push in the dataLayer script. Do not use a page URL trigger as your primary method for a purchase conversion. URL-based triggers can misfire if the confirmation page URL pattern appears elsewhere in your store, or if a customer directly bookmarks and revisits the confirmation URL. The event-based trigger only fires when the dataLayer push actually runs.
Step 4: Publish and Validate Thoroughly
Before publishing to your live store, use GTM Preview mode to walk through a complete test purchase. In the GTM preview panel, look for:
- The “purchase” custom event appears in the event list
- The Google Ads Conversion Tracking tag appears as “Fired” — not “Not Fired”
- The conversion value variable shows the actual order amount (not undefined, null, or 0)
- The transaction ID variable shows the correct order ID
- The tag fires exactly once during the checkout journey
After going live, check Google Ads the following day. Under Goals > Conversions, your purchase conversion action should show “Recording conversions” status. Within a few days, you should see test conversion data appearing. If you see conversions reporting but the value shows as $0 or $1.50 (a default), your variable isn’t mapping correctly.
Some law firms use GA4 events first, then import those events into Google Ads as conversions.
Setting Up Google Ads Enhanced Conversions for BigCommerce
If standard conversion tracking is the foundation, enhanced conversions are the reinforcement that keeps your data accurate in a world where cookies are increasingly unreliable.
What Enhanced Conversions Are and Why They Matter
When a customer clicks your ad and then purchases on your BigCommerce store, Google Ads tracks that conversion by reading a cookie set at the time of the click. This works most of the time — but not always. Safari’s Intelligent Tracking Prevention limits cookie lifespans. Users switch devices. Ad blockers strip cookies. Private browsing sessions start fresh.
Enhanced conversions work differently. Instead of relying solely on a cookie, they take first-party customer data that the customer provided during checkout — primarily their email address — hash it using a one-way algorithm, and send it to Google. Google then matches that hashed email against signed-in Google accounts to verify the conversion, even when the cookie chain is broken.
Google’s own data suggests enhanced conversions can recover somewhere between 5 and 20 percent of conversions that standard tracking misses. For a store spending $10,000 per month on Google Ads, that’s the difference between accurate data and systematically undercounting conversions — which makes Smart Bidding think campaigns are underperforming and suppresses bids when they should actually be increasing.
Enhanced conversions also improve the quality of match data that feeds back into audience targeting and bid optimization. It’s not just about recovering lost conversions — it’s about giving Google’s algorithm cleaner signals about who your actual customers are. There are two methods for enhanced conversions on BigCommerce:
Method A: Automatic enhanced conversions via Google Tag
This method asks Google to automatically detect and hash user data that appears on the page. It works by scanning the page’s HTML for structured data that looks like an email address or phone number. If the confirmation page shows the customer’s email in the page content (e.g., “A confirmation has been sent to customer@email.com”), Google’s tag can detect and hash it automatically.
On BigCommerce, this method is less reliable than it sounds. The confirmation page doesn’t always expose user data in a format that Google’s tag can reliably detect. You might see partial enhanced conversion matching — some orders matched, others not. For consistent results, Method B is more dependable.
Method B: Manual enhanced conversions via GTM User-Provided Data tag
This is the approach I recommend for BigCommerce stores using GTM. It requires you to explicitly pass the customer’s hashed data through a specific GTM tag type called the User-Provided Data Event Tag.
First, include the customer’s email address in your dataLayer push on the order confirmation page. BigCommerce makes the customer’s email available on the confirmation page — add it to your existing purchase dataLayer push alongside the transaction data.
In GTM, create a new tag of type “Google Ads User-Provided Data Event.” Configure it to read the email address from your dataLayer variable. GTM handles the SHA-256 hashing before the data leaves the browser — the actual email address never reaches Google in readable form.
The critical configuration detail: this tag must fire using the same trigger as your main conversion tag (the purchase event). Both tags need to fire together on the same purchase event for the data to be associated correctly.
The allow_enhanced_conversions flag issue
Here’s a problem I see in about a third of BigCommerce setups where enhanced conversions have been attempted: someone enabled enhanced conversions in the Google Ads interface and set up the data tag in GTM, but the Global Site Tag loaded across all pages doesn’t have the {‘allow_enhanced_conversions’: true} parameter set. Without this flag, the enhanced conversion data is collected but not processed.
The error message in Google Ads diagnostics reads something like: “Missing user data fields — X out of Y conversions weren’t processed because enhanced conversions data fields weren’t found.” If you’re seeing this, check your Global Site Tag configuration.
After enabling enhanced conversions correctly, allow up to 75 days for Google to verify and report the enhanced conversion status. “Pending” status during this period is normal — it doesn’t mean something is broken.
Passing Order Value and Transaction ID Correctly: The Most Commonly Broken Part
I want to spend extra time on this because it’s the most impactful tracking problem for BigCommerce stores, and it’s present in the majority of setups I audit.
Why $0 Conversion Values Are a Business Problem, Not Just a Data Problem
When your Google Ads conversion tracking shows $0 for purchase value, it’s not just an annoying gap in your reports. It means:
- You cannot use Target ROAS bidding at all, because Google has no value data to optimize toward
- Any ROAS figures in your reports are fabricated and meaningless
- You have no way to know which campaigns, keywords, or ad groups are generating revenue versus just generating orders
- Product-level performance in Shopping campaigns becomes impossible to evaluate accurately
A store spending $5,000 per month on Google Ads without conversion values is flying completely blind on the only question that actually matters: which dollar of ad spend is producing which dollar of revenue?
The Four Reasons Order Value Fails to Pass Correctly
- Reason 1: Wrong variable syntax
- Reason 2: Shipping costs are inflating the conversion value
- Reason 3: The static default value was never replaced
- Reason 4: The transaction ID is missing
Now let’s talk about the details of every reason:
Reason 1: Wrong variable syntax
The syntax for passing order value is different depending on which implementation method you’re using. In the Affiliate Conversion Tracking method, the BigCommerce template variable is this.transaction.value. In a GTM dataLayer setup, you’re reading from a JavaScript object you’ve pushed yourself. Using the wrong syntax — like copying a Shopify tutorial that uses {{order_total}} — means the variable evaluates to undefined, which gets cast to 0.
Reason 2: Shipping costs inflating the conversion value
BigCommerce’s default order total variable includes shipping. If a customer’s order subtotal is $200 but they chose $25 shipping, your conversion value records as $225. Over thousands of orders, this inflates your reported revenue figures and makes your ROAS calculations inaccurate.
Whether this matters depends on your preference, but it needs to be a deliberate decision rather than an accidental one. If you want to track product revenue only, you’ll need to push the order subtotal (excluding shipping) to the dataLayer rather than the total. Document which approach you’ve chosen somewhere your team can reference.
Reason 3: The static default value was never replaced
When creating a conversion action in Google Ads and selecting “Use different values for each conversion,” you’re required to enter a default value. Many store owners type $1 or $1.50 and forget about it. If the dynamic value variable fails for any reason — a tracking outage, a malformed dataLayer push, a browser extension blocking the script — Google falls back to this default.
More importantly, some setups are accidentally set up to use a fixed value from the start, with the dynamic variable never actually wired up correctly. Everything looks fine in the Google Ads conversion action settings (which just shows your default), but every single conversion records at that static value.
Reason 4: The transaction ID is missing
If no transaction ID is passed, Google Ads can’t distinguish one order from another — and can’t perform deduplication. A customer who refreshes their order confirmation page twice generates three conversion events that look identical. Without the transaction ID, all three get counted as separate purchases.
In the GTM setup, transaction ID deduplication also matters when you have both client-side and server-side tracking running. Without matching transaction IDs in both, you’ll count every order twice: once from the browser-side tag and once from the server.
How to Verify Your Order Values Are Passing Correctly?
The quickest check: place a test order for a specific amount — say $97.50. Wait a few hours and look at your Google Ads conversions report. If you see a conversion with a value of $97.50, the value passing is working. If you see $0, $1.50, or any static number, you have a problem to fix.
For ongoing monitoring, compare your total Google Ads reported conversion value against your actual BigCommerce revenue for the same period. A perfect match isn’t realistic due to attribution differences, but if Google Ads is reporting double or half your actual revenue, something is structurally wrong with your setup.
How to Connecting BigCommerce Google Ads Conversion Tracking to GA4?
Running Google Ads without GA4 is like running a store with only a sales register and no inventory system. You know transactions are happening, but you can’t see the full picture.
Why You Need Both GA4 and Google Ads Tracking
Google Ads conversion tracking tells you which ads drove purchases. GA4 tells you what happened between the ad click and the purchase — which pages customers visited, where they dropped off in the checkout funnel, which products they viewed, how different traffic sources perform across longer time windows.
More practically, GA4 and Google Ads together let you answer questions like: “Why is my non-brand Shopping campaign generating a lower conversion rate than my branded search campaign?” You can see the complete user journey in GA4, including sessions that involve multiple visits across different channels before the final purchase.
Setting Up GA4 Ecommerce Purchase Tracking on BigCommerce
If you’re using GTM, you can reuse the same purchase dataLayer event you set up for Google Ads to also fire a GA4 Purchase event. The event parameters are nearly identical — transaction_id, value, currency — with the addition of an items array that passes product-level data.
For stores that want product-level reporting in GA4 (which products are being bought from which campaigns), the items array is worth setting up. It requires pushing each item’s ID, name, price, quantity, and category to the dataLayer alongside the transaction data. For stores with straightforward catalogs, this is a meaningful addition. For stores with hundreds of SKUs, the setup is more complex but the payoff in GA4’s item-level reports is significant.
Linking GA4 to Google Ads
Under Tools > Linked Accounts in Google Ads, you can link your GA4 property. Once linked, GA4 purchase conversions become available for import into Google Ads.
I recommend importing GA4 conversions as a secondary conversion action — meaning Google Ads records them but doesn’t use them for Smart Bidding. Your primary conversion action should be the native Google Ads conversion tag, which has more direct attribution to ad clicks. The GA4 import serves as a cross-reference point to validate your primary tracking.
Using GA4 to Catch Tracking Problems You'd Otherwise Miss
This is where having both platforms set up pays dividends. If your Google Ads conversion report shows 80 purchases last month and GA4 shows 48 purchases, something is wrong — either Google Ads is overcounting (duplicate tags, wrong trigger) or GA4 is undercounting (missed events, tag not firing consistently).
Acceptable discrepancy between Google Ads and GA4 is typically 5 to 15 percent, explained by attribution model differences, time zone settings, and the fact that Google Ads applies last-click attribution by default while GA4 uses data-driven attribution. A 40 percent gap or a consistent pattern where Google Ads shows far more conversions than GA4 is a signal to investigate.
When investigating discrepancies, always check whether the order count comparison is closer to accurate than the revenue comparison. If the order counts match but revenue differs significantly, the issue is value passing. If even the order counts diverge significantly, the issue is with how the conversion tag fires.
Google Shopping and Performance Max Conversion Tracking Considerations
Shopping and Performance Max campaigns are where most BigCommerce stores put the majority of their ad budget — and they’re also the campaign types most sensitive to conversion data quality.
Why These Campaign Types Demand Clean Conversion Data
Search campaigns let you manually review which keywords are converting and adjust bids accordingly. Shopping and Performance Max don’t give you that level of manual control. They’re almost entirely automated bidding, which means the algorithm is responsible for deciding what to show, who to show it to, and how much to bid. Its only input is your conversion data.
A Search campaign can survive mediocre conversion tracking — you might make some inefficient bid adjustments, but you retain significant manual control. A Performance Max campaign running on bad conversion data is essentially directionless. It will find a way to spend your budget, but it has no reliable signal about what actually generates revenue.
Conversion Action Settings That Matter for Shopping Campaigns
- Category must be Purchase. Not “other,” not “lead.” Shopping and Performance Max use conversion category to understand what type of outcome the conversion represents. Using the wrong category breaks certain optimization signals.
- Use transaction-specific values. Fixed values are especially harmful for Shopping campaigns because they prevent value-based bidding. Target ROAS bidding — arguably the most powerful strategy for ecommerce — requires conversion value data to function. Without it, you’re limited to volume-based strategies that don’t account for revenue.
- Transaction ID for deduplication is non-negotiable. Shopping campaigns run on Performance Max often fire multiple touchpoints across display, search, shopping, and video. Without transaction IDs to deduplicate, a single purchase can be attributed and counted across several campaign components.
- Attribution model: Google’s default attribution model is now data-driven for most accounts, which distributes credit across multiple touchpoints in the conversion path. This is generally better for Shopping and Performance Max than last-click, because these campaigns often work in concert with other touchpoints. If your account is still on last-click attribution, check whether you’re eligible to switch.
Micro-Conversions as Secondary Signals
For new Performance Max campaigns or accounts with limited purchase data, Google’s algorithm needs signals to learn from while conversion volume builds. Adding secondary conversion actions — add-to-cart events, begin-checkout events — gives the algorithm more data points to work with.
The critical rule: always set these as secondary conversion actions (observation only), never primary. If you mark add-to-cart as a primary conversion and optimize toward it, you’ll get a lot of customers adding things to carts and abandoning. You need the algorithm to optimize for purchases, with add-to-cart and begin-checkout as supporting signals.
To set up add-to-cart and begin-checkout tracking on BigCommerce, you can create click triggers in GTM that fire on “Add to Cart” button clicks, and use the BigCommerce checkout flow to identify when a customer reaches the checkout initiation step. These events should push to the dataLayer just like the purchase event.
Server-Side Conversion Tracking for BigCommerce: When It Makes Sense
Server-side tracking is increasingly common in conversations about ecommerce measurement, but it’s also frequently oversold as a necessity when standard client-side setups are actually sufficient for most stores.
What Server-Side Tracking Actually Does
Standard client-side tracking fires tags from the customer’s browser. The browser sends data directly to Google, Meta, TikTok, and wherever else you’re tracking. This means the data is subject to everything that can interfere with browser-based data collection: ad blockers, browser privacy features like Safari’s ITP, browser extensions, and users who close the tab before the confirmation page fully loads.
Server-side tracking routes that data differently. Instead of the browser sending data directly to Google, your store’s server (or a separate server-side tracking container) receives the event data first and then forwards it to your ad platforms. The server-to-server connection is not affected by ad blockers, browser privacy features, or users closing tabs early. The data is also enriched on the server with additional signals before being sent.
The Real-World Impact for BigCommerce Stores
For stores with a general consumer audience — broad demographics, mixed devices, including significant Safari usage on iPhone — standard client-side tracking typically misses somewhere between 10 and 20 percent of conversions due to browser restrictions and privacy tools. For stores selling to more privacy-conscious audiences, that number can be higher.
Server-side tracking can recover a significant portion of these missed conversions. The practical result is that Google Ads sees more conversion data, Smart Bidding has more to work with, and your reported ROAS moves closer to your actual ROAS.
For stores spending less than $5,000 per month on Google Ads, the incremental accuracy gain from server-side tracking probably doesn’t justify the additional complexity and cost of maintaining a server-side container. Prioritize getting your client-side GTM setup clean and your enhanced conversions working first. For stores spending $10,000 per month or more — particularly in markets where Safari usage is high or where privacy tool adoption is significant among your customer base — server-side tracking is worth the investment.
How Server-Side Tracking Works on BigCommerce Specifically
BigCommerce supports server-side tracking implementation through webhook functionality and third-party server-side container tools. When an order is placed, BigCommerce can send a webhook to your server-side GTM container with the full order details. The container then processes and forwards this data to Google Ads.
The most important implementation detail when running both client-side and server-side tracking simultaneously: deduplication is essential. If your browser-side GTM tag fires a purchase event and your server webhook also fires a purchase event for the same order, Google will count two conversions unless you’re sending matching transaction IDs and have deduplication configured. Transaction IDs must match exactly between the two data streams.
Common BigCommerce Google Ads Conversion Tracking Mistakes
After running tracking audits on dozens of BigCommerce stores, the same mistakes show up repeatedly. These aren’t obscure edge cases — they’re the standard broken states that stores end up in after multiple agencies, platform migrations, or DIY setups.
Mistake 1: The Global Site Tag Is Missing From All Pages
The purchase conversion tag on the order confirmation page requires the Google Click Identifier (GCLID) to be present in order to attribute the conversion back to an ad click. The GCLID is captured when the customer first arrives from a Google ad — that’s when the Global Site Tag creates the click record. If the Global Site Tag isn’t loading on every page of your store, some visitors will arrive from ads, click around your store, and then complete a purchase that shows up as a conversion with no attribution — “direct” traffic instead of “paid search.”
The result: your Google Ads campaign performance looks weaker than it is. Conversions aren’t being credited to the campaigns that drove them. Smart Bidding thinks certain campaigns are generating fewer conversions than they actually are and reduces bids accordingly.
Mistake 2: The Conversion Tag Fires on Page Load Across All Pages
This is the most catastrophic version of wrong trigger configuration. If your Google Ads conversion tag is attached to an “All Pages” trigger instead of an order confirmation event or thank-you page trigger, every single page visit counts as a conversion. Your Google Ads account will show thousands of daily “conversions.” ROAS figures will be astronomical. The campaign will look like it’s running beautifully.
Meanwhile, your actual order volume hasn’t changed at all.
This mistake happens when someone sets up the tag in GTM and selects the wrong trigger type — choosing “Page View” on “All Pages” instead of creating a specific event trigger or URL-based trigger scoped to the confirmation page. Always verify what trigger your conversion tag is using.
Mistake 3: Both the Built-In Method and GTM Are Running Simultaneously
Already covered in detail, but worth listing separately because it’s so common and so expensive. An agency adds GTM-based tracking without checking whether Affiliate Conversion Tracking code is already active. Every purchase fires twice. Google Ads shows half the actual cost per acquisition. The campaigns look twice as profitable as they are.
Before adding any new tracking, audit what’s already running. Check the Affiliate Conversion Tracking section in BigCommerce’s control panel. Check your GTM container for existing Google Ads tags. Check your BigCommerce theme’s footer templates for any hardcoded tracking scripts.
Mistake 4: Enhanced Conversions Are "Enabled" But Not Actually Working
The enhanced conversions setting in Google Ads can show as “enabled” in the conversion action settings even when no enhanced conversion data is actually being collected. This happens when someone turned on the setting without implementing the corresponding data collection tag. The diagnostics section in Google Ads shows the real status — look for “Enhanced conversions: Active” with a percentage of conversions showing user data. “Pending” means Google is still verifying. “Not active” means it’s not working regardless of what the conversion action settings say.
Mistake 5: The Wrong Conversion Window for the Store's Sales Cycle
A 30-day conversion window is correct for impulse purchases — consumables, low-cost items, anything a customer decides on within a few days of seeing an ad. It’s potentially wrong for higher-consideration purchases where customers might research for several weeks before buying.
If your store sells products with a longer research cycle and you’re on a 30-day window, you’re systematically undercounting conversions. Some of those “wasted” clicks you’re considering pausing actually converted — just outside your tracking window. Review your store’s average time from first visit to first purchase in GA4 and set your conversion window to cover at least 90 percent of that distribution.
Mistake 6: Counting Every Contact Form Submission or Newsletter Signup as a Primary Conversion
This is less common for pure ecommerce than for lead generation, but some BigCommerce stores with a B2B component or service element track non-purchase actions alongside purchases. If a newsletter signup is marked as a primary conversion action, Smart Bidding will optimize for newsletter signups. You’ll get very efficient newsletter signups. You’ll pay top dollar for customers who are interested in getting coupons, not in buying immediately.
Any conversion that isn’t a purchase should be secondary. Purchases are primary. Everything else is a supporting signal.
Mistake 7: No Regular Validation After Setup
Tracking setups break. Theme updates can remove script injection. GTM containers get modified by other team members. BigCommerce platform updates occasionally affect how scripts fire on the order confirmation page.
A tracking setup that was working perfectly six months ago may have broken silently since then. Build a monthly check into your process: compare Google Ads conversion count to BigCommerce order count, verify conversion values are passing, and check Google Ads diagnostics for any flagged issues. Catching a broken setup after one month is painful. Catching it after six months, after significant ad spend on bad data, is much worse.
Mistake 8: Scaling Ad Spend Before Validating Tracking Accuracy
This one isn’t a technical mistake — it’s a judgment call that goes wrong regularly. A store owner sets up Google Ads, does a basic check that conversions are appearing, and decides that’s good enough to start scaling spend. They invest $15,000 in a month, get what look like strong ROAS numbers, and reinvest even more. Three months later, they notice their actual revenue growth doesn’t match the reported campaign performance at all.
Accurate tracking should be treated as a prerequisite for meaningful ad spend, not something you optimize later. Verifying that your order values are correct, that you’re not double-counting, and that Smart Bidding is receiving clean signals takes a few hours of careful testing. The cost of skipping that validation is measured in months of misallocated budget.
How to Validate Your BigCommerce Conversion Tracking Setup
Validation isn’t a one-time event — it’s an ongoing practice. But here’s how to do a thorough validation of a setup you’re not sure about.
GTM Preview Mode: Your First Line of Defense
Before publishing any GTM changes, enter preview mode and walk through a complete purchase on your store. In the preview panel’s event list, confirm that:
- A “purchase” custom event appears after the order is placed
- The Google Ads Conversion Tracking tag shows as “Fired” (green checkmark) on that event
- The conversion value variable shows the correct order amount — not “undefined,” not null, not a static number
- The transaction ID variable shows the actual order ID from BigCommerce
- The tag fires exactly once in the entire session — if it fires multiple times on the same purchase, you have a trigger problem
Also check whether any Google Ads conversion tag appears firing on other events in the session (like page views or clicks) — that would indicate a trigger misconfiguration.
Google Ads Conversion Diagnostics
In your Google Ads account, navigate to Goals > Conversions and click on your purchase conversion action. In the diagnostics tab, check:
- Status: “Recording conversions” is what you want
- Enhanced conversions status: “Active” with a percentage shown, if you’ve implemented enhanced conversions
- Any warnings about missing data, incorrect tag placement, or unverified setup
The diagnostics section often catches problems that aren’t obvious from looking at raw conversion counts.
The Three-Platform Comparison
Once your setup has been running for at least 30 days with meaningful traffic, run a comparison:
- Google Ads reported purchases (conversion count)
- GA4 reported purchases (purchase event count in GA4 reporting)
- BigCommerce actual orders
These three numbers will never be identical due to attribution model differences, time zone discrepancies, and data processing delays. But they should be reasonably close. A 10 to 15 percent variance between Google Ads and GA4 is typical and expected. Anything beyond 20 to 25 percent warrants investigation.
If Google Ads shows significantly more conversions than GA4, you likely have duplicate tags or a trigger that’s firing too broadly. If GA4 shows significantly more than Google Ads, you may be missing the GCLID capture on some sessions, or your conversion window is cutting off some post-click purchases.
If the order counts are broadly aligned but revenue figures are substantially different, the problem is in value passing rather than conversion counting.
How Tagassists Helps BigCommerce Stores Get Accurate Google Ads Conversion Tracking
Fix Google Ads Conversion Tracking Today
We help BigCommerce stores capture accurate sales data and optimize campaign ROI.
Most BigCommerce stores that reach out to Tagassists for help fall into one of three situations: they have no conversion tracking at all and are spending on Google Ads completely blind, they have tracking that’s been in place for a while but something seems off with the numbers, or they’ve recently migrated agencies and inherited a setup nobody fully understands.
All three situations share the same root problem: campaign decisions are being made on data that isn’t accurate. Smart Bidding is being fed the wrong signals. ROAS figures are misleading. Budget allocation decisions — which campaigns to scale, which to pause, where to shift spend — are based on incomplete or incorrect information.
Tagassists works with BigCommerce store owners and ecommerce agencies across the USA to audit, fix, and validate tracking setups so that Google Ads campaigns are running on clean, accurate data.
A typical BigCommerce tracking engagement starts with a full audit: reviewing the GTM container for duplicate or misconfigured tags, checking whether the Affiliate Conversion Tracking section contains old code that’s conflicting with GTM, verifying that order values and transaction IDs are passing correctly, checking enhanced conversion status in Google Ads diagnostics, and comparing conversion counts across Google Ads, GA4, and BigCommerce orders.
From there, Tagassists handles the full implementation: clean GTM setup with a correctly structured dataLayer push on the order confirmation page, Google Ads conversion tag with accurate value and transaction ID mapping, enhanced conversions via the User-Provided Data tag approach, GA4 purchase event configuration aligned with Google Ads tracking, and Google Merchant Center and Google Ads linking review for Shopping and Performance Max campaigns.
The deliverable isn’t just a working setup — it’s a validated setup with documented evidence that each component is firing correctly, passing the right data, and not conflicting with anything else in the stack.
For store owners who want to verify their current setup before committing to a full implementation, Tagassists offers a free audit that covers the most common and most costly tracking issues: current GTM or Affiliate Conversion Tracking configuration, whether order values are passing correctly, duplicate tag detection, and enhanced conversions status.
Frequently Asked Questions
How do I set up Google Ads conversion tracking on BigCommerce?
You have two main options: the built-in Affiliate Conversion Tracking method (simpler, less flexible) or Google Tag Manager via Script Manager (recommended for most stores). Both require creating a purchase conversion action in Google Ads, installing the tracking code on your order confirmation page, and validating that order value and transaction ID are passing correctly.
What is the best method for BigCommerce Google Ads conversion tracking — built-in or GTM?
GTM is the better long-term choice for any store running ads on more than one platform, or planning to. The built-in Affiliate Conversion Tracking method is simpler to set up but harder to scale and manage. The most important thing is not accidentally running both simultaneously, which causes duplicate conversions.
Why is my BigCommerce Google Ads conversion showing $0 value?
This almost always means the wrong variable syntax is being used to pass the order amount. In the built-in method, the correct variable is this.transaction.value. In GTM, you need a correctly configured dataLayer variable reading from your purchase event push. Also check whether your Google Ads conversion action is set to a fixed value rather than “Use different values for each conversion.”
How do I pass order value and transaction ID to Google Ads from BigCommerce?
In the Affiliate Conversion Tracking method, use this.transaction.value and this.transaction.transaction_id as the dynamic values in your event snippet. In GTM, push these values to the dataLayer on the order confirmation page and create dataLayer variables in GTM to read them.
What is the difference between BigCommerce Affiliate Conversion Tracking and Google Tag Manager?
Affiliate Conversion Tracking is a code injection field built into BigCommerce’s control panel that loads on the order confirmation page. GTM is an external tag management system you install on your store. GTM gives you more flexibility and control, especially when running multiple ad platforms, but requires more setup.
Do I need Google Tag Manager for BigCommerce conversion tracking?
No — the built-in method works. But GTM is strongly recommended if you’re running ads on more than one platform, as it centralizes all tracking management and prevents the messy situation of having separate code in multiple places.
How do I set up enhanced conversions on BigCommerce?
Using GTM, create a User-Provided Data Event Tag and configure it to pass the customer’s email address from your dataLayer purchase event. Ensure the allow_enhanced_conversions parameter is set in your Global Site Tag. The tag should fire on the same trigger as your purchase conversion tag.
Why is my Google Ads showing more conversions than my BigCommerce orders?
The most common cause is duplicate conversion tags — both the built-in Affiliate Conversion Tracking and a GTM-based tag running at the same time. Another common cause is a trigger that fires too broadly (such as a Page View trigger on all pages). Audit your GTM container and BigCommerce Affiliate Conversion Tracking section to find any duplicate setups.
How do I stop duplicate conversions on my BigCommerce store?
Check whether you have both the Affiliate Conversion Tracking method and GTM-based tracking running simultaneously — this is the most common cause. If both are active, remove the one you’re not using. Also ensure you’re passing a transaction ID, which Google Ads uses to deduplicate conversions from the same order.
How do I track Google Shopping purchases in BigCommerce?
Standard purchase conversion tracking covers Shopping campaigns — the same conversion action used for Search applies to Shopping. Make sure the conversion category is set to Purchase, you’re passing transaction-specific values, and you’re using transaction IDs. For Performance Max, consider also setting up add-to-cart and begin-checkout as secondary signals.
How do I connect GA4 to Google Ads for my BigCommerce store?
In Google Ads, go to Tools > Linked Accounts and link your GA4 property. After linking, you can import GA4 conversions into Google Ads. Import them as secondary conversion actions for validation purposes, while keeping your native Google Ads conversion tag as the primary bidding signal.
Should my BigCommerce store use server-side conversion tracking?
If you’re spending less than $5,000 per month on Google Ads, prioritize getting your client-side setup correct with enhanced conversions before adding server-side complexity. For stores spending $10,000 per month or more — especially with significant Safari traffic or privacy-tool-aware audiences — server-side tracking is worth the investment.
How do I know if my BigCommerce conversion tracking is working correctly?
Place a test order and verify in GTM Preview mode that the conversion tag fires exactly once with the correct order value and transaction ID. Check Google Ads diagnostics for “Recording conversions” status. Compare your 30-day Google Ads conversion count against GA4 purchase events and BigCommerce orders — variance beyond 20 percent warrants investigation.
Can I run Performance Max campaigns on BigCommerce without conversion tracking?
Technically yes, but it’s not advisable. Performance Max without conversion data is almost entirely directionless — the algorithm has no signal about which conversions to optimize for. At minimum, you should have purchase conversion tracking in place before running Performance Max. Value-based conversion data unlocks Target ROAS bidding, which is the most effective strategy for most ecommerce Performance Max campaigns.
How long does it take to set up Google Ads conversion tracking on BigCommerce?
A standard GTM-based setup with enhanced conversions takes two to four hours of implementation work, followed by one to two days of monitoring to confirm data is flowing correctly. A full audit and cleanup of an existing broken setup can take longer depending on how complex the existing configuration is.
Final Recommendations: What to Check, Fix, and Prioritize
If you’ve read this far and you’re unsure about your current setup, here’s a practical checklist to work through before your next ad spend decision.
Verify first:
- Is the Global Site Tag loading on every page of your store?
- Are you running both Affiliate Conversion Tracking and GTM simultaneously? If so, remove the duplicate.
- Is your conversion tag firing only on the order confirmation page, triggered by a purchase event?
- Are real order values passing — not $0, not a static default?
- Is a unique transaction ID included in every conversion event?
Fix if needed:
- If conversion values are $0: reconnect the order value variable in GTM or fix the variable syntax in Affiliate Conversion Tracking
- If conversion counts are double your actual orders: find and remove duplicate tracking tags
- If enhanced conversions show as inactive: check the allow_enhanced_conversions flag and User-Provided Data tag configuration
- If GA4 and Google Ads show significantly different conversion counts: investigate trigger configuration and check for double-counting
Prioritize before scaling spend:
- Clean, accurate purchase conversion tracking is more valuable than any bidding optimization
- Enhanced conversions should be active before you increase budgets significantly
- A validated setup — confirmed by GTM Preview, confirmed by Google Ads diagnostics, confirmed by platform comparison — is the only reliable foundation for Smart Bidding to improve your campaigns over time
The stores that win with Google Ads long term aren’t always the ones with the biggest budgets or the cleverest ad copy. They’re the ones whose tracking is clean enough that Google’s algorithm has what it needs to learn and improve. Getting that foundation right is the highest-leverage work you can do for your paid advertising program.
If you’re not confident your current BigCommerce conversion tracking is accurate, Tagassists offers a free audit covering your GTM setup, conversion action configuration, order value passing, and enhanced conversions status.
Abdullah Al Zahid is the CEO & Founder of tagassists and a media buying specialist with over 4 years of experience. He has managed more than $7.5M in advertising spend, helping businesses grow through effective digital marketing, web analytics, and tracking solutions.
