Your Google Ads ROAS almost never matches Shopify because the two count sales differently, not because either is broken. Google credits itself using a data-driven model over a rolling multi-week click window, counts cross-device and modeled conversions, and reports revenue on the ad-click date. Shopify counts only completed, last-click orders on the day they happen. Expect Google's attributed revenue to run ahead of what Shopify assigns to Google — often by a wide margin. The fix is not to force them to agree; it is to treat Shopify as your revenue truth, use a blended number across platforms, and judge campaigns on per-order profit.

Why these two numbers were never going to match

You open Google Ads and it shows a ROAS that looks great. You open Shopify, filter to "Google," and the sales number is smaller — sometimes half. Nothing is misconfigured. The two tools are answering different questions.

Google Ads answers "which sales did my ads plausibly influence?" Shopify answers "how many orders actually happened, and who was the last click?" Those are different measurements of the same week, so they produce different totals. This is the same structural gap you see when your Google Ads sessions don't match Shopify — the counting rules simply differ.

Below are the five mechanisms driving the ROAS gap, a worked week you can follow line by line, and the reconciliation move that actually matters for profit.

The five reasons Google Ads ROAS runs ahead of Shopify

1. Different attribution models

Google Ads now defaults every new conversion action to data-driven attribution (DDA), which spreads fractional credit across each ad touch on the path to a sale (Google Ads Help; ALM Corp, 2026). Google retired first-click, linear, time-decay, and position-based models across 2023–2024, leaving only DDA and last-click (Growth Minded Marketing).

Shopify's default is last non-direct click: 100% of an order's credit goes to whatever channel the customer clicked last. So Google can claim a partial or full slice of a sale that Shopify hands entirely to email, organic, or direct. Same order, two different owners.

2. A long click window claims sales Shopify has moved on from

Google's default click-through conversion window is 30 days, adjustable to 1, 7, 14, 30, 60, or 90 days (ALM Corp, 2026). A shopper who clicks your ad today and buys three weeks from now is still credited to that ad — and Google reports the conversion on the click date, not the purchase date.

Shopify records the order on the day it was placed and attributes it to the last click at checkout, which by then is rarely the ad. This desynchronizes any day-to-day comparison. Always compare on trailing windows, never single days.

3. Cross-device and view-through conversions

Google can stitch a logged-in user across devices: they click your ad on a phone, buy on a laptop, and Google still claims it. Shopify ties the order to the referrer on the buying device, which is often "direct." Google's video campaigns also count engaged-view conversions and a default one-day view-through window that lands in the "All conversions" column (ALM Corp, 2026) — credit for sales where the shopper never clicked at all. Shopify has no concept of a view. It only records a completed checkout.

When Google can't directly observe a conversion — an ad blocker fired, cookies were declined, or a tag failed — it estimates it with modeling and reports the estimate alongside counted conversions. Field estimates put ad-blocker- and consent-affected traffic at roughly 10–25% of users (Audiense/Elevar). This cuts both ways: some agencies find pixels undercount by 20% to 40% before server-side tracking is added (Digital Position). Either way, Google reports a mix of counted and modeled sales; Shopify reports only real, server-side orders.

5. The revenue value itself is defined differently

Even when conversion counts line up, the dollar figures often don't. Your conversion tag may pass the product subtotal while Shopify's "total sales" includes shipping and tax — or the tag sends a value in the wrong currency. If revenue is off but order counts roughly agree, look here first. This is the same value-definition trap behind cases where GA4 revenue doesn't match Shopify and where GA4 conversions don't match Shopify.

A worked example: one week, two ROAS numbers

Say you sell a print-on-demand hoodie. Over one week you spend $1,000 on Google Ads. Here is what actually happened versus what each tool reports.

Ground truth: 40 real orders at $60 subtotal + $8 shipping + $5 tax = $73 each, so Shopify total sales = 40 × $73 = $2,920. Of those 40 buyers, 18 clicked a Google ad last, 6 clicked a Google ad earlier but bought after clicking email, 4 only saw a video ad, and 12 came from organic or direct.

What Google Ads reports:

  • 18 last-click + 6 assisted (partial DDA credit) + 4 view/engaged-view + 5 modeled recoveries ≈ 27 attributed conversions.
  • It reports revenue at the $60 subtotal the tag passes: 27 × $60 = $1,620 attributed.
  • Google ROAS = $1,620 ÷ $1,000 = 1.62.

What Shopify reports:

  • Only the 18 last-click Google orders land under "Google": 18 × $73 = $1,314.
  • Shopify ROAS for Google = $1,314 ÷ $1,000 = 1.31.

Two honest numbers, a 24% ROAS gap, zero bugs. Now the part both tools hide.

ROAS is the wrong number to optimize anyway

Neither 1.62 nor 1.31 tells you if you made money. ROAS ignores the cost of the product. Walk the profit on those 40 real orders:

  • Revenue (Shopify total sales): $2,920
  • Product + print cost at $28 per unit: 40 × $28 = −$1,120
  • Payment processing at about 2.9% + 30¢ per order on the Basic plan (Webgility): roughly 40 × ($73 × 0.029 + $0.30) ≈ −$97
  • Google ad spend: −$1,000
  • One chargeback fee at about $15 (Webgility): −$15

Net profit = $2,920 − $1,120 − $97 − $1,000 − $15 = $688. Your true profit on ad spend (POAS) is $688 ÷ $1,000 = 0.69 — you kept about 69 cents of profit per ad dollar. That is the number that pays your rent, and neither Google's 1.62 nor Shopify's 1.31 shows it. This is why chasing a matching ROAS is a distraction from the metric that decides whether to scale.

How to actually reconcile it

You will not make Google and Shopify agree, and you should stop trying. Instead:

Treat Shopify as revenue truth. Order count and total sales in Shopify are the source of truth for how many sales happened and how much came in. Google's number is the source of truth for how many of those its ads influenced. For the wider picture of why every tool disagrees, start with the hub guide on reconciling your ecommerce data.

Use blended ROAS as your headline. Total revenue ÷ total ad spend across every platform gives one honest number that can't be double-claimed (Polar Analytics). When you sum each platform's self-reported revenue, the total always exceeds Shopify's real revenue because the windows overlap — so blended, anchored to Shopify, is the only figure that ties out.

Shorten your comparison for sanity checks. Set Google's window to 7-day click for a like-for-like read against Shopify's last-click view, then switch back for optimization.

Move from ROAS to POAS. Once you can see product cost, fees, and refunds per order, campaign decisions get obvious. If you run multiple channels, a dedicated look at multi-touch attribution tools helps you decide how much credit each touch really earned.

Where PodVector fits

Reconciling this by hand across tabs is where most sellers give up. PodVector connects Shopify, Meta Ads, Google Ads, Printify, and Printful, then computes your true per-order profit — ad spend, product and print cost, fees, and refunds netted against each order, using live data rather than a platform's self-credited estimate.

Victor, PodVector's AI employee, reads that connected data and tells you which campaigns are actually profitable after cost, not just which ones show a flattering ROAS. Victor reads your ad data and proposes moves; he does not touch your ad account. The actions he can execute are Shopify-side and only with your approval. He is not a dashboard — he analyzes and acts on the numbers so you don't have to reconcile four tools yourself.

See your true per-order profit with PodVector.

FAQs

Why is my Google Ads ROAS higher than Shopify's?

Google credits sales across a rolling multi-week click window using data-driven attribution, counts cross-device and modeled conversions, and reports revenue on the click date. Shopify counts only completed last-click orders on the purchase date. Google's slice of a week is broader, so its ROAS reads higher. Neither is wrong.

How big a gap between Google Ads and Shopify is normal?

There is no single published constant for Google specifically, but the drivers are well documented: overlapping attribution windows mean summed platform revenue always exceeds Shopify's real total (Polar Analytics), and ad-blocker plus consent loss affects roughly 10–25% of users (Audiense/Elevar). A steady ratio matters more than a matching number — investigate only when the ratio suddenly shifts.

Will server-side conversion tracking make the numbers match?

No. Server-side tracking recovers lost events — sales blocked by ad blockers or consent, which some stores find is 20% to 40% of pixel events (Digital Position). It does nothing about the structural gaps: data-driven versus last-click, the long click window, cross-device, view-through, and click-date reporting. Better plumbing narrows tracking loss; it cannot close a methodology gap.

Should I change Google's attribution window to match Shopify?

You can set the click-through window as low as one day to read closer to Shopify's last-click view (ALM Corp, 2026), which is useful for a sanity check. But don't optimize on it — a shorter window hides real assisted sales. Keep the default for bidding, and reconcile on blended revenue and profit instead.

What number should I actually optimize on?

Profit on ad spend (POAS), anchored to Shopify's real orders. ROAS ignores product cost, print cost, processing fees, and refunds — so a "good" ROAS can still lose money. Once you net every cost against each order, the decision to scale or cut a campaign becomes obvious, and the Google-versus-Shopify mismatch stops mattering.