The Easiest Way to Boost Your ROAS Without Changing a Single Ad
Most marketers chase new ads when the real performance gains come from cleaning up attribution.
Every marketer wants to improve ROAS. Most think the answer lives inside the ad account. Better copy. New creative. A sharper landing page.
That’s where everyone looks.
But sometimes the biggest ROAS boost doesn’t come from optimizing your ads. It comes from fixing your tracking.
The Hidden ROAS Killer
At a previous company, my team was buying media at scale. Millions in display arbitrage, affiliate, and paid search spend. The revenue was good, but the numbers didn’t add up.
Our Null traffic, or what Google Analytics calls direct traffic, was out of control.
Almost 30 percent of all sessions had no identifiable source. Even with bot filtering on Cloudflare, nearly a third of our traffic had no clear path back to a campaign, source, or medium.
That 30 percent gap didn’t just make reporting messy. It wrecked ROAS. Paid clicks were hiding in Direct, and revenue was being credited to “null” or “unknown.” It looked like some campaigns were underperforming when they weren’t.
Google’s Definition of Direct is Frustrating
Reasons for (direct) / (none)
When links to your site lack UTM parameters or your site isn’t integrated with marketing and advertising platforms, traffic source information is lost.
Redirects (for example, from one site to another or from a secure site (https) to a non-secure site (http)) can strip UTM parameters from the URL.
Using URL shorteners like bit.ly can also strip away referral details.
If this applies to you, check your marketing links, email campaigns, and social media posts to confirm they include correct UTM tags. You should ensure these tracking parameters remain intact when visitors arrive at your website.
What “Direct” Really Means
In reality, Google Analytics “Direct” or “(null)” traffic is what happens when Analytics has no clue where someone came from.
That could mean:
A redirect stripped out your UTM parameters
A privacy setting blocked the referrer
A consent banner delayed tracking
A campaign link wasn’t tagged properly
The user typed your URL directly (very small percent of users)
Analytics doesn’t guess. If it can’t find a UTM or a referrer, it labels it “Direct.” That’s how millions of dollars in ad spend quietly fall into a black hole.
The Fix: Classify Every Visit
To fix our attribution problem, I built a cascading set of rules that classified every visit before it hit the “unknown” bucket.
The goal was simple. Never let a visit go unclassified.
Here’s how it worked.
Cascading Rule 1: Check the UTMs
If the URL had UTM parameters, we trusted them completely.
utm_source=google
andutm_medium=cpc
meant Google Searchutm_source=taboola
meant Taboolautm_source=newsletter
meant Newsletter
Easy and simple; the way it is supposed to work. This solved the cleanest cases right away.
Cascading Rule 2: Check the Referrer
If UTMs were missing, we looked at where the visitor came from using document referrer.
The document referrer is the webpage a user visited before arriving on your site. It is automatically sent by the browser and appears in analytics tools as the referral source. For example, if someone clicks your link on facebook.com and lands on your site, the document referrer is facebook.com. It is one of the simplest ways to see where traffic originates, but if it is blocked, stripped, or missing, that visit often gets mislabeled as Direct.
taboola.com
meant Taboola and was classified as Display Arbitragenews.yahoo.com
meant Yahoo and was classified as News Referralt.co
meant Twittergoogle.com
without UTMs meant Organic Search or Google Discover depending on rule #3
That filled in most of the gaps.
Cascading Rule 3: Check the Landing Page
Google traffic was the toughest. It could be Paid Search, Organic, Discover, or Google News, and each team had its own revenue goals.
Fortunately, each team also had its own landing pages. So if a visit had no UTMs and no referrer, we looked at the landing page path.
Anything that was evergreen content
meant Paid Search/news/
meant Google News or Discover
That final layer closed the loop.
After putting this in place, we reduced null traffic from 30 percent to almost zero.
The Easiest Way to Do This in Google Tag Manager
You don’t need to write code to get results like this. You can rebuild the same system with a few simple triggers in Google Tag Manager.
1. Create a Page View Trigger
In GTM:
Go to Triggers → New
Select Page View → Some Page Views
Condition:
Page URL contains /google-ads-landing
(or your actual path)
This tells GTM, “If someone lands here, tag them as Google Ads traffic.”
2. Create a Constant Variable
Go to Variables → New
Type: Constant
Name:
Traffic Source Override
Value:
Google Ads
3. Send It to Google Analytics
Option A: Add it to your main GA4 configuration tag.
Under Event Parameters, add:
Name:
traffic_source
Value:
{{Traffic Source Override}}
Attach your trigger from Step 1.
Option B: Create a dedicated GA4 Event Tag just for this page.
Event name:
page_view
Parameter:
traffic_source = {{Traffic Source Override}}
Trigger: your Google Ads landing page.
Either way, all visitors to that page will be classified as Google Ads traffic.
4. Verify
Use Preview Mode in GTM and GA4 DebugView. Visit your landing page and check that the traffic_source
value shows “Google Ads.”
5. Optional: Make It Stick
If you want that classification to follow the user around your site, you can set a cookie.
Add a Custom HTML Tag:
<script>
document.cookie = “traffic_source=Google Ads;path=/;SameSite=Lax”;
</script>
Fire it on your Google Ads landing page trigger. Then create a 1st Party Cookie Variable called traffic_source
and use it in your GA4 config tag for all other events.
Now every session that starts on that landing page stays tagged as Google Ads.
Why This Boosts ROAS Without Touching Ads
Once we cleaned up our data, the “bad” ROAS numbers started to improve on their own.
Here’s why:
Conversions were being correctly attributed back to the right channels.
Revenue was flowing to the right campaigns.
Spend looked more efficient overnight, without changing a single ad or landing page.
When you know exactly where every dollar comes from, optimization becomes obvious. Fixing tracking is the fastest, cheapest way to improve ROAS. It’s not as exciting as launching new creative, but it’s far more powerful.
If your ROAS looks off, don’t start by rewriting ads.
Start by cleaning up your attribution. Because you can’t optimize what you can’t measure.
And sometimes, the biggest lift doesn’t come from better ads. It comes from better data.