---
title: "The agent-user funnel starts at the first request"
description: "The agent-user funnel starts at the first request, then auth, the first successful call, and a finished task. Discovery stays on another page."
canonical: "https://www.agentrail.co/blog/agent-user-funnel"
author: "Sidhant Goyal"
published: "2026-11-12T12:10:00Z"
last_updated: "2026-11-13T08:54:10.846Z"
---

# The agent-user funnel starts at the first request

The agent-user funnel starts at the first request, then auth, the first successful call, and a finished task. Discovery stays on another page.

![A white funnel on a dark blue and amber gradient](https://images.ctfassets.net/1htfyfnn1o5y/6vy8poncpVmcYj815nrSrI/3e0422ef3d8726b4bc20b6bd567c000a/6a04753d-bd44-4d20-86c1-838b4de1d5aa.png?w=1600&fm=webp&q=72)

The agent-user funnel starts at the first request an agent makes to your product, not at a search, a citation, or a mention in chat. After that request, the stages are auth, the first successful call, and a finished task.

The path before any request stays on [how agents move from discovery to a finished task](https://www.agentrail.co/blog/how-agents-move-from-discovery-to-a-finished-task).

> **Key Takeaways**
>
> The funnel starts at the first request to your docs, API, SDK, or MCP.
>
> Auth means a credential was presented, or a gate answered a call that needed one.
>
> The first successful call returns a result the task can use.
>
> Finished means the outcome holds. Read the drop between two neighboring stages.

## The first stage is a request to a host you operate

An agent-user funnel is the ordered set of stages a task passes after it has touched your product. The first stage is the first request. A request is a fetch or a call to a host you operate. Count docs, OpenAPI, REST, a package registry you publish, and an MCP endpoint.

Count a browser session only when you can tie it to the agent task. Leave out a prefetch you don't treat as an agent, and a curl pasted into a chat transcript.

Count a task once. Ten fetches of the same quickstart are still one task with a first request. Counting fetches makes a chatty agent look larger than a quiet one. Keep those calls together in [agent journey analytics](https://www.agentrail.co/blog/agent-journey-analytics).

A docs-only task stays in the funnel. An agent that read the quickstart and never called the API has a first request and no later stage. That drop is real. Ask whether the fetched page said how to make the next call, and fix that page.

## Auth is a credential or a gate

A task reaches auth when a call presents a credential, or when a gate responds to a call that required one. A presented credential is a header, a signing input, or an MCP auth step that carried a key or token the agent intended as yours. Count the stage when that credential shows up, including when you reject the key.

A gate is a challenge your system returned. Count a 401, a 403 that is not yet a named scope problem, a login document, or a bot check. Reaching the gate puts the task in this stage. If you only count tasks whose keys you accepted, the tasks stuck on the gate disappear from the drop you need to see.

A 200 that returns a login page stays in auth. The status said success and the body asked a person to sign in. A redirect to an accounts host the agent cannot finish stays in auth too.

Open one task in the drop when you need the body of the refusal. A task can reach auth and stop there. That gap sits between auth and the first successful call. Keep the count of tasks that presented a credential and never got a usable response.

## The first successful call returns something the task can use

A first successful call is the earliest response in the task that was allowed and that returned a result the task could use. Allowed means you did not refuse it as unauthorized. Usable means the body identified a real result: an object, a list, a created id, or a document that contains the fact the call asked for.

Hold the stage back for an HTTP 200 HTML login or error page, or for a body that says the path does not exist. Hold it back when a success omits the id the next call needs. A docs page already counted as the first request stays a request if a later call still had to pass a gate.

A read can be the first success, and so can a create. Keep a single success stage for both.

A 200 from public docs counts as the first request. Count it as the first success only when the task required that page and no later call stood behind a gate. If auth then failed, mark first request and auth, and leave first success empty. Use that rule on every tile. Counting every 200 moves the drop from week to week without a product change.

## Finished means the outcome holds

A finished task is a task whose outcome holds. A call can succeed while the task is still unfinished. A customer object can exist while the charge the user asked for does not. A file can upload while the job the agent was given is still queued.

The rule for that outcome is [agent task completion rate](https://www.agentrail.co/blog/agent-task-completion-rate). If you don't have a rule yet, leave the finished stage empty. An empty stage is safer than a stage that means any 200.

Tasks with a first success and no finished outcome are the drop between those stages. Open them before you open a raw error rate. An error rate mixes tasks that never authenticated with tasks that failed the last check. Neighboring stages keep those apart.

A finished task still belongs in the earlier stages. It had a first request, it may have passed auth, and it had a usable call. Leave it in the top of the funnel. The top is tasks that requested you. The bottom is tasks that finished. When tasks that start also finish, leave that flat shape in place.

## Read the drop between two neighboring stages

Compare neighbors only: first request to auth, auth to first success, and first success to finished. One jump from the first request to finished hides the stall. The repair differs in each gap.

| Drop | What you are looking at |
| --- | --- |
| Request, then no auth | The task never presented a credential and never hit a gate, or it stopped on public pages |
| Auth, then no usable call | A credential or a gate was in play, and nothing usable came back |
| Usable call, then unfinished | A real result came back, and the outcome rule still failed |

Report live tasks in these four counts. Report scripted runs beside the funnel, with their own denominator.

When a gap is large, open one task in it and name the call where it stalled. The edit to that call is [agent experience optimization](https://www.agentrail.co/blog/agent-experience-optimization). Change that response, rerun the same task, and see whether the next stage's count moves.
