How Analyzify Minimizes Not Set in Google Analytics (+Why You See It)

Discover why GA4 reports show “(not set)” on Shopify and how Analyzify helps reduce attribution loss with better session tracking.

Contributors

If you’ve ever opened your GA4 reports and found a traffic source, campaign, or even country listed as (not set), you’re not alone. It’s one of the most common — and confusing — issues marketers and analysts face.

In GA4, “(not set)” appears when Google Analytics doesn’t receive the necessary information to populate a specific dimension. It’s not an error — it simply means the data for that field was missing, blocked, or disconnected from the session context.

factors-leading-to-not-set-in-ga4-reports-djAWnuMG.jpg

For example:

  • If a user completes a purchase, but GA4 doesn’t know where the session originated, the source/medium field may show (not set)

  • If browser settings block cookies, GA4 might not be able to assign a client ID, and the session itself could go untracked

This issue doesn’t just affect reporting cleanliness — it affects your ability to attribute conversions, evaluate campaigns, and optimize ad spend. And unfortunately, it tends to happen more often on Shopify — especially when using GA4’s client-side setup or native integrations.

Why Does “(not set)” Appear More Often on Shopify?

The (not set) problem is common across many platforms — but it’s especially noticeable for Shopify merchants using Google Analytics 4 (GA4). Even with a seemingly correct setup, you may find purchases showing up with unknown sources, unattributed campaigns, or missing user/session information.

This isn’t because Shopify blocks GA4 — but rather due to how Shopify’s structure interacts with GA4’s attribution logic.

Bonus: Learn more about Why Your Attribution Data Doesn’t Match Across Platforms

Here’s why Shopify increases the risk of tracking gaps:

1) Broken Session Flows

Shopify’s checkout flow often leads users away from the standard tracking path — especially when:

broken-session-flows-in-shopify-checkout-VR00rh2N.jpg

  • A customer pays via PayPal, Klarna, or a delayed payment method

  • The purchase is completed through a link or email invoice

  • A Draft Order is paid without the user returning to your store — or the session is overwritten by a tracking issue

In these cases, GA4 never sees the thank_you page — meaning it can’t match the order to the original session or source.

2) Strict Privacy Defaults and Cookie Limitations

Many Shopify stores operate in regions with GDPR or similar regulations. When using Shopify’s Privacy API with Google Consent Mode (v2), GA4 relies on valid consent signals to collect marketing data.

  • However, due to misconfigured setups — in either Basic or Advanced Mode — cookies may still be blocked or user/session identifiers may not be stored properly.

  • Without those identifiers, GA4 can’t connect the purchase to the user’s earlier activity, resulting in (not set).

3) Shopify’s Native GA4 Integration Is Limited

Shopify’s Google & YouTube Channel app provides only a basic GA4 setup. It doesn’t include:

shopifys-native-ga4-integration-limitations-Gh54kPQI.jpg

  • Server-side tracking

  • Reliable client-server coordination

  • Complete ecommerce parameters

While it technically sends purchase events, Shopify’s GA4 integration often lacks the context GA4 needs to match those events with the correct session or campaign.

This issue doesn’t just impact traffic source or campaign attribution — it can also lead to incomplete data in other GA4 reports like Items, Coupons, Taxes, and Shipping.

That’s why understanding the root causes of (not set) — and how to reduce them — is essential for Shopify merchants using GA4.

Bonus: Learn more about Why You Need Server-Side Tracking for Shopify in 2025

The Real Causes Behind “(not set)” in GA4

While Shopify’s structure contributes to tracking issues, the core reason (not set) appears is because GA4 couldn’t access or match critical attribution data during a session or conversion.

Below are the most common and technically grounded causes — especially relevant for Shopify merchants:

1) Client-Side Tracking Blocked or Interrupted

GA4 relies on browser scripts to capture identifiers like client_id, session_id, and UTM/click IDs. But in real-world conditions, those scripts often fail to load or run properly.

why-is-not-set-appearing-in-ga4-reports-1-mjgEBvHZ.jpg

Common reasons:

  • Ad blockers prevent GA4 scripts from executing

  • Browser restrictions (like Safari’s ITP or Firefox’s ETP) limit cookie lifetime or block tracking altogether

