Anatomy of a Dead Funnel: Clicks That Never Pay
How to tell bot traffic from a broken funnel: what click geography, timing and the deposit gap reveal, with illustrative figures you can run against your own.

A dead funnel is the hardest failure in affiliate marketing to notice, because every dashboard reporting on it says you are winning. The click log fills up. The affiliate platform shows traffic against your account. Month after month the registrations stay at zero, and nothing on any screen looks broken.
The diagnosis below is the order to run it in. This is the order we would run it in again, with the tests that separate the four possible causes: a broken link, broken tracking, non-human traffic, and traffic that is human but can never register. The numbers in the tables below are illustrative — they show the shape of the problem, they are not our own results.
The shape of a dead funnel
A funnel is dead when every stage up to the operator's registration form works and no stage after it does. Say a site takes 10,000 visits a month. Two sites with identical visit counts can look like this:
| Stage | Healthy site (illustrative) | Dead funnel (illustrative) |
|---|---|---|
| Monthly visits | 10,000 | 10,000 |
| Outbound clicks to operators | 400 (4% of visits) | 1,800 (18% of visits) |
| Registrations | 12 (3% of clicks) | 0 |
| First deposits | 5 | 0 |
| Revenue at an illustrative EUR 80 per depositor | EUR 400 | EUR 0 |
The row that gives it away is not the zero at the bottom. It is the second row. Four percent of visitors clicking an outbound link is plausible for a comparison page with a clear call to action. Eighteen percent is not a great page; it is almost always a client that clicks everything it can reach, including links a person would never press. When your click-through rate is the best number in your reporting and your conversion rate is the worst, treat the good number as the suspect.
That ratio, not the missing signups, is usually the first honest signal — and a high click rate is easy to read as evidence that the pages work when it is nothing of the kind.
Step one: are the links even working
Before any theory about traffic quality, prove the mechanical path end to end. This step feels too obvious to run, and it finds real defects more often than any other.
- Open every outbound redirect yourself, from an ordinary browser, and confirm it lands on the operator's page with the tracking parameters still attached.
- Check the final URL, not the first hop. A chain that drops a query string in the middle still ends on a page that looks perfectly normal.
- Confirm your account status with the program. A paused or pending account often still serves a landing page, and the click is simply never credited.
- Test on a phone, on mobile data. Desktop-only testing hides app-deeplink and consent-wall behaviour.
- Repeat the test from the country your readers are in, not from wherever you happen to be sitting.
That last point is the one that costs the most time. A geo-aware redirect that reads the wrong country signal first will send a large share of visitors to the wrong destination, and the click log will look perfectly healthy while it happens. Every manual test from our own desk passed. The guide to tracking links and postbacks sets out what should be travelling inside a link before you audit yours.
Step two: is the tracking recording what you think
The link test asks whether the reader arrives. Tracking asks whether that arrival can ever be tied back to the page that produced it. Three failures are common, and all three look identical from the outside.
- No identifier travels. The click is logged on your side, but no subID or click ID reaches the operator. You are credited at account level and never learn which page earned it, so you cannot repeat what worked.
- You store counts instead of rows. This was our own mistake for a long stretch: the system incremented a per-link counter rather than writing one row per click with country, timestamp and user agent. The evidence that eventually explained everything was never in the database, so the question was unanswerable rather than unanswered.
- The attribution window is shorter than the reader's decision. A 30-day cookie duration against a reader who compares for six weeks produces a conversion that is real and uncredited; under last-click attribution, somebody else's link takes it.
Fix the recording before you interpret anything. Reading an incomplete log is how a measurement problem gets rewritten as a content problem.
Step three: is the traffic human
Automated traffic is a normal condition of the open web, not an exotic misfortune. Google publishes the list of its own crawlers and a reverse-DNS method for verifying a request that claims to be Googlebot, and Search Console's crawl stats report shows how much of your own traffic is Google fetching pages rather than people reading them. Measure your own share rather than trusting a percentage quoted in a blog post, including this one.
Signals worth checking, cheapest first:
- A click-through rate well outside the plausible band for that page type.
- Clicks arriving in tight bursts, several inside the same second.
- Sessions with no scroll depth and near-zero time on page before the outbound click.
- Requests concentrated in a handful of hosting networks, or one user-agent string dominating the log.
- Clicks on every outbound link on a page, including the disclosure and the terms link. People do not do that. Scanners do.
The geography test that gives it away
The cheapest test of all is where the clicks come from, set against the language the site is written in. An illustrative distribution for a Swedish-language site:
| Origin | Share of outbound clicks (illustrative) | Could that reader register? |
|---|---|---|
| Sweden | 22% | Yes |
| United States | 31% | No — the operator holds no licence for that reader, and the site is not in their language |
| Vietnam and Singapore | 25% | No |
| Everywhere else | 22% | Mixed |
Bot traffic shows up precisely as this kind of geo mismatch: a large share of outbound clicks arriving from countries where the operator does not accept players and where nobody reads the site's language. That is not a conversion problem to be solved with better copy — those clicks could never convert. Once you can see the distribution, the funnel stops being mysterious and becomes arithmetic.
Step four: is the traffic in a market the operator accepts
Human traffic dies here too, and this failure is the one most often mistaken for bots. Gambling operators are licensed country by country: an operator that welcomes a player in one market blocks the same person in another. Verify against the regulator's own register, not the operator's marketing page — the Gambling Commission public register for Great Britain and Spelinspektionen for Sweden both publish who actually holds a licence.
Two consequences follow. If a meaningful share of your readers sit outside the licensed market, route them to a program that accepts them or show no link at all — a dead link teaches the reader that your recommendations do not work. And many programs issue a different tracking link per country: point a reader at the wrong country's landing page and the operator may forward them somewhere your tracking no longer applies. The program directory lists the markets each program covers.
What fixing it does, and what it does not
We changed three things: one stored row per click with country and user agent instead of a counter; a corrected country resolution, so a click resolves against the reader's real country signal; and no links at all for markets where the operator cannot accept the reader.
The reporting became honest. The conversion rate did not improve, because the audience was still the same audience. That is the uncomfortable lesson: repairing measurement does not create demand. It stops you paying for a story about demand you do not have.
The diagnostic order, as a checklist you can run
- Click every outbound link yourself, on mobile, from the target country, and check the final URL.
- Confirm your account is active and the link you publish is the current one.
- Verify an identifier travels with the click and the program can see it.
- Switch your click log from counts to rows: timestamp, country, user agent, referring page, destination.
- Wait a week, then read the click-through rate. If it is implausibly high, suspect the traffic before the funnel.
- Break the clicks down by country and compare with your site's language and your programs' licensed markets.
- Break them down by network and user agent, and look for concentration.
- Remove or reroute links for readers who cannot register, then re-measure the clean traffic on its own.
- Model what that clean traffic should produce with the traffic to revenue estimator, and compare the model against what actually arrives.
Step nine closes the loop. If clean traffic produces roughly what the model predicts, the funnel is alive and simply small. If it produces far less, the conversion problem is real.
What we still do not know
We cannot separate a well-behaved crawler from a curious human by IP address alone, and we do not pretend to. We do not know how much residual traffic came from scraped directory listings rather than search. And a site cannot know its true conversion rate until it has enough clean, human, in-market traffic to measure one — which is itself the first thing to fix. Whatever number you land on, record the date you measured it, because it is only true of the traffic you had that month.
Gambling content is for adults only, 18+. Every operator we work with must hold a licence in the market where the reader sits. If gambling has stopped being entertainment for you, contact your national support service.
