# Everything says Direct

Direct means this visit carried no signal about where it came from. Almost always the signal was lost on the way rather than never existing — and there are five specific places that lose it.

## First: is it Direct, or `Unassigned`?

Do not treat these as the same thing; they are two completely different faults.

| What you see | What it means | Where it is fixed |
| --- | --- | --- |
| Direct, with source `(direct)` and medium `(none)` | AdPix decided this visit carried no attribution signal and deliberately wrote that tuple | This page |
| `Unassigned` | There is a source and medium, but no channel rule matched them | [How each visit's channel is decided](analytics/marketing/channel-mapping) |

If the source column is not empty but the channel is `Unassigned`, your problem is not collection; it is the channel definitions.

## The one-minute test

Before any analysis, generate a campaign visit yourself and see how it is recorded.

1. Open **Realtime overview** and set the window to 5 minutes.
2. In a clean browser, open exactly the link that is published in the ad or the newsletter — copied from the ad itself, not from your notes.
3. After the page loads, look at the browser's address bar. Are the `utm_*` parameters still there?
4. In the console, check the **Active users by source** card.

Three possible outcomes, each with a different path:

- **The address bar has the parameters and the card shows the right source.** Collection is healthy; the problem is probably with that user's *later* visits — go to the consent section.
- **The address bar has lost the parameters.** A redirect ate them. Read the second section.
- **The parameters are there but the card shows (direct).** The event is not being sent, or is arriving late; start with [No data is arriving](analytics/troubleshooting/no-data-arriving).

## The order to check in

| # | Check | Symptom |
| --- | --- | --- |
| 1 | Do the links carry any signal at all? | Social and newsletter traffic is Direct as a block |
| 2 | Is a redirect eating the query string? | The address bar has no parameters after the load |
| 3 | Was the marketing category declined? | The landing page is recorded correctly, later pages are Direct |
| 4 | Is your second domain missing from the list? | Your own domain sits at the top of the referrer list |
| 5 | A gateway outside the built-in list? | Converting sessions are all bunched under one referrer |

## 1. The links carry no signal

AdPix reads attribution signal from the **landing URL** and the **referrer**. From the URL it reads:

- the five parameters `utm_source`, `utm_medium`, `utm_campaign`, `utm_content` and `utm_term`;
- and the click IDs `gclid`, `wbraid`, `gbraid`, `fbclid`, `msclkid`, `ttclid` and `li_fat_id`.

The precedence is fixed: **click ID, then the UTM medium, then the referrer, and if none of the three is present, Direct.** So an ad link carrying `gclid` resolves to Paid Search even with no UTMs at all.

The usual places an untagged link gets published:

- **Newsletters and email.** Most email tools do not add UTMs unless you switch it on. An untagged email is almost always Direct, because mail clients send no referrer either.
- **Messaging apps.** A link sent through Telegram or WhatsApp has no referrer. Without UTMs it is Direct.
- **Social bios and QR codes.** Same story.
- **Ads whose final URL was typed by hand.** One campaign out of ten is untagged, and that one lands in Direct.

> **Get tagging right once**
>
> Every link that comes into the site from outside and has money behind it needs at least `utm_source` and `utm_medium`. It is the only item on this list AdPix cannot do for you.

## 2. A redirect eats the query string

This is the most common technical cause, and it leaves no trace of itself.

The tracker reads the parameters at the moment it runs on the page — that is, **after** every redirect. If anything in that chain drops the query string, the tracker has nothing to read and the visit is correctly recorded as Direct. The defect is not in AdPix; it is in the chain.

Where it happens:

- an `http` to `https` redirect that carries only the path;
- a `www` to non-`www` redirect (or the reverse) with the same mistake;
- a trailing slash added or removed by the web server;
- a redirect to the canonical URL by an SEO plugin;
- link shorteners and ad-network tracking links that resolve to a fixed URL;
- a landing page that immediately forwards the visitor somewhere else.

**How to check:** open the ad link in a fresh tab and read the address bar once the page settles. If the `utm_*` parameters are gone, you have your culprit. To see the exact chain, open the network tab in developer tools with "preserve log" on and follow the 301 and 302 responses.

**The fix:** write the redirects so they preserve the query string, or publish the ad link pointing straight at the final URL — right protocol, right domain form, right trailing slash — so no redirect happens at all.

## 3. The marketing category was declined

With the consent banner on, the attribution cookies fall under the **marketing** category, not statistics. So a visitor who accepts statistics and declines marketing still sends events, but `__sov_ft` and `__sov_lt` are never written.

The symptom is specific: **the landing page is recorded correctly and the later pages of that same visit turn Direct** — because the parameters were only on the first page's URL and nothing carries them forward.

There is a backstop here worth knowing about: alongside the cookies, each visitor's first and last touch is also stored durably **on the server**. When an event arrives with no signal at all, that stored copy is restored and the campaign is not lost. So declining marketing does not, on its own, kill attribution.

What you do lose is resilience: the durable copy is tied to the visitor ID, so clearing browser storage or moving to another browser starts the history from scratch. The category details are in [Consent enforcement in the tracker](analytics/privacy/consent-categories-and-gating).

## 4. A referral from your own domain

Movement between **subdomains of one domain** is recognised and demoted automatically; you do not have to do anything. A domain with a different registrable root — a shop on one domain and checkout on another — is not.

The symptom takes two forms, and you should check for both:

- **Your own domain sits at the top of the referrer list.** The second domain is missing from the stream's domain list, so every internal hop is counted as a fresh acquisition.
- **The second domain is full of Direct traffic.** The domain is on the list and the hop is demoted correctly, but the visitor is a brand-new person on the second domain with no history for a campaign to be restored from.

The second form is what the cross-domain linker solves: the visitor ID travels with the click so both domains see one person. Both settings live under **Admin → Data streams → Configure your domains**, and the full path is in [Cross-domain and subdomain measurement](analytics/collect/cross-domain-and-subdomain).

## 5. The payment-gateway return

When a customer pays, the gateway redirects them back to your site and the browser reports that return as a referral from the gateway's domain. Left alone, the session that **converts** is filed under the bank's name and the ad channel looks unprofitable.

AdPix corrects this at collection time:

1. The payment-gateway referral is **demoted** — exactly like a referral from your own domain, because it is a return leg, not an acquisition.
2. Then that visitor's durable last touch is restored, so the session is not left with no campaign at all.

The built-in list covers the Shaparak switch, domestic gateways and the global processors, and it matches all of their subdomains.

> **Gateways outside the built-in list**
>
> If you use a local gateway, a payment intermediary or a bank authentication page that is not on the built-in list, its host has to be added to the property's own exclusion list. Until it is, every conversion is credited to that host. There is no console screen for this yet — the list is API-only and gated on the Fraud Protection feature, so on a Free property it is a support request. The endpoints and the confirmation test are in [Referral exclusions](analytics/fraud/referral-exclusions).

## Traffic that really is direct

After all of that, some of your Direct traffic really is direct and has no fix:

- typed addresses and bookmarks — a large share of it is a sign of brand health;
- a link opened from a desktop application, a PDF or a document;
- mail clients that send no referrer;
- a hop from `https` to `http`, where the browser strips the referrer;
- a strict referrer policy on the originating site.

So the goal is not to drive Direct to zero. The goal is that **no channel you are paying for is hiding inside Direct** — and the test at the top of this page measures exactly that.

## After the fix

Attribution in AdPix is computed at **read** time, but what is stored is the source and medium as they were at collection. So tagging your links today does not repair yesterday's visits: historical rows stay as they are. Set the report range to start from the date of the fix and compare from there.

Track the effect in [Traffic acquisition](analytics/reports/traffic-acquisition) rather than the acquisition overview — that report is session-scoped and shows the change sooner.

## Frequently asked questions

### What is the difference between Direct and `Unassigned`?

Direct means AdPix decided this visit has no attribution and deliberately wrote the `(direct)/(none)` tuple. `Unassigned` means there is a source and medium but no channel rule matched them. The first is a collection problem, the second a channel-definition problem.

### Does the payment gateway still steal credit for sales?

No. A return from a known payment gateway — the Shaparak switch, domestic gateways and global processors — is demoted at collection time and the visitor's real last touch is restored. A gateway that is not on the built-in list has to be added to the property's own exclusion list, which is API-only today and gated on Fraud Protection.

### If a visitor declines the marketing category, do I lose attribution entirely?

Not entirely. The `__sov_ft` and `__sov_lt` cookies are not written, but AdPix also keeps a durable server-side copy of each visitor's first and last touch and restores it when an event arrives with no signal. What you lose is resilience — to cleared browser storage and to a switch of browser.

### What share of Direct traffic is normal?

It depends on the business; a brand people type into the address bar earns a large Direct share legitimately. What is not normal is a campaign you are paying for right now being invisible in the report. The one-minute test at the top of this page answers exactly that.

## Related

- [How a visit's channel is decided](https://docs.adpix.io/en/analytics/marketing/channel-mapping/)
- [Referral exclusions: your own domains and the payment gateway](https://docs.adpix.io/en/analytics/fraud/referral-exclusions/)
- [Traffic acquisition](https://docs.adpix.io/en/analytics/reports/traffic-acquisition/)
- [Cross-domain and subdomain measurement](https://docs.adpix.io/en/analytics/collect/cross-domain-and-subdomain/)

---

[Docs](https://docs.adpix.io/en/analytics/troubleshooting/everything-says-direct/) · AdPix