When GA4 can’t access this data, it logs the event but cannot assign a traffic source — and falls back to (not set).

Bonus: Explore How to Fix Your GA4 & Meta Tracking!

2) Consent Restrictions or Misconfiguration

If you’re using Google Consent Mode (v2) with Shopify’s Privacy API in Active Mode, GA4 is restricted from writing cookies unless valid marketing consent is received.

However, even when users give consent, GA4 may still miss attribution data if the consent setup is misconfigured — which is common on Shopify.

ga4-misconfiguration-results-UFjA9cHM.jpg

This can result in:

  • GA4 running in limited mode

  • No client_id being stored

  • UTM and campaign data not being captured

Without this data, even successful purchases can’t be tied to the original session — and GA4 reports it as (not set).

3) Session Breakage or Overwritten Sessions

This is especially common in Shopify. If a user leaves your site and completes the transaction externally — such as through:

  • A PayPal or Klarna redirect

  • A manual payment link (e.g., for Draft Orders)

…or if their existing session is overwritten due to a tracking issue, the original session context is lost. GA4 might still receive the purchase (via server-side or delayed triggers) but can’t link it to the visit.

Without session continuity, source and campaign data are lost — and GA4 logs (not set).

4) Missing UTM or Click ID Parameters

UTM tags (like utm_source, utm_medium, and utm_campaign) are commonly used to track where visitors come from. In some cases, these parameters may be missing when a user lands on the site — due to:

causes-of-missing-utm-parameters-and-not-set-problem-in-ga4-WwnIZOJe.jpg

  • Redirects that strip UTM values from URLs

  • Consent restrictions that prevent them from being stored

  • Pages or campaigns that were never properly tagged

When this happens, GA4 can’t assign a traffic source — and logs the session or conversion as (not set).
(Click identifiers like gclid and fbclid are more relevant for attribution within marketing platforms like Google Ads or Meta.)

Summary: GA4 Needs Client Context

Even with server-side tracking in place, GA4’s Measurement Protocol requires session data — especially client_id — to properly link conversions to traffic sources.

If that context is missing due to any of the reasons above, GA4 doesn’t guess. It just records the event with (not set) where attribution data should be.

Why It’s So Hard to Fully “Fix” the (not set) Problem

If you’ve been looking for a guaranteed way to remove all (not set) values from your GA4 reports — here’s the reality:

You can’t fix it completely.

Even with a solid implementation, some amount of “(not set)” will always appear. That’s not a mistake or a misconfiguration — it’s simply how Google Analytics works in today’s privacy-first, browser-restricted environment.

challenges-in-eliminating-not-set-values-in-ga4-pOdNxw47.jpg

Here’s why it’s technically unavoidable:

Some Browsers Intentionally Block Tracking

Safari, Firefox, Brave, and other privacy-focused browsers often block:

  • Third-party cookies

  • GA4 scripts

  • Redirected click parameters like gclid or fbclid

These restrictions prevent GA4 from creating a client ID or reading UTM data — which means session data is missing from the start.

Consent Restrictions (Especially in GDPR Regions)

When Consent Mode is set to Active, GA4 requires explicit consent to store any marketing-related data. But even when consent is given, tracking may still fail due to incorrect setup — especially on Shopify. This can result in:

  • No cookies

  • No client ID

  • No UTM parameters

  • No attribution context

Session Disconnects from Real User Behavior

Shopify’s checkout process — especially when it involves external redirects or delayed completions — frequently breaks session continuity. GA4 receives the purchase data, but the user never returns to the site or loads the thank_you page, so the source can’t be linked.

Bottom Line

You can reduce the chances of (not set) by ensuring proper client-side tracking and a working consent setup — but you can’t recover data that was never captured in the first place.

The goal is not to eliminate (not set) entirely.

It’s to minimize it — and make sure your key purchase events are attributed accurately whenever possible.

How Analyzify Helps Minimize “(not set)” in GA4

While it’s impossible to eliminate (not set) entirely, there’s a lot you can do to reduce its frequency — especially when purchases are tracked server-side.

Analyzify helps minimize “(not set)” in your GA4 reports by preserving the critical data points GA4 needs for attribution — and sending them server-side with each purchase event.

Here’s how:

