Google Ads Conversions Without a GCLID on Shopify

Google Ads Conversions Without a GCLID on Shopify

TL;DR

Google Ads attributes a paid sale by reading the gclid (Google Click Identifier) that auto-tagging appends to your ad URLs. When that parameter never reaches checkout, the standard conversion counts as zero. There are more reasons for a missing gclid than most merchants think: auto-tagging off, server-side URL stripping, redirects and iframes, ad blockers, cookie loss, the 90-day expiry on imported clicks, and cross-device journeys. With enhanced conversions turned on and the no-click-ID import setting enabled, WeltPixel Conversion Tracking can upload the purchase to Google with no click ID at all, sending hashed first-party identifiers so Google matches it against a signed-in Google account. This article is only about that one failure mode. It is not how to set enhanced conversions up, and it is not why your Google and Shopify counts disagree. Both of those are separate articles, linked below.

Key Takeaways

  • A gclid can go missing for many reasons: auto-tagging off, stripped URL parameters, redirects, ad blockers, cookie loss, the 90-day import window, and cross-device buying.
  • Without recovery, an order with no click ID contributes nothing to your Google Ads conversion count, even if the click was a real paid click.
  • With enhanced conversions on, WeltPixel Conversion Tracking can upload the purchase server-side using hashed email, phone, and address, so Google matches it with no gclid.
  • Phone numbers are normalized to the international format Google expects before hashing, so a number typed in local format still matches.
  • This needs at least one customer identifier on the order. An order with no click ID and no usable customer data is still skipped, because Google requires at least one identifier.
  • Google Ads conversion tracking runs on the free Explorer plan, so the no-click-ID path is not a paid add-on.

Why does an order arrive with no GCLID?

The gclid is a tracking parameter Google appends to the URL when someone clicks your ad and auto-tagging is on. Your storefront reads it, stores it, and sends it back with the conversion so Google knows which click produced the sale. The whole system depends on that one string surviving the trip from ad click to checkout. It often does not.

Here is the short list of what strips it [6]:

Cause What happens to the gclid
Auto-tagging disabled Google never appends the parameter in the first place
Server-side URL cleanup A proxy, CDN, or redirect drops query parameters
Redirects, iframes, third-party scripts The landing URL is rewritten and the parameter is lost
Ad blockers / cookie loss The stored gclid is cleared before checkout
Cross-device Click on a phone, purchase on a laptop, no shared cookie
90-day expiry An imported conversion older than ~90 days is rejected as expired [5]

That last row is the one operators underestimate. Google rejects imported conversions that reference a gclid older than roughly 90 days from the click, returning an expired-click error [5]. If your sales cycle has any length to it, a slow-converting buyer who clicked the ad in March and bought in July arrives with a gclid Google will no longer accept. The click was real and paid. The attribution is gone anyway. This is why the no-click-ID path matters even for stores whose tagging is otherwise healthy.

WeltPixel Conversion Tracking reads the click-through conversion window set on your Google Ads conversion action, which can run from 1 to 90 days and defaults to 90 when none is configured, and drops any click ID whose click predates that window before it uploads. Instead of sending a stale gclid Google would reject, it hands the order to the user-data path described below, so a real but slow-converting sale still has a route to attribution.

What happens to a conversion with no click ID by default

By default, a purchase that reaches Google with no usable gclid (and no gbraid or wbraid, the iOS app-and-web equivalents) counts as zero. Google has nothing to match the sale against, so the conversion is silently dropped. No error appears in your Shopify admin. The order completes, the revenue is real, and your Google Ads conversion column simply does not move for that sale.

Multiply that across every stripped parameter, every cross-device buyer, and every slow converter, and you get a structural undercount. That undercount is one row in a larger conversation about why Google reports fewer conversions than Shopify shows. If that broader gap is what you are chasing, that is a different question and I have written it up separately. See why Google Ads reports fewer conversions than Shopify. This article stays narrow: orders that reach Google with no click ID, and the one move that recovers them.

