---
title: "Walking the Funnel: Manual Testing Beat a Week of Waiting"
canonical: https://dxdev.com/blog/2026-09-18_walking-the-funnel-beats-telemetry/
datePublished: 2026-09-18
---
New signups had gone bad, and the first thing I typed into a fresh agent session was a request to check whether some unknown bug was killing conversions. That session opened at 5:37 PM. The signup walk that answered the question is logged at 2:18 PM the next afternoon, and it took 7 minutes.

## The wrong turn: asking the data for a bug

The conversion drop was real. Our newest signups on the platform were terrible, and the tempting move was to ask for evidence first. So I asked the agent to hunt for an unknown bug that would explain it. The plan was to look at what the funnel recorded, find the step where people fell off, and work backward.

That plan assumed the failure would show up as an event, something like an error or a 500 or a step with a suspicious cliff. Two of the three things that turned out to be wrong are not events. A landing page that takes about 18 seconds to load on a phone throws no error. The visitor leaves before any of your instrumentation has a reason to fire. The question sat open for roughly 21 hours of wall clock, and it was the wrong instrument for what was broken. What stopped the waiting was giving up on the data and doing the thing a prospect does.

## The walk

I had the agent walk the signup as a prospect, start to finish, on a phone-sized viewport and then on desktop. It logged 7 minutes and three findings:

1. **Mobile landing page load: about 18 seconds.** This is invisible to any check that starts after the page has loaded.
2. **The email field truncates, then rejects.** Paste a long address and the field cuts it off. Then validation rejects the cut version. The prospect gets an error on an address they typed correctly.
3. **Existing customers get told their invite link is expired.** A returning customer who follows a signup or invite link is shown an expiry message instead of being sent to log in. The link is fine. The state check has no branch for "this person already has an account."

Any of these can fail a funnel without leaving a clean trace. The truncated email produces a validation failure that looks like user error. The expired-invite message looks like a legitimate rejection. If you counted them, they would land in the same bucket as ordinary bad input.

## Why the walk found them and the query wouldn't

Each finding lived in the gap between what the system did and what a person experienced. The system did what it was told. The page loaded eventually, the field validated what it received, the invite check returned expired for a link it did not recognize as belonging to a known account. Every component was correct against its own spec. A prospect meets the whole chain at once, and the chain was broken in three places.

Telemetry can tell you where people stopped. It cannot tell you what they saw when they stopped, and I wanted the second thing. I still want the instrumentation, because it will confirm after the fix whether the numbers moved. But I would rather have three concrete defects in hand than a chart that points at a step and shrugs.

## What went into the ticket

The findings went into one ticket with the fix plan attached. It has three items. The load time is a front-end performance job. The email field is a length limit and a validation path that disagree with each other. The expired-invite message needs a branch that checks for an existing account and redirects to login.

The next step on our side is the boring one. We will walk the signup again after each fix lands, on a phone, as a stranger, before we trust any number that says it worked. Twenty-one hours of asking the data got me nothing, and seven minutes of being a prospect got me all three defects.
