← All posts

Custom Intents vs Predefined Funnels: Why Generic Analytics Miss the Point

Custom intent detection beats predefined funnels for AI agents. Why open-ended conversations break event tracking and what product analytics for agents should do instead.

If you are running an AI agent and still measuring it with predefined funnels, you are watching the wrong screen. Funnels assume you know what users will do before they do it. With an agent, users type whatever they want, and the most important things they say are the things you never thought to track. Custom intent detection fixes this by reading actual conversations and generating the categories that matter, instead of forcing you to guess them up front.

Why predefined funnels were fine until agents showed up

Traditional product analytics was built for a world of buttons and screens. The user moves through a finite set of choices: signup, onboarding step 1, step 2, activated. You define the events, you string them into a funnel, you watch where people drop. That worked because the surface was closed. There were only so many things a user could click.

An agent blows that up. The interface is a text box. The user can ask for anything. There is no “step 2” because there is no fixed path, just an open conversation that goes wherever the user takes it. As one analytics team put it recently, we have moved from observing clicks to understanding intent and reasoning. The old model studies attrition along a predefined line. Agents do not move along a line.

Here is the trap. You can absolutely bolt your old funnel onto an agent. Fire a conversation_started event, fire a message_sent event, fire a conversation_ended event. Build a funnel. It will report numbers. The numbers will be confidently wrong.

The “activated but actually broken” problem

Amplitude’s agent analytics team described this exact failure mode, and it is the cleanest example I have seen. A user opens your agent, has a two minute conversation, fires a dozen events, and your funnel marks them “activated.” Looks great on the dashboard.

What actually happened: the user asked a real question, the agent hallucinated an answer, and the user quietly decided your product is broken and never came back. Your funnel counted that as a win. Every event fired. The funnel has no idea the agent lied, because the funnel was never looking at what was said. It was counting that something was said.

That gap, between “an event happened” and “the right thing happened,” is where every agent product silently bleeds users.

What custom intent detection actually means

Custom intents are categories generated from your real conversations, not picked from a generic template. Instead of you defining feature_X_clicked, the system reads what users are actually saying and surfaces the patterns: people keep asking for a CSV export you do not have, people keep hitting the same setup step and giving up, people keep asking if you integrate with a tool you do not support yet.

You did not predefine any of those. You could not have. That is the whole point. The valuable behavior in an agent product is the unanticipated behavior, the request you did not build for, the failure you did not expect, the question that reveals a gap in your product.

Predefined funnels can only catch what you already imagined. Custom intents catch what you didn’t.

A concrete walk-through

Say you run a fintech support agent. Your predefined funnel tracks: asked question, got answer, marked resolved. Clean.

Now read the conversations. You find a cluster of users asking “can I dispute a charge from the app” and the agent saying “please call support.” That is not in any funnel you built. But it is a churn risk, a feature request, and a CX failure all at once. Intent detection pulls that cluster out automatically and tells you it happened 340 times last month. The funnel just told you 340 conversations “resolved.”

Predefined funnels vs auto-generated custom intents

DimensionPredefined funnelsAuto-generated custom intents
What you trackEvents you defined in advanceCategories generated from real conversations
Catches the unexpectedNo, only what you imaginedYes, surfaces requests and failures you never anticipated
Reads what was saidNo, counts that something happenedYes, reads the actual content of the turn
Hallucination / wrong answersInvisible, often counted as successSurfaced as a distinct failure cluster
Setup costHigh, you maintain the event taxonomyLow, intents are generated and updated for you
Drift over timeFunnel rots as the product changesIntents regenerate as conversations change
Best forFixed UI with known pathsOpen-ended conversational surfaces

The honest version: funnels are not useless. If you have a hard signup flow with real screens, track it with a funnel. But the moment the surface becomes a conversation, funnels stop describing reality and intents start.

What good product analytics for agents should do

A few things I would refuse to live without if I were running an agent in production again.

  • Cluster conversations by intent, automatically. You should not be hand labeling. The system reads transcripts and groups what people are actually trying to do.
  • Separate “happened” from “succeeded.” Containment rate, intent resolution, and whether the agent actually answered correctly are different numbers. Track them separately.
  • Track the unanticipated as a first class thing. New intents should appear on their own when a new pattern emerges, not when you remember to add an event.
  • Tie intents to outcomes. A spike in “asking about a feature we dont have” should connect to churn, not sit in a vacuum.
  • Update as the product moves. Your conversations in three months will not look like today’s. The intent set has to drift with them or it rots like an old funnel.

This is the part of the stack we built Agnost AI for. It connects to your agent, reads every conversation, and auto-generates custom intents for your product (bug reports, feature requests, churn risk, setup friction, and more), then tracks them live so you can see why users stall or wont upgrade. It is infrastructure for self-improving agents, not another funnel builder.

The bit most teams skip: closing the loop

Detecting intents is half the job. The other half is doing something about them. If your tooling tells you “340 users hit setup friction on step 3” and then stops, you still have to go diagnose the prompt, figure out the fix, and ship it.

The reason we go further than detection is that the fix usually lives in the same place every time: the system prompt, the agent harness, the config. So Agnost opens pull requests against those, you review the diff, and you merge what you agree with. The detection and the correction live in one loop instead of a dashboard you screenshot and a Jira ticket you forget.

Where this is heading

The teams I talk to are realizing that for agent products, the conversation IS the analytics surface. You do not need to instrument a hundred events anymore. You need to read what users said and understand what they meant. Generic analytics vendors are racing to bolt “agent analytics” onto funnel-shaped products, and most of it is still counting events with a new label on top.

The real shift in 2026 is from “what did the user click” to “what did the user want, and did they get it.” Funnels cannot answer the second question. They were never built to.

FAQ

Is custom intent detection just topic clustering with a fancier name? No. Topic clustering tells you what conversations are about. Intent detection tells you what users were trying to accomplish and whether they succeeded, including product-specific categories like churn risk, feature requests, and setup friction that a generic topic model has no concept of.

Do I have to throw out my existing funnels? No. Keep funnels for the parts of your product that are still fixed screens and known paths, like a billing flow. Use custom intents for the conversational surface where users can say anything. They answer different questions.

How much setup does intent detection take versus building funnels? Far less. The whole appeal is that you stop maintaining an event taxonomy by hand. With Agnost it is a 3 line SDK or OpenTelemetry, roughly two minutes, and intents are generated from your real conversations instead of defined by you in advance.

Funnels made sense when your product was a set of buttons. Your agent is a conversation, and the things that decide whether users stay are the things they say that you never thought to track. Agnost AI reads those conversations, turns them into custom intents, and opens PRs to fix what it finds, so the loop actually closes.