How to run ads that raise direct traffic, step by step
Tag every ad click, give the ads a landing page nothing else links to, hold some regions back and mark the launch in GA4. Then compare new Direct visitors, new customers and total sales in test regions against control.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free UTM coverage calculator.
Usually you can, if you set the ads up so their effect stays readable. Tag every click, send the ads to a page nothing else links to, hold some regions back and mark the start date in GA4. Then compare new Direct visitors and total sales where the ads ran against where they did not.
Step by step
You need GA4 with purchase marked as a key event, a Google Ads or Meta account, and Shopify's reports. The first five steps take an afternoon. The campaign itself runs for weeks.
- Write down today's two Direct numbers. In Traffic acquisition, note Direct's sessions for each of the last eight weeks. Then, in User acquisition, read New users on the Direct row of First user default channel group. The first counts visits; the second counts people whose very first visit had no source. Menu path: Reports > Acquisition > Traffic acquisition, then Reports > Acquisition > User acquisition.
- Stop ad clicks from landing in Direct. In Google Ads, open the Auto-tagging section and tick "Tag the URL that people click through from my ad". In Meta, add URL parameters to each ad under Tracking. Use the platform as utm_source and one paid medium, such as paid_social, which GA4 sorts as paid. Menu path: Google Ads > Admin > Account settings > Auto-tagging; Meta Ads Manager > ad > Tracking > URL parameters.
- Give the ads a landing page of their own. Pick or build a page that no menu, email or post links to. A Direct session that starts there is most likely an ad click that lost its tags. GA4's Landing page report shows the first page of each session, so you can watch it. Menu path: Reports > Engagement > Landing page.
- Hold some regions back. Run the campaign in part of your market and keep comparable regions without it. In Meta, set the regions at the ad set level under Audience, then Locations. In Google Ads, use Locations in the Campaigns menu, or ask whether your account can run Conversion Lift based on geography. Menu path: Meta Ads Manager > Ad set > Audience > Locations; Google Ads > Campaigns > Locations.
- Mark the launch in GA4. Open any report with a line chart, right-click the launch date and click Add annotation. Name it after the campaign and the test regions, so nobody reads the jump later as a mystery. You need the Analyst role or above. Menu path: Reports > a report with a line graph > right-click a data point > Add annotation.
- Put test and control side by side. In Traffic acquisition, click the comparison icon at the top right, then + Create new. Build one comparison on Country for the test group and one for control. Each comparison gets its own colour-coded rows, so the two Direct lines sit together. Menu path: Reports > Acquisition > Traffic acquisition > comparison icon > + Create new.
- Check the ad-only page for leaks. In Traffic acquisition, set the primary dimension to Session source / medium and add Landing page + query string. Count the (direct) / (none) sessions on the ads' page. GA4 leaves UTM values out of that landing page dimension, so read the source column, not the URL. Menu path: Reports > Acquisition > Traffic acquisition > Session source / medium + Landing page + query string.
- Judge on new customers and sales in Shopify. After a full buying cycle, open Customers by location, which counts new customers by their latest shipping location. Compare test and control there, then do the same in Total sales by billing location. Direct is supporting evidence, not the verdict. Menu path: Shopify admin > Analytics > Reports > Category: Customers > Customers by location.
A worked example
For illustration, say you sell in eight countries and plan four weeks of Meta video ads meant to make people remember you. You split the countries into two groups of four whose Direct lines moved together for two months.
Say the two groups each started at 400 new users a week whose first visit was Direct. During the test, say the test group reaches 520 a week and control reaches 420. That is 100 extra a week that control cannot explain, in this worked example.
Then the leak check. In this worked example, the ad-only page shows 30 (direct) / (none) sessions a week. Some of that rise may be your own untagged clicks, not people who remembered you.
Now the verdict, in Shopify. For illustration, say control sells €51,000 a week during the test, up from €50,000. Say the test group sells €54,000, up from the same €50,000.
If the ads had done nothing, the test group would likely have matched control's 2% rise. So, for illustration, the ads added about €3,000 a week of sales on €2,500 a week of spend: a return of 1.2x.
Say your margin is 50%, so break-even ROAS is 1 divided by 0.50, or 2.0x. In this worked example the campaign raised Direct and lost money: €3,000 of extra sales left €1,500 of margin against €2,500 of spend.
How long should it run? On one store's Journeys sheet, journeys with 10 or more touches took 16.0 days to buy. If your slowest buyers take that long, four weeks lets most of them finish, and one week would not.
What should you check when the numbers look wrong?
- Direct rose in control as well. Something other than the ads moved: an email, a sale, the weather or the season. Read the gap between the groups, never one group's rise on its own.
- Control regions saw your ads anyway. When you choose a city or region, Meta can tick Reach more people likely to respond to your ads by default. That lets delivery stray past your locations, so untick it before launch.
- Direct barely moved but sales did. That is not bad news. Buyers who saw the ad may have searched your name or clicked a later ad, so GA4 gave the visit another label. That is why sales decide, not Direct.
- The ad-only page keeps collecting Direct sessions. Some links lose their tags on the way. Google's help names redirects that strip UTM parameters and link shorteners that drop referral details. Fix the link, then stop counting those sessions as brand lift.
- Meta claims more sales than the gap shows. Meta's standard setting can count a purchase within 1 day of a view of its ad. Many of those buyers were coming anyway, so trust the regional gap.
What to do this week
- Check the tags on every live ad. Open Auto-tagging in your Google Ads account settings and the Tracking section of each live Meta ad. Pass: auto-tagging is on and every Meta ad carries URL parameters with a paid medium. Fail: an ad lacks them, so its clicks can surface as Direct or under an organic channel.
- Vet the landing page you plan to use. In Reports > Engagement > Landing page, search for the page's path over the last month. Pass: it gets few or no sessions today, so later Direct sessions there stand out. Fail: it already draws visits from menus or emails, so pick or build another.
- Pick test and control countries. In Traffic acquisition, build two Country comparisons and read their Direct rows over the last two months. Pass: the two lines rise and fall together. Fail: they drift apart, so regroup the countries before you spend anything.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Traffic acquisition report (Google); User acquisition report (Google); About auto-tagging (Google); Add URL parameters to your Meta ads in Meta Ads Manager (Meta); Collect campaign data with custom URLs (Google); Default channel group (Google); Landing page report (Google); Use location targeting (Meta); Target ads to geographic locations (Google); About Conversion Lift (Google); About annotations (Google); Apply comparisons to reports (Google); Customers reports (Shopify); Sales reports (Shopify); Understand (direct) / (none) traffic (Google); About attribution models and attribution settings (Meta); Scopes of traffic-source dimensions (Google)
Related answers
Frequently asked questions
Which landing page should an awareness ad point to?
One that nothing else links to: no menu item, email or social post. Then a Direct session that starts there is most likely an ad click that lost its tags. Keep it close to the page you would normally use, so the test measures the ad and not the page.Does GA4 count a returning ad visitor as direct traffic?
Usually not, if their first click carried tags and they return on the same browser within the lookback window. GA4 gives a session started by direct entrance that user's earlier campaign values. Visitors it cannot recognise, such as on a new device, stay in Direct.Can I compare direct traffic between countries in GA4?
Yes. In Traffic acquisition, click the comparison icon at the top right and create a comparison on Country for each group. GA4 shows colour-coded data for each comparison, so test and control sit side by side. It also ships a prebuilt comparison for direct traffic.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- Direct TrafficDirect Traffic refers to website visitors who arrive by typing the URL directly into their browser or through bookmarks. They do not come from search engines or referrals.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- IncrementalityIncrementality measures the true causal impact of a marketing campaign. It quantifies the additional conversions or revenue directly from that activity.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- Landing PageLanding Page: A single web page that appears after clicking a search result, marketing promotion, email, or online advertisement.
- UTM ParametersUTM Parameters are URL tags marketers use to track campaign effectiveness across traffic sources. They provide data for accurate campaign tracking and attribution in analytics platforms.