How WeltPixel recovers the conversion without a GCLID

When an order has no click ID, WeltPixel Conversion Tracking can still report the purchase to Google Ads by sending what it does have: the customer's data. In the app's Advanced Settings there is a toggle labeled "Import all events that have user-provided data, even those without GCLID." Turn it on, and the app stops requiring a click ID before it uploads a Google Ads purchase conversion.

Instead of a gclid, the upload carries hashed first-party identifiers from the order: the customer's email, phone number, and name, hashed before they ever leave your store, plus address fields. These are marked as first-party data so Google knows they came from your own customer relationship. Google then matches that hashed data against a signed-in Google account and credits the conversion to the right campaign, with no click ID anywhere in the request.

A few specifics worth knowing:

  • This is server-side. The upload happens from the order webhook after checkout, not from a browser tag, so an ad blocker or a dropped cookie at checkout does not stop it.
  • It is Purchase only. WeltPixel Conversion Tracking sends the purchase conversion to Google Ads on this path, not add-to-cart or begin-checkout.
  • Google's own guidance points here. Google recommends importing all events that have user-provided data even when they do not have a gclid, because that is how enhanced conversions reaches its full match rate [1]. The toggle mirrors that recommendation almost word for word.
  • It runs on the free Explorer plan. Google Ads tracking, including this path, is not gated behind a paid tier.

One honest limit: this is not a way to invent attribution out of nothing. Google requires at least one identifier per conversion [2]. An order that has no click ID and also no usable customer data, a true guest checkout with nothing matchable, is still skipped, because there is nothing for Google to match on.

Why your phone numbers might not be matching

Here is the detail that separates a mediocre match rate from a good one. Google expects identifiers in a specific format before it will match them, and phone numbers are where most stores quietly lose matches. Google wants phone numbers in the international E.164 format: a leading +, the country code, then the national number, no spaces or dashes. A phone number typed the way customers actually type it, in local format with a leading zero and spaces, does not match in that raw shape.

WeltPixel Conversion Tracking normalizes the phone number to the international E.164 format Google expects before hashing it, using the order's country to fix locally-formatted numbers. So a number entered in local format, with a leading zero and the country's own spacing, gets converted to its full international form first, then hashed and sent. Without that step, those orders would hash a string Google never recognizes, and the match would silently fail even though the customer data was there the whole time.

This matters most for stores selling outside the US, where local phone formatting varies widely and a naive cleanup would mangle the number. It is a concrete match-rate lever, and it runs automatically on the no-click-ID path. If you want the parallel idea on the Meta side, the same "hash what you have and let the platform match" principle is how you raise Meta event match quality on Shopify.

Do I still need enhanced conversions turned on?

Yes. This path is built on top of enhanced conversions, not a replacement for it. The hashed customer identifiers that recover a no-click-ID order are exactly the identifiers enhanced conversions provides. If enhanced conversions is off, there is no hashed customer data to send, and the no-gclid upload has nothing to match on.

So the order of operations is: enhanced conversions first, then the no-click-ID toggle. If you have not set enhanced conversions up yet, start there. I have a full walkthrough of the install paths and the match-rate verification screen in the enhanced conversions setup and verification guide. For the broader picture of how Google Ads tracking fits together on Shopify, from the browser pixel to offline import, the complete Google Ads conversion tracking guide for Shopify is the hub this article is a spoke off.

One more piece of context worth knowing. Starting in April 2026, Google Ads accepts user-provided data from website tags, Data Manager, and API connections at the same time, so you no longer have to choose one method over another [4]. The server-side upload WeltPixel Conversion Tracking uses now coexists with your tag-based data instead of competing with it.

How does consent work on this upload?

This is the part to read carefully, because it is easy to over-claim and I will not.