✅ Captures and Stores Key Identifiers Early

Analyzify captures and temporarily stores values like:

  • client_id (from the user’s first pageview)

  • UTM parameters (source, medium, campaign, term, content) — used for Shopify-side reporting

  • Click IDs (like gclid, fbclid) — used for ad platform attribution

This data is preserved even if the user doesn’t complete their purchase in the same session — or returns via a different flow (e.g., draft orders, manual payment links).

how-analyzify-minimizes-not-set-in-ga4-reports-CEvuGyOh.jpg

✅ Sends Purchase Events with Attribution Data via Server-Side

When a purchase is completed, Analyzify:

  • Retrieves the previously stored session and user identifiers, such as client_id and session_id

  • Sends this information alongside the purchase data via GA4’s Measurement Protocol

  • Ensures GA4 receives the session context — helping match the event to the original source and medium instead of falling back to (not set)

This process works reliably even when:

  • The user returns later to complete the purchase (e.g., after receiving a draft order link or email invoice)

  • The purchase is triggered by a third-party billing system or completed through manual backend creation (e.g., B2B orders)

GA4 cannot generate or recover client/session identifiers server-side on its own — it must receive them explicitly. Analyzify ensures those values are available when it matters most: at the time of purchase.

Built for Shopify - No Dev Work Required - Fast Setup
Analyzify logo

Still Seeing “(not set)” in GA4? We Can Help Fix It.

Analyzify helps you preserve session context, capture identifiers early, and send purchase data server-side — reducing (not set) and restoring your attribution.
See How Analyzify Minimizes “(not set)”

Does It Remove “(not set)” Completely?

No — and we believe it’s important to be transparent about that.

However, Analyzify significantly improves attribution accuracy in GA4 by:

  • Preserving session context

  • Capturing click IDs and UTM parameters early (used where relevant)

  • Sending stored identifiers with server-side events

The result? Fewer (not set) entries, more reliable source tracking, and a clearer view of your campaigns’ actual performance.

Bonus: Explore Benefits of GA4 Server-Side Tracking for Shopify

Final Thoughts: You Can’t Control Everything — But You Can Track Smarter

The (not set) issue in GA4 is frustrating — but it’s not a bug. It’s a result of how modern tracking works in a privacy-restricted, session-fragmented environment.

While no setup can remove all attribution gaps, you don’t have to accept a broken view of your data.

Analyzify helps Shopify merchants reduce tracking loss by preserving session context and ensuring the necessary identifiers are available server-side — even in the most difficult scenarios.

That means:

  • Fewer (not set) entries in your GA4 reports

  • More reliable campaign attribution

  • Better insights from the data you already collect

Built for Shopify - No Dev Work Required - Fast Setup
Analyzify logo

“(not set)” Isn’t a Bug — But You Can Minimize It.

“(not set)” happens when GA4 can’t track sessions — Analyzify helps prevent that with hybrid tracking and server-side delivery.
Fix GA4 Attribution Gaps Today →

If you’re tired of unexplained revenue gaps and missing conversions, it’s time to fix what you can — and Analyzify is built to help.

Latest Posts

The latest news, technologies, and resources from our team.
View all posts
Blog Post Icon
Understand Attribution Parameters Stored in Your Shopify Order Notes
Track your Shopify orders more accurately with Analyzify. Understand UTM tags, click IDs, and consent data stored in your order notes automatically.
Blog Post Icon
How Analyzify Minimizes Not Set in Google Analytics (+Why You See It)
Discover why GA4 reports show “(not set)” on Shopify and how Analyzify helps reduce attribution loss with better session tracking.
Blog Post Icon
How Dynamic Pricing Can Boost Your Shopify Store’s Revenue
Discover how dynamic pricing strategies can enhance your Shopify store's revenue. Learn to optimize pricing for maximum profit and customer engagement.
Blog Post Icon
7 Common Misconceptions About Server-Side Tracking for Shopify
Learn what server-side tracking really means for Shopify: the limitations, the myths, and how to implement it without risking attribution or compliance.
Sign up for our newsletter
Be the first to know about releases and industry news and insights.
We care about your data in our privacy policy.
Take the first step towards reliable tracking Join 3,000+ merchants who trust their tracking with Analyzify.