How to Reduce Unassigned or Direct None Traffic and Revenue Attribution in GA4

Learn the most common reasons why traffic and transactions are attributed to unassigned or direct/none instead of a paid channel

Part of our mission at Elevar is to reduce the total # of orders that have no meaningful attribution on transactions inside of Google Analytics.

The prerequisite to this is that you are tagging all of your inbound URLs with UTM parameters.

And we really mean all inbound URLs!

For example:

  • Profile links on social media
  • Links shared in social media posts
  • Advertising links on social
  • Links from content promotion, podcasts, etc

Now you never want to add UTMs to links from your own website. We've seen customers add UTMs to homepage banners, navigation, etc. When you do this then you are changing the way events and transactions will be attributed.

With that out of the way, here are the most common reasons we still see some websites that have a high % of direct/none attributed orders:

1: Offline Channel Purchases Sent to GA4 without a Source/Medium Override

If you are sending purchases to GA4 via Elevar's server-side transactions then please follow this step closely.

It's possible you have orders being created in your store besides just Online Store like this:

All of these orders will be sent to Google Analytics unless you choose to block these in your GA4 Destination Settings:

However if you want to send some of channel orders to GA and they are truly an offline channel that doesn't have physical checkout the user goes through, then it's likely these orders will display at 'unassigned' as no source/medium is provided

But you can override this by setting a custom source/medium in the Advanced Options here:

This will reduce your overall unassigned conversions.

2: Checkout Landing Pages on Non-Plus Shopify Websites or Plus Stores using Checkout Extensibility

If you are a non-Plus store then it's highly likely that Google Tag Manager (and Elevar's data layer) is not available on the checkout pages.

So if a user comes into your site via an SMS abandoned cart link that goes straight to the checkout page then Google Analytics will not execute, nor will Elevar be able to grab the UTMs and set on the order notes or store them offsite.

The fix for this:

  1. Use Elevar's Fully Managed Server + Update your DataLayer to the 2.42+ version
  2. Send links to your cart page and allow visitors to navigate to the checkout from the cart page.

3: Buy Now Buttons Auto-Redirecting to Checkout

This is a known limitation that Shopify outlines in their docs here.

Essentially Shopify does not support cart attributes because the buy now button technically creates a new checkout for the user session and thus loses any pre-existing UTM and attribution data stored on the session from the original inbound link.

This means the order notes that Elevar sets on the session and uses in the GTM server-side container setup do not exist when a user clicks buy-now button.

The fix for this:

  1. Use Elevar's Fully Managed Server + Update your DataLayer to the 2.35+ version
  2. If you have a high % of customers utilizing this we recommend turning off the server-side conversion and using the GTM web container purchase event.

We're actively investigating solutions to this issue.

4: Third Party Checkout Apps That Don't Persist Order Notes

This issue is fairly rare now that many third party apps are utilizing the native Shopify checkout OR they support Shopify's cart attributes that are used to store UTM information on order notes.


ReCharge, Carthook, Zipify, Bold, Upscribe, Smartrr all function normally with Elevar's server-side setup.

But if you are using a third party checkout app that takes the user outside of the Shopify checkout experience then you will need to verify that the order notes exist on orders placed inside the Shopify Admin > Orders > view individual order:

If you find the you have orders that do not have orders notes, first check that you are saving order notes in your data layer. Go to My Tracking > GTM Details > expand Event Breakdown

If you have Save Order Notes checked, this means your order notes should be set and they are likely being overwritten by your third-party checkout.

5: Your Server-Side GA4 Property Is Live Less Than 7 Days

In most cases you will want your new property (if you are utilizing a new property to test) to run for 2-4 weeks to ensure that session data catches up.

In short, GA4 uses data driven attribution with different scopes depending on report scope.

So in this scenario:

  • User clicks FB ad on desktop on Monday
  • You launch new GA property on Tuesday
  • User comes back direct to website on Wednesday and completes purchase

Your pre-existing GA4 property will have user based reports attributing to FB, and the session and event based reports a blend of FB and Direct.

But your new GA4 property all reports will attribute to direct because it does not have the stored session data from Monday's first visit to consider in the blended model.

6: Are your ads properly tagged with UTM parameters?

Destinations like Facebook won't automatically add UTM parameters to your ad links, but Google Analytics requires UTM parameters in order to properly attribute paid traffic.

It's not just enough to add UTM parameters, but also make sure that the casing works. Here are some best practices:

Don't use double question marks

Let's say you're sending Paid Facebook Traffic to a specific variant on your product page. The URL you want to use is

Your UTM parameters should be formatted like this:

And should not be formatted like this:

Use hyphens instead of spaces.

Format your UTMs like this:


Instead of this:

&utm_source=ig banner ad