Skip to content

RoutingCat

RoutingCat shows each visitor of your website one variant of each place you choose to vary. It learns which variants convert, and for whom, and it measures what routing adds against a control: 10% of visitors who always see your current pages. On your site, whose host runs nothing of RoutingCat’s, it decides in the page: a script that your templates include picks each visitor’s variants before the page shows. A static or server-rendered site deployed on Vercel or behind Cloudflare takes its own docs instead, where the host decides. It is made for founders who work with a coding agent: you say what you want, with as much or as little direction as you like, and your agent does the work.

The loop

  1. Declare. You or your agent write each variant into your templates, beside what that place shows today, which stays its default, and name the page in routingcat.config.json; push stamps the templates.
  2. Deploy and register. Before your usual deploy, npx routingcat push --check checks your templates; right after it, npx routingcat push registers what changed, in your CI or your host’s deploy script, or from your machine once you confirm what goes live. The change is then live within about 2 minutes; new variants reach visitors no other way.
  3. Read. npx routingcat status says what is happening: what was counted, what the model predicts with its range, and the measured gain against the control.
  4. Act. Keep a variant, pause or retire one, or try the next idea. An act is live within about 2 minutes, without a deploy.

Routing is always on: each change is compared from the moment it goes live, and what to keep is a judgment on the evidence, yours or your agent’s. How RoutingCat works explains what happens behind each step.

What your site needs

  • Templates you can edit, on any host. Each page’s <head> includes RoutingCat’s head partial first, and its HTML carries every variant of each slot. npx routingcat init sets up Laravel, Rails, Django, a WordPress theme, Hugo, Jekyll, Eleventy, a site of PHP or HTML pages, and an app that renders in the browser, built with Vite or Create React App.
  • Node.js 22 or later where you run npx routingcat, on your machine, and in your CI or on the server whose deploy script runs it. The command runs at the version your site pins, and nothing of RoutingCat’s joins your project’s dependencies.
  • A way to register production, each time you deploy: a CI that runs on your production branch, on GitHub Actions with no secret to keep, or with a deploy key in any CI; a host’s deploy script, such as Forge’s, with the deploy key; or, without either, a push from your machine that you confirm.
  • A coding agent that reads skills. Setup installs RoutingCat’s skill where Claude Code, Codex, Cursor, Gemini CLI and GitHub Copilot look for one. You can also run every command yourself.
  • A RoutingCat account, created at sign-in during setup. You start on Hobby, at no cost: up to 3 sites, sharing 10,000 visitors a month on routed pages and 10 live variants, with routing starting once a card is on file, nothing charged. See Plans, billing and emails.

The docs

Start here

  • How RoutingCat works: What happens when someone visits a routed page, how routing learns, what the measured gain is, and how sure each number is.

Get started

  • Set up RoutingCat: Install RoutingCat on a site your own templates render, on any host, choose what it counts as a conversion, choose how production registers, deploy, and check that it works.
  • Try your first idea: Try two new headlines on your home page, from the slot markup to the first days of results.

Concepts

  • Pages, variants and versions: How to shape what can change on a page, how pages, slots, variants and versions are named, and what makes a new version.
  • Conversions and visits: What counts as a conversion, how RoutingCat counts in visits and windows, how a conversion finds its visit, and how far to trust each source of events.
  • How routing learns: How routing learns, enough to predict it: a contextual bandit with Thompson sampling, what it learns from, how it explores, how it learns for whom, and what edits and settings change.
  • What the numbers mean: The three kinds of number RoutingCat reports, what the measured gain is, how to read ranges, signal, labels and scorecards, when each figure updates, and what a missing value means.

Guides

  • Build a page: Declare a page in routingcat.config.json, write its slots in your templates, include the head partial, and add the server helpers where your server renders the page.
  • Client-rendered apps: Route an app that renders in the browser, such as a React app built with Vite, with the head partial in its index.html, slots in HTML files its components render, components that wait for the variant RoutingCat picked, and each route change as a view.
  • Change, preview and deploy: Add, refine, remove or bring back variants in your templates, look at them before and after they go live, and register each deploy, in your CI, your host’s deploy script or from your machine.
  • Track conversions: Report sign-ups, purchases and other conversions with identify and track, from your server through the HTTP events API or from the page through RoutingCat’s script, check that each reaches its visit, and record a tracking gap when tracking breaks.
  • Whop: Credit Whop payments and memberships to the visits that led to them by connecting your Whop company, then passing the visitor id in the checkout your server creates.
  • Auth providers: Record each sign-up once, and link visitors to their accounts at every sign-in, from your server or the page, whether your app or an auth provider creates the accounts.
  • PostHog: Put the visitor id and the variants on your PostHog events, take conversions your site already captures in PostHog through a destination, and know who can read the key it holds.
  • Read and explain results: Read status, show, sources and download, and explain each figure to a person plainly, with how sure it is and without claiming more than the evidence supports.
  • Change what’s live: Pause, resume, promote, retire or revert from the command, safely, and keep your code in agreement with what’s live.
  • Routing settings: Change how a slot or the whole site is routed, with each setting’s range and default, in code or with set.
  • Work with your coding agent: How you use RoutingCat through your coding agent, from one precise change to experiments it runs for you, the skill that makes it an expert, the note in AGENTS.md that points it there, and how to run it in a sandbox.
  • Read the dashboard: Read your site’s figures, what routing gains on each page and how each variant does on the dashboard, over 7, 28 or 90 days, all time or the days you pick, turn what you see into a request for your coding agent, and find your Settings, your plan across your sites and each site’s settings.
  • Plans, billing and emails: What Hobby and Pro include and cost for every site you own, the card that starts routing on Hobby, Hobby’s 3 sites and the variants it holds past its 10, what happens past Hobby’s visitors or at Pro’s cap, how you upgrade, manage and cancel in Settings, and which emails RoutingCat sends.

Reference

  • Config and declarations: Every option of your site’s config and of its page, slot and variant declarations, with its type, default and rules.
  • JavaScript API: Every function, component and script your site’s code uses from RoutingCat, with its signature and options.
  • The routingcat command: Every command of npx routingcat, with its arguments, options and output, and the conventions they share: JSON, writes, exit codes, addresses and values.
  • JSON output: What every command prints with –json: the envelope, failures, messages and warnings, the fields of each figure, cursors and the contract’s version.
  • HTTP events API: Send conversions and identity links from any backend: the key, the body, the limits, the answers and when to retry.
  • Messages: Every warning and error RoutingCat shows, by its id: how serious it is, where it shows, what it means and how to fix it.
  • Limits and defaults: Every limit RoutingCat holds a page, a declaration or a setting to, and every default you start with, with its unit.
  • Glossary: Every term the RoutingCat documentation, the command and the dashboard use, in plain words.

Privacy and security

  • What RoutingCat collects: What RoutingCat records about your visitors, by category, and what it never stores: its cookies and browser storage, the requests your site makes, retention, deletion and how the data is used.
  • Access and keys: Who can act on your site, what each key allows, where it lives and how to replace it, what a leaked key would allow, which domains may send browser events, and how the command signs in.

Operate

  • Run it in production: What RoutingCat adds to each page, what visitors see while their browser decides, what happens when RoutingCat can’t be reached, how caches, policies and Cloudflare’s features work with it, and how to upgrade, pause or remove it.
  • Troubleshooting: Find a symptom, its cause and its fix, from a stopped init or a push that registers nothing to conversions that don’t join, then read doctor’s checks one by one.

Next