FIELD NOTES

Pathway Routing: The On-Site Qualification Trick That 3x'd Our Conversion

Generic CTAs treat every visitor the same. A 4-step pathway router asks one question — startup, SMB, agency, or ops — and routes copy, CTAs, and case studies to match. Here's the data, the template, and the build.

The default CTA on most B2B sites is one button. "Book a demo." It sits there equally for a founder doing $0 in revenue, a 14-truck HVAC owner, an agency reselling AI to 30 clients, and an ops manager at a 200-person logistics co.

That's four wildly different buyers reading the same headline, looking at the same case study, clicking the same form. Conversion suffers because the page is talking to nobody specifically.

We rebuilt our home page around a thing we call PathwayRouter — a 4-option qualification step that flips the entire page's copy, CTAs, and proof points to match the visitor in front of it. Conversion to booked call lifted 3.1x in the 30 days after we shipped it. Here's exactly what it does, the data, and the template you can lift.

The problem with generic CTAs

A landing page averages 8 seconds to communicate fit. In those 8 seconds, the visitor needs to read three things:

  1. Is this for someone like me?
  2. Do they understand my specific problem?
  3. Is the next step low-risk?

A single CTA aimed at "everyone" answers none of those questions cleanly. The headline either over-indexes on one persona (and alienates the other three), or it goes generic ("AI agents for your business") and triggers nobody.

The fix isn't more copy. It's branching copy.

What PathwayRouter does

Top of the page, instead of pushing a CTA, we ask one question: "Which one are you?" Four options:

  • I'm a startup founder (pre-revenue or sub-$50K MRR)
  • I'm an SMB owner (HVAC, real estate, healthcare, restaurant)
  • I'm an agency building for clients
  • I'm in ops at a bigger company

Clicking sets a localStorage flag (tya:pathway) and reloads the page state. The hero copy, social-proof block, CTAs, pricing display, and "next step" all swap to match. The page stays the same physical layout, so it loads fast and indexes cleanly for SEO — but the words inside change.

A tiny banner up top says "You're viewing this through the SMB lane. Reset →" so the visitor always knows what's happening.

The data (30 days, ~12k sessions)

Before PathwayRouter:

  • Home page → book a call conversion: 0.9%
  • Home page → newsletter signup: 1.4%
  • Time on page (median): 38 seconds

After PathwayRouter (same traffic mix, same ad spend):

  • Home page → book a call conversion: 2.8% (3.1x lift)
  • Home page → newsletter signup: 3.6%
  • Time on page (median): 1m 47s

The lift wasn't from more traffic. It was from the same traffic finally seeing copy that matched them.

Notable: ~62% of visitors pick a lane within 4 seconds. The remaining 38% scroll past it. Of those, conversion is unchanged from baseline. So we're not penalizing the no-pick visitors — we're amplifying the pickers.

What changes per lane

Concrete example. Original headline:

AI agents that actually answer your phone.

That's fine. It survives. But here's what each lane sees:

Startup lane:

Ship your first AI agent in 21 days, not 21 weeks. CTA: Start a $0 trial — bring your own keys

SMB lane:

Stop sending customers to voicemail. We build the agent in 21 days. CTA: Book a 30-min build call

Agency lane:

White-label voice agents for your client portfolio. CTA: Join the agency partner program

Ops lane:

Production AI infrastructure your security team will sign off on. CTA: Book a technical scoping call

Same product. Four different first impressions. Each one is talking to exactly one person.

Steal the template. We open-sourced a pathway-routing landing page kit — drop-in React component, copy presets for 6 verticals, localStorage persistence built in.

The build (in plain code)

The whole component is ~80 lines of React + Tailwind. Skeleton:

const LANES = {
  startup: { headline: "Ship your first AI agent in 21 days", cta: "Start a $0 trial" },
  smb:     { headline: "Stop sending customers to voicemail",  cta: "Book a 30-min call" },
  agency:  { headline: "White-label voice agents at scale",    cta: "Join partner program" },
  ops:     { headline: "Production infra your security team will sign", cta: "Book scoping call" },
};

function PathwayRouter() {
  const [lane, setLane] = useState(() =>
    typeof window !== "undefined" ? localStorage.getItem("tya:pathway") : null
  );
  if (lane && LANES[lane]) return <LaneOverlay {...LANES[lane]} />;
  return <ChoiceGrid onPick={(k) => { localStorage.setItem("tya:pathway", k); setLane(k); }} />;
}

That's it. Two pieces of state: which lane (in localStorage), and what to render if no lane is picked. The "reset" button just calls localStorage.removeItem("tya:pathway") and sets state to null.

Three things we got wrong on v1

We didn't get this right out of the gate. Three things broke and what fixed them:

1. Too many lanes. First version had 7 options: startup, SMB, agency, enterprise, government, education, nonprofit. Conversion dropped vs baseline because nobody wanted to read seven choices. We cut to four. Conversion recovered, then climbed.

2. No reset. First version locked the lane on first click. Visitors who picked wrong felt trapped. We added a banner with a one-click reset. Bounce rate dropped 18%.

3. Lane affected pricing display. We tried showing different prices per lane (lower for startup, higher for ops). It backfired — visitors who switched lanes saw price changes and lost trust. We reverted to one price page. Lane now changes copy and CTAs only, not numbers.

Where pathway routing wins (and where it doesn't)

Wins:

  • Multi-persona B2B sites with one product
  • Verticalized SMB tools where the buyer's job title varies wildly
  • Agency / partner programs alongside direct sales

Doesn't help much:

  • Single-persona DTC ecommerce (the buyer's job is "consumer")
  • Pure self-serve PLG (the product itself is the routing)
  • Pages with under 2,000 monthly visitors (you won't see the signal through the noise)

What I'd build next

The natural next move: replace the static lane choice with an inline voice or chat agent that asks the same question conversationally. We're prototyping this on the /start page now. Early data: lane selection rate goes from 62% to ~80% when it's a conversation instead of a button row.

But ship the buttons first. The 3x lift is sitting there waiting.

If you want me to wire pathway routing into your site, start a trial and I'll do the first lane setup myself. Or check the /solutions/sites page for the full landing-page build.


Continue reading

Filed under