DigitalFunnels
Get free scan
A filing cabinet drawer labelled DIRECT, filled with the same customer faces repeated over and over
All field notes
DigitalFunnels field noteAnalyticsMarketing Ops

"Direct" Is Not a Channel. It Is the Work You Have Not Finished Yet

We opened our own 'direct' bucket and more than half of it was returning customers whose original source was in our database all along. Why direct is not a channel, and the six checks that expose what is really inside it.

Dzmitry Khmialeuski

Founder-led field note

September 18, 2026

Open your source report. Find the row called direct, unknown or not set. Look at its share.

That row is not a channel. Nobody wakes up and decides to arrive directly. It is the folder your system uses for everything it could not explain, and its size measures your reporting, not your customers.

The web analytics industry has been arguing about this for years, and the numbers are worse than most owners assume. In SparkToro's referral experiment, 100% of visits from TikTok, Slack, Discord and WhatsApp arrived with no referral data at all, 75% of Facebook Messenger visits carried none, and LinkedIn passed nothing in 14% of cases. SparkToro found that 76% of its own traffic was labelled direct.

But that debate stops at the session. The expensive version of this problem lives one step further along, in the place where money actually appears: your customer records. And there, "direct" is mostly something much more embarrassing than dark social.

It is your own returning customers.

What we found when we stopped reading the summary

Last month we went through bookings one at a time instead of reading the dashboard. The figures below come from one business, but we run reporting across several trades — salons and med spas, roofing, garage doors, appliance repair — and the same row turns up in every one of them.

More than half of everything our system had labelled direct was a customer who had been served before. The model looked inside the attribution window, found no new touch, shrugged, and wrote direct. Their original source had been sitting in our own database the entire time.

Underneath that sat a second, dumber problem. The list of sources our staff could pick from at the counter had Instagram and Facebook, but no paid option. So every time somebody said "she came from the ad", it was recorded as organic. The ads were paying for bookings that the report then credited to social media.

We have cut that unknown bucket by 60%. I do not regard the remaining 40% as a fact about customer behaviour. It is work we have not finished.

After fifteen years in marketing I have stopped believing in unknown customers. There are gaps in the system, technical debt, and the reluctance to open the data and look. Even "a friend recommended us" is an attribution. It is called referral, and it has a name.

Attribution does not live in your ad accounts

This is the part that takes longest to accept.

Your ad platform knows about a click. Your till knows about money. Neither knows about a person. The only thing that can join them is a customer entity inside your own system, and no amount of pixel work substitutes for it.

Which is why the first question to an owner staring at conversions in an ad account that do not appear in the till is not technical. It is this: name a customer who paid you this week and tell me which post, which ad, which action brought them. In my experience nine owners out of ten cannot. They have a feeling — "mostly from social" — and a feeling never reconciles with a bank statement.

The returning customer is the most expensive row in your report

A customer comes back. The window holds no touch. The system writes direct. That is how half of that folder gets filled: with the people you already earned.

The rule we settled on splits returns into paid and unpaid:

  • Came back on their own, no paid touch in the window. The booking inherits the customer's first source. Whoever brought them originally brought them again.
  • Came back after an ad. The paid touch takes the credit and the booking is flagged as a reactivation, so the cost of bringing old customers back becomes a number you can see.

The second half matters more than it looks. Keeping an existing base is its own budget line. While it hides inside direct, you cannot manage it, you do not know what retention costs you, and you decide by instinct.

Choose your window and say why

Match the window to how long a decision actually takes in your business. The platform defaults are not an opinion about you: Google Ads defaults to a 30-day click window, Meta to seven days.

The right window is the one that matches how long the decision actually takes in that trade. For a salon or a nail studio I would use 30 days, 60 at the outside: the cycle is short and a touch two months old explains nothing. A roofer or a remodeler is the opposite, because the decision ripens across months and seasons, and a short window quietly credits the wrong channel. Emergency work sits at the far end again: for appliance repair, garage doors or a burst pipe the useful window is days, since the customer takes whoever answers first. Longer is not automatically safer either — a conversion 60 days after a click has had a dozen other influences in between.

