A campaign runs, the links go out, and the analytics report says the visits came from "direct." Nobody typed the address by hand; nobody bookmarked the page. The campaign clearly sent the traffic, yet the report credits no campaign at all. This is one of the most confusing reports in marketing, and it usually has a small, findable cause: somewhere between the link and the report, the labelling broke.

UTM Campaign Builder builds tagged URLs with correct encoding and warns about the case and spacing mistakes that cause this kind of mystery. This post traces the usual culprits, in the order worth checking them, so a "direct" report becomes a diagnosis instead of a shrug.

First, understand what "direct" actually means

In most analytics tools, "direct" is a bucket for visits with no identifiable referrer and no campaign parameters. That includes genuine direct visits — someone typing an address or using a bookmark — but it also includes every visit whose labelling was lost along the way. The bucket is a remainder category, not a verdict. When a campaign's traffic lands there, the question is not "why did nobody click?" but "where did the tags go?"

That reframing matters, because it changes the investigation. Instead of doubting the campaign, you inspect the link, the journey, and the reporting — three places where tags can disappear.

The most common cause is also the most embarrassing: the link that went out was not the tagged link. Someone copied the clean page address instead of the tagged version into a post, or a social platform's link shortener or editor stripped the parameters, or a printed link was typed by hand without the tags. In each case, visitors arrived at the right page with no labelling, and the report correctly — if unhelpfully — called it direct.

The fix is procedural: build the tagged link in the builder, copy it from the builder's output rather than retyping it, and check the published link by clicking it and confirming the parameters survive to the landing page. A link that looks right in a draft but loses its tags when published is a publishing problem, and it is worth catching on one post before it repeats across fifty.

Culprit 2: one character broke the encoding

UTM values must be correctly encoded in a URL. A space, an ampersand, or a special character in a campaign name can break the parameter string if it is not encoded — an unencoded ampersand, for example, is read as the start of a new parameter, so everything after it is misinterpreted. The campaign name may still look fine in the link text, while the analytics tool reads a truncated or garbled value and files the visit elsewhere, or nowhere.

This is why hand-building UTM links in a text editor is risky, and why the builder's encoding and its warnings about spaces and case exist. The convention from the companion post — lowercase, hyphens instead of spaces — also helps here: a campaign name with no spaces and no special characters has almost nothing to encode incorrectly. If a campaign name must contain an unusual character, let the builder encode it rather than guessing at the encoding yourself.

Culprit 3: the journey stripped the tags

Even a perfect link can lose its tags on the way. Redirects are a frequent cause: if a tagged link redirects through a shortener or an old address, and the redirect drops the query string, the visitor arrives untagged. Some email clients and messaging apps also rewrite or wrap links, and a wrapped link that does not preserve parameters has the same effect. A further case is the move from a tagged page to another page on the site: UTM parameters describe the arrival, not the whole session, so if the reporting setup only credits the landing page and the visitor's conversion happens pages later without that context, the campaign's contribution can look smaller than it was.

Checking the journey means following the link as a visitor would: click the published link, watch for redirects, and confirm the parameters are still present on the final landing page. If they vanish at a redirect, the redirect — not the link — is the thing to fix.

Worked example: a fictional launch that "failed"

A fictional small business, Example Candle Co, launches a new product with an email campaign. The email goes to 2,000 subscribers, the landing page sees a clear spike in visits, but the analytics report credits almost everything to direct traffic, and the campaign looks like a failure.

Working through the checks in order, the team first inspects the published email and finds the links are correct — the tagged URLs are present and properly encoded. Next they click a link as a subscriber would, and discover the problem: the tagged link points to an old product address that redirects to the new page, and the redirect drops the query string. Every visitor arrived at the right page, untagged. The campaign had worked; the reporting had not.

The fix is to point the tagged links directly at the final landing page, or to fix the redirect so it preserves parameters, and to re-check by clicking through again. The team also notes the lesson for next time: a tagged link should be tested end-to-end, through every redirect, before the campaign sends — not after the report disappoints. Re-running the same campaign with fixed links shows the traffic under the campaign name, where it belonged all along.

Honest limitations

UTM tags only label traffic; they do not create it, and they cannot recover attribution that was lost before the fix. Visits that already arrived untagged will stay in the direct bucket; fixing the link improves future reporting, not past reports. Tags also depend on the analytics tool reading them correctly, on the visitor's browser and privacy settings, and on the journey preserving parameters — all of which are outside any builder's control. A builder can produce a correct, consistent link; it cannot guarantee how every platform, redirect, and browser treats that link afterwards. That is why the end-to-end click test matters more than any single setting.

For pricing the offer behind a campaign, see the Pricing and Break-Even Simulator, and for turning campaign data into a visual summary, Chart Builder can chart a cleaned CSV of results. The background guide is UTM parameters explained.

FAQs

Why is my campaign traffic showing as direct?

Usually because the tags never reached the analytics tool: the published link was untagged, a character broke the encoding, or a redirect or link wrapper stripped the parameters. Check the published link first, then click through it end-to-end.

Can a redirect remove UTM parameters?

Yes. If a redirect does not preserve the query string, visitors arrive at the final page without their tags and report as direct. Point tagged links at the final page, or fix the redirect to carry parameters through.

Do UTM tags guarantee my campaign will be tracked?

No. Tags label traffic that arrives with them intact. Platforms that strip parameters, browsers that block tracking, and journeys that drop the query string can all still break attribution. Tags improve labelling; they do not control the whole journey.

Can I fix past reports that show direct instead of a campaign?

No — visits already recorded without tags stay recorded that way. Fix the link or redirect, test it end-to-end, and future visits will report under the campaign. Add a note to old reports explaining the break.

human review pending client designation