WeltPixel Conversion Tracking passes Google's consent signals, ad_user_data and ad_personalization, with every conversion it uploads. Passing a signal is not the same as gating on it. The browser side is different: browser events respect Shopify's Customer Privacy API signals. The server-side no-click-ID upload sends the consent signals along with the data, and it does not suppress itself based on a denied state.

What that means for you as an operator: whether Google actually uses the data is governed by the consent state your store sends and your Consent Mode setup. In the EEA, enhanced conversions only match when ad_user_data is granted, which is true on Google's side regardless of any app. Getting that consent state right is your store's job, through your consent management platform, not something an app does for you. Google began disabling conversion tracking and personalization for accounts in the EEA that were not passing correct Consent Mode v2 signals on 21 July 2025 [7], which is the practical reason your CMP configuration has to be correct. Treat the no-click-ID recovery as a tracking capability, and treat consent as a separate responsibility that sits with your store.

FAQ

Does this work without enhanced conversions turned on?

No. The no-click-ID upload depends on the hashed customer identifiers that enhanced conversions provides. With enhanced conversions off, there is no customer data to send and nothing for Google to match against. Set enhanced conversions up first, then enable the no-gclid toggle.

Will this recover a conversion whose gclid expired?

It recovers the attribution a different way. A gclid that references a click older than your conversion action's click-through window, up to 90 days, is rejected as expired by Google [5], so WeltPixel Conversion Tracking drops that dead click ID before upload instead of sending it. The no-click-ID path does not lean on the gclid at all. It matches on hashed customer data instead, which is why it is useful precisely for the slow-converting orders that outlive the window.

Does this cost extra?

No. Google Ads conversion tracking in WeltPixel Conversion Tracking runs on the free Explorer plan, and the no-click-ID path is part of that. There is no paid tier required to upload conversions on hashed first-party data.

Is this the same as the count gap I see between Google Ads and Shopify?

No, and they are easy to confuse. Missing click IDs are one cause of that gap, but the larger difference between Google Ads and Shopify usually comes from things like free Shopping listings, click-date versus order-date timing, and modeled conversions. That whole diagnosis lives in why Google Ads reports fewer conversions than Shopify. This article only covers the no-click-ID slice of it.

What if an order has no gclid and no customer data either?

It is skipped. Google requires at least one identifier per conversion [2], so a true guest checkout with no matchable email, phone, or address cannot be recovered. The recovery path needs something to match on.

Recover the paid sales Google cannot see

A large share of real orders arrive with no Google click ID, and Google Ads cannot count what it cannot match. WeltPixel Conversion Tracking uploads the purchase server-side with hashed customer data, so a paid sale still matches the right campaign even when the click ID never made it to checkout. It runs on the free Explorer plan, alongside GA4, Meta, TikTok, and Reddit.

Install WeltPixel Conversion Tracking on the Shopify App Store

Sources

  1. Google Ads Help. "About enhanced conversions for leads." https://support.google.com/google-ads/answer/15713840
  2. Google Ads API. "Upload online click conversions." https://developers.google.com/google-ads/api/docs/conversions/upload-online
  3. Google Ads Help. "About enhanced conversions." https://support.google.com/google-ads/answer/9888656
  4. Google Ads Help. "Import all events with user-provided data (April 2026 unification)." https://support.google.com/google-ads/answer/15713840
  5. Google Ads API developers group. "Offline Conversion EXPIRED_CLICK (90-day window)." https://groups.google.com/g/adwords-api/c/jeqcyGvYZtc
  6. ClickPatrol. "What Is A GCLID? The Complete Guide (2026)." https://clickpatrol.com/what-is-a-gclid-the-complete-guide-to-google/
  7. Google Ads Help. "Updates to consent mode for traffic in the EEA (21 July 2025)." https://support.google.com/google-ads/answer/13695607

Ready to upgrade your tracking?

Server-side tracking for Magento and Shopify — accurate data, better attribution, full privacy compliance.