A window is a claim about your customers. Make it deliberately and be able to defend it.

A stack of customer records stamped UNKNOWN while the same faces appear on older complete records underneath

Who earned the return: the ad or the service?

There is no clean answer, and looking for one usually starts an argument between departments.

However good the last job was, whether that was the haircut, the roof or the repair, without an offer that customer would not have come back this week. And no offer brings back somebody who left unhappy. It is shared.

The practical resolution is not to decide. It is to record both: the customer's first source, and the paid touch that reactivated them now. One number shared between two causes is always somebody's injustice and usually somebody's wrong decision.

One person, three channels

They called, then wrote on Instagram, then booked from their partner's phone. Three trails, one person.

This is not solved by clever matching. It is solved by hierarchy. Borrow the model that corporate systems have used for decades: a company sits above its employees, and every employee belongs to the company. Put a customer entity above their contact points. Phone, email, messenger handle, till profile — all of them hang off one person rather than standing as separate leads.

Until that hierarchy exists, every channel counts its own version of the same human being, and your channel totals will always exceed the number of real people.

Keep the joining rule strict: an exact phone or email match links a record. A name match is a review candidate, not a fact. Merging two people because they share a first name does more damage than leaving both unattributed.

Money that arrives outside the system

Cash at the counter, a transfer straight to a technician's or a stylist's personal account, a peer-to-peer payment between regulars. Every one of them is a hole in the reconciliation.

The position is simple: everything gets counted. If money reached the business, you must see it, and it must carry a source. Two rules matter more than the rest — do not double count, and do not lose anything. A payment recorded twice corrupts your numbers as thoroughly as a payment never recorded.

The point is not bookkeeping tidiness. It is being able to say what each dollar of advertising returned. Without that, a conversation about cost per acquisition has no subject.

The error rate you are willing to live with

Here is the honest open question, and I do not have a universal answer.

Perfect attribution costs money and time. Even now, with fast development and integrations whose limits are measured in seconds, a complete picture is work. So every business has to decide what error rate it can afford.

People start caring about this in one of three situations: margins stopped forgiving mistakes, competition got harder, or there is finally money to build the process properly.

And if you decide that 30% will stay unknown, say it out loud and write it down. "SEO is just brand" sounds like a strategy and is actually a tolerance for error. That is fine — as long as you name it: we spend this much and we do not know what it returns.

What that error rate really costs you is not a reporting inconvenience. Wrong numbers move budget to the wrong channel, starve the one that works, punish the wrong employee, and point your attention at the wrong problem for a quarter. The last one is the expensive part.

If you have none of this yet, start here

Not with channel attribution. With one number for the whole business.

Spent 10,000 on advertising. New customers brought 20,000. Advertising is 50% of revenue from new customers.

That is first-degree business analytics and it is available to anyone with a bank statement and a till. Every business knows its total ad spend. Track that ratio monthly before you attempt anything per channel, because a channel breakdown built on an unreliable total just distributes the error.

Check these six things this week

  1. Find the share of direct and unknown in your source report. Write it down as the size of your debt, not as a fact about customers.
  2. Find where returning customers land. If they land in direct, you do not know what retention costs you.
  3. State your attribution window and your reason for it. Do not leave the platform default unexamined.
  4. Check whether a customer entity sits above your contact records. If each channel counts its own, your channel totals are inflated.
  5. Find the money that arrives outside the system and decide how it enters the books.
  6. Calculate advertising spend against revenue from new customers for last month. One number.

None of this needs new software. All of it needs decisions that are easier to postpone than to make. The reports get less flattering immediately, and become usable for the first time.

Sources: SparkToro, Dark Social Falsely Attributes Significant Percentages of Web Traffic as "Direct" (2023); Google Ads Help, About conversion windows; industry reporting on GA4 direct traffic causes. Market context is general; what is true for one business comes from its own connected systems.