For most of the last month our analytics dashboard said Moneylab had 197 sessions. That is not a lot, but it is not nothing either, and it was trending the right way. We had been quietly using that number as the denominator for every conversion calculation we ran.
Then we broke it down by channel and the whole thing fell apart in about nine seconds. Here is the actual table, GA4, 20 July through 17 August 2026:
| Channel | Sessions | Sec / session | Pageviews / session | Engaged |
|---|---|---|---|---|
| Direct | 149 | 4.6 | 1.05 | 30% |
| Organic Search | 27 | 48.6 | 1.85 | 63% |
| Organic Social | 9 | 1.4 | 1.00 | 33% |
| AI Assistant | 8 | 60.9 | 1.63 | 75% |
| Unassigned | 4 | 26.3 | 0.50 | 25% |
Direct is 76 percent of our traffic. Direct also spends four and a half seconds on the site and looks at 1.05 pages. Organic Search spends forty-nine. That is a ten-fold gap between two groups of people who are supposedly doing the same thing: reading a blog.
People do not read ten times faster because they typed the URL.
The part that settled it
Session duration is suggestive. Landing pages are conclusive. Here is where Direct traffic entered the site:
| Landing page | Sessions | Sec / session |
|---|---|---|
| / | 32 | 2.8 |
| /blog/how-to-start-ai-automation-agency-2026 | 21 | 1.4 |
| /blog/how-to-get-first-ai-automation-client-2026 | 12 | 20.0 |
| /blog/best-ai-side-hustles-2026-that-actually-pay | 7 | 8.0 |
| (not set) | 6 | 0.0 |
| /blog/freelancing-with-ai-what-clients-actually-want-2026 | 6 | 0.0 |
| /blog/how-to-build-passive-income-with-ai-2026 | 5 | 10.6 |
Twenty-one sessions arrived at /blog/how-to-start-ai-automation-agency-2026 with no referrer, and left after 1.4 seconds.
Nobody types that. It is a forty-four character slug on a site with no brand recognition. There is no bookmark for it, no newsletter that linked it, no email campaign pointing at it. A human who wanted that page would have arrived from a search engine and GA4 would have said so. Six more sessions landed on a page with zero seconds of engagement, which is not a fast reader, it is a request that fired the tag and closed.
Direct is not a traffic source. Direct is the bucket GA4 uses when it has no idea where a hit came from. Anything that strips its referrer header lands there: headless browsers, uptime and preview checkers, SEO crawlers that execute JavaScript, link-scanners in messaging apps, and the growing pile of automated agents that render pages properly enough to fire the measurement tag. GA4's bot filtering catches the known IAB spider list. It does not catch a well-behaved Chromium instance.
So what is the real number
Organic Search plus AI Assistant is 35 sessions over 29 days. That is 1.2 real arrivals a day, and even that is generous, since some organic hits are surely crawlers too.
The number we had been carrying in our heads was closer to seven a day. We were off by a factor of five in the direction that felt good.
This matters more than it sounds. Every experiment we run gets graded against traffic. If a landing page change moves conversions and the denominator is 76 percent robot, the measured effect is noise wearing a costume. We had spent real nights arguing about whether a copy change had worked, on a sample that was mostly not people.
The $80 Report — free
An AI was given $80 and told to make money. 156 days later: $5.00. This is all 7 side-income methods it tested, what each one actually returned, the effort each cost, and the four that returned nothing.
Sent instantly, no cost. You’ll also get one email a week on what we tried and what it made. Unsubscribe any time.
The five-minute check for your own site
You do not need code or a paid tool. In GA4:
- Open Reports, then Acquisition, then Traffic acquisition.
- Set the date range to at least 28 days. Shorter windows are too noisy to read.
- Add Average engagement time per session as a column if it is not already there.
- Compare the Direct row against the Organic Search row.
Now apply the rule of thumb: if Direct's engagement time is under about a fifth of Organic Search's, Direct is mostly machines. Genuine direct traffic is repeat visitors and people who know your name, and repeat visitors are your most engaged segment, not your least. Direct engagement should sit above organic, not ten times below it.
Then do the confirming step, which is the one people skip. Switch the report dimension to Landing page and filter to Direct. Ask yourself honestly whether a human being would type each of those URLs from memory. Your homepage, maybe. A deep slug with the year in it, no.
One caution, learned the hard way: do not grade GA4 engagement data until it is at least two days old. Early figures mature and can invert your conclusion entirely.
The finding we did not expect
Look back at the first table at the row labelled AI Assistant. Eight sessions. Sixty-one seconds each. 75 percent engaged.
That is the best-performing channel on the site, ahead of organic search on every quality measure. Eight people arrived from a chat assistant that had recommended us, and they actually read the thing.
Eight is a small number and we are not going to pretend otherwise. But the direction is worth taking seriously: the traffic that comes from an AI recommending your page is pre-qualified in a way search traffic is not. Somebody described a problem in their own words, an assistant decided your page answered it, and they arrived already convinced. Search traffic still has to be persuaded it landed in the right place.
If you are choosing where to spend effort on a small site, the ranking by quality per visit currently reads: AI assistants, then organic search, then a long gap, then social. Social sent us nine sessions at 1.4 seconds each, which is functionally zero.
What we changed
Three things, all boring, all cheap:
1. Direct is out of every success metric. No experiment on this site gets graded against total sessions any more. Organic Search and AI Assistant are the only channels allowed in a denominator, and if a change cannot show up in those, it did not happen.
2. We stopped trusting session counts as the primary bar. At 1.2 arrivals a day, a session-based metric has no statistical power at all. Noise swamps any effect we could realistically produce. We moved the bar to search impressions, which are counted in the thousands rather than the dozens and move for real reasons.
3. We write for the assistants now, not just the crawlers. Clean headings, direct answers near the top, real numbers rather than ranges, and a clear statement of what a page covers. That is what gets a page quoted in a chat answer, and quoted pages are the only traffic we have that reliably stays.
The uncomfortable general lesson
Our analytics were not broken. Every number in that dashboard was accurate. GA4 correctly reported that 149 sessions arrived without a referrer, because they did.
The failure was that we read a bucket labelled Direct and heard the word "people." The instrument was fine. The interpretation was the bug, and it survived for months because it flattered us and nothing in the interface argued back.
If you run a small site and your Direct channel is a comfortable majority of your traffic, you probably have less of an audience than you think, and a clearer picture of a smaller number is worth considerably more than a fuzzy picture of a bigger one. It is the difference between optimising a funnel and decorating one.
Go look at your Direct row. Give it five minutes. Ours cost us a month of bad decisions.
From the people who ran this experiment: AI SEO Roast — Full Report costs $49 at money-lab.app/products. A 30+ point audit of your actual site, with the fixes ranked by what will move traffic first. Refundable for 30 days, no questions asked.