Kratly
Revenue attribution

Google Ads conversion value 0: why campaigns show $0 revenue

Google Ads conversion value 0 on every campaign? Check these 8 causes in order, from the wrong column to lost GCLIDs and failed uploads, and fix each one.

Priyansh KumarUpdated October 21, 20269 min read
Google Ads campaign table with conversions counted but a $0.00 conversion value column circled

Short answer

Google Ads shows a conversion value of 0 when the value never reaches it, or is counted somewhere you aren't looking. Check eight causes in order: the wrong column or a secondary action, the value setting, the tag not sending a value, currency, click-date reporting, test orders, a lost GCLID, and failed offline uploads.

You can see sales in Stripe or Shopify. Google Ads shows conversions, or none at all, and a value of $0.00. So Smart Bidding can't tell a $500 customer from a $0 sign-up.

One store owner described exactly this: "the GADS Purchase event doesn't measure the VALUE, which shows always as $0" (Shopify Community). Another found Google Ads "only been picking up about 10% of my sales" (Shopify Community).

Work through the causes below in order. The first ones take a minute to check.

Quick diagnosis: which cause is yours?#

What you seeMost likely causeGo to
Value shows in "All conv. value" but not "Conv. value"Action is secondaryCause 1
Every conversion has the same value, or 0Value settingCause 2
Conversions counted, value always $0Tag doesn't send a valueCause 3
Values look wrong by a fixed factorCurrency or centsCause 3, Cause 4
Yesterday's sales missing, older days changeClick-date reporting and lagCause 5
Test purchase didn't appearNo ad click behind itCause 6
Far fewer conversions than salesGCLID lostCause 7
Uploaded conversions don't appear by campaignOffline upload problemCause 8

The 8 causes of $0 conversion value, and their fixes#

Cause 1: You're looking at the wrong column, or the action is secondary#

The Conversions and Conv. value columns include primary actions only. Secondary actions only appear in All conv. and All conv. value (Google Ads Help).

This catches many teams that import purchases from GA4. GA4 key events arrive in Google Ads as secondary by default (Google Analytics Help).

Fix:

  1. Add All conv. value to your campaigns table. If the value shows there, the data is arriving.
  2. Go to Goals › Conversions › Summary and open the purchase action.
  3. Change it to Primary. Make sure no duplicate purchase action is also primary.

Cause 2: The value setting is wrong#

Each conversion action has a value setting (Google Ads Help):

  • Use the same value for each conversion: every sale gets one fixed number. If that number is 0, every sale is $0.
  • Use different values for each conversion: the tag or upload sends the real amount.
  • Don't use a value: no revenue at all.

Fix: set purchases to Use different values, and set a sensible default value for when none is sent. For SaaS, use your average first payment, not 0.

Cause 3: The tag doesn't send a value, or sends it in the wrong format#

With "different values", the tag must send value and currency:

gtag('event', 'conversion', {
  send_to: 'AW-XXXXXXXXX/XXXXXXXXXXXX',
  value: 49.00,
  currency: 'USD',
  transaction_id: 'order_12345'
});

The value must be a number with a period as the decimal point (Google Ads Help). Common mistakes:

  • The data layer push is missing the value line. That was the cause in the Shopify thread above.
  • The value is a string with a symbol: "$49" or "49,00".
  • The variable in Google Tag Manager points to the wrong data layer key, so it's empty.
  • Stripe amounts are in cents. amount_total: 4900 is $49.00. Send 49.00, not 4900.

Fix: open Tag Assistant, make a test purchase and read the value the tag actually sends. Then fix the data layer or GTM variable.

Cause 4: Currency is missing or wrong#

Google reports values in your account's billing currency. A missing or invalid currency code on the tag is ignored, and Google falls back to the currency of the action's default value. Other currencies are converted at the average daily rate (Google Ads Help).

Fix: send an ISO currency code (USD) on every conversion, and set the same currency on the action's default value.

Cause 5: Click-date reporting and conversion lag#

Google Ads credits a conversion to the day of the ad click, not the day of the sale (Google Ads Help). A customer who clicked on the 1st and paid on the 20th raises the 1st.

Conversions can be reported up to 90 days after the click (Google Ads Help), and data takes 24 to 48 hours to process. So recent days look empty and older days keep changing.

With data-driven attribution, a conversion can be split across campaigns, so you may see values like 0.33 conversions. That's credit sharing, not an error.

Fix: add the Conv. value (by conv. time) column to see sales by the day they happened. Don't judge the last two or three days.

Cause 6: Your test order had no ad click#

A purchase only counts in Google Ads if it follows an ad click. If you type your own URL and buy, Google has nothing to credit. That's often why an action sits at "Awaiting conversion" or a test shows 0 (Shopify Community).

Fix: use Tag Assistant to confirm the tag fires with a value. Don't rely on a self-made test purchase to show up in reports.

Cause 7: The GCLID gets lost#

If the click ID disappears, Google can't link the sale to a click. Conversions vanish, and value goes with them.

Where the GCLID gets lost:

  • Auto-tagging is off. Check Admin › Account settings (Google Ads Help).
  • A redirect strips it. HTTP to HTTPS, www to non-www, or a link shortener drops ?gclid=. Google flags this as "Website redirects are losing click data" (Google Tag Manager Help).
  • Consent settings. When ad storage is denied, the click cookie isn't written (Simo Ahava).
  • iOS traffic arrives with gbraid or wbraid instead of gclid. If your code only looks for gclid, it misses them.
  • Checkout on another domain. Stripe Checkout runs on checkout.stripe.com unless you use a custom domain (Stripe Docs). Your tag and cookie don't follow.

Fix: click your own ad and follow the URL to checkout, checking for gclid at each step. Capture gclid, gbraid and wbraid on landing and store them server-side. For Stripe, pass your user ID into checkout and send the conversion from your server. Our guide to sending Stripe revenue to Google Ads covers each step.

Cause 8: Offline uploads fail or don't match#

If you upload conversions, they can arrive in the account but not in campaign rows. One developer wrote that API uploads "ARE NOT showing up for the individual campaigns" (Google Ads API forum). Another said uploaded conversions "still show 0" (Google Ads API forum).

Check these:

  1. Upload diagnostics. Open Goals › Conversions › Uploads and read the errors.
  2. Conversion Name matches the action name exactly, including spaces and dashes.
  3. Conversion Value and Currency columns are present and filled. They're optional, so a file without them uploads fine and shows $0 (Google Ads Help).
  4. Time zone is set, and the conversion time is after the click time.
  5. The click is under 90 days old.
  6. You waited 4 to 6 hours after creating the action before the first upload.
  7. API access. Since June 15, 2026, new offline-import integrations must use the Data Manager API. Calls through the Google Ads API can fail for accounts not already using it (Google Ads Help).
One offline conversion row with a mismatched conversion name and empty value and currency columns
Illustrative example: three ways one upload row ends up with $0. Upload diagnostics name the exact problem, so read them first.

How to stop it happening again#

That last check matters most. Google Ads will rarely match your billing system exactly, because of attribution windows and click-date reporting. But a gap that suddenly grows is a tracking problem. Our SaaS marketing attribution guide explains which gaps are normal.

Once values are flowing, use them. Pause or reduce campaigns that spend without revenue: see Google Ads wasted spend: the 9 places your budget leaks.

How to do this in Kratly#

  1. Connect Google Ads and Stripe. Kratly compares Google's conversion value with real Stripe revenue, by campaign.
  2. See the gap. Kratly flags campaigns where Stripe shows revenue and Google Ads shows $0.
  3. Fix the source. Kratly captures click IDs, including gbraid and wbraid, and uploads paid conversions with value from the server.
  4. Watch the gap close. Re-check the comparison after each fix, so bidding learns from real revenue, not $0.

Go deeper: Google Ads conversion tracking: when sign-ups count as sales

Questions, answered

Why is my Google Ads conversion value 0?

Most often, the purchase action is secondary, the value setting is "same value" with 0 or "don't use a value", or the tag fires without a value. Check those three first. If conversions are also missing, the GCLID is probably being lost or offline uploads are failing.

Why does Google Ads show conversions but no revenue?

The conversion is being counted but no value is attached. Check that the action uses different values per conversion, that the tag or upload sends a numeric value and currency, and that the default value isn't 0. Then confirm in Tag Assistant with a test purchase.

Why is the GCLID missing from my URLs?

Auto-tagging may be off, or a redirect may be stripping URL parameters. Click your own ad and watch the URL. Also check consent settings and iOS traffic, which can arrive with gbraid or wbraid instead of gclid.

How long does conversion value take to show in Google Ads?

Usually 24 to 48 hours. Conversions are credited to the click date and can arrive up to 90 days after the click, so recent days look low and older days change. Use the "by conv. time" columns to see sales by the day they happened.

Why doesn't Google Ads revenue match Stripe?

They count differently. Google credits the click date, uses attribution windows and data-driven credit, and only sees sales it can link to a click. Stripe records every payment. Expect a gap. A sudden change in the gap usually means tracking broke.

Written by

Priyansh Kumar

Priyansh Kumar has spent more than a decade in growth, scaling brands from 1 to 10 and from 10 to 100. He now builds Kratly, an autonomous growth team that ties every campaign, page and email to the revenue it brings.

Kratly on LinkedIn

Sources

Was this article useful?

Next step

Find the campaigns showing $0 that actually made money.

Start a free Kratly trial, connect Google Ads and Stripe, and see real revenue next to Google's numbers for every campaign.