Skip to content

Upgrade to 1.1

routingcat 1.1.0 lets a variant show only to some visitors, groups your traffic into dimensions of your own, starts routing from your expectations, and optimizes for what a visit is worth. This guide moves your site to it, says what to do once it is deployed and what changes by itself, and points to each feature’s page.

Upgrade

Nothing in your code needs to change: what you declared keeps its variants, settings and history. Once every deployment runs 1.1.0, routing also compares variants among comparable visits, as What changes by itself says.

  1. Run npx routingcat@latest upgrade. It sets 1.1.0 as routingcat in routingcat.config.json, brings the skill up to date, and shows what changed since your version. Name that version in your CI’s steps where they name one.
  2. Run npx routingcat push, which writes the partial 1.1.0 makes, and commit what it changes. Where your Content Security Policy allows the core by its hash rather than by nonce, add the new core’s hash, which doctor names.
  3. Deploy, and register the deploy, as Run it in production says.

Skip none of them: a deployment left on 1.0.x keeps every condition held back, as the next section says.

Then deploy every deployment

Conditions need 1.1.0 in the code that decides each visit, so they hold once every deployment of your site that built, started or recorded visits in the last 72 hours runs it. Previews count too: a preview deployment still on an older version, which someone opens, keeps them waiting. Until then:

  • A variant with a condition is held back, shown to no visitor, so a rule never shows outside its condition. plan and the deploy name each one, and status and show read held back until your deployments run a routingcat that honors conditions.
  • A slot’s only shows its default to everyone, and personalizing by a dimension waits.
  • The ad network, your own dimensions, the comparison among comparable visits and the split of paid traffic, below, wait too.

So deploy production first, then each preview branch still in use, before you declare a condition you rely on. Once the last older deployment stops counting, what waited goes live with routing’s next update: within a day, or within about 2 minutes of a deploy or an act.

What changes by itself

  • Routing compares like with like, once every deployment runs 1.1.0: each slot that learns for whom adjusts for the campaigns that bring the most visits, each visit’s ad network and each dimension you declare, so that a variant live during a burst from a strong campaign isn’t credited with its visitors. A slot with personalization off adjusts only for what a condition on its page names. Variants’ predicted rates and differences from the default can then move at routing’s next update, and routing moves with them: see How routing learns.
  • Each visit’s ad network becomes a dimension, once every deployment runs 1.1.0: meta, google, microsoft, tiktok, linkedin, pinterest, other or none, from the ad’s click identifier or a link tagged paid. show --by ad_network and download --by ad_network break results down by it, and conditions can name it. Meta adds its click identifier to unpaid clicks too, so give your Meta ads’ links a Meta source and a paid medium, as utm_source=facebook&utm_medium=paid_social, for their visits to count as meta: with a paid medium but no Meta source, they count as other.
  • sources splits paid traffic, once every deployment runs 1.1.0: paid_search for Google’s and Microsoft’s ads; paid_social for Meta’s, TikTok’s, LinkedIn’s and Pinterest’s, and for a link tagged paid whose source is a social network, such as utm_source=reddit&utm_medium=paid; and paid for other paid traffic. Code that reads the channel from --json or a download meets the two new values.

On a page with no condition and no value, that comparison is what changes, in its slots that learn for whom.

What each new feature lets you do

Feature What it lets you do Read
Conditions Show a variant only to some visitors, or never to some, declared in code or set with npx routingcat set --only and --never Show a variant only to some visitors
Your own dimensions Group your campaigns, ads and sources into levels that conditions name and results break down by, listed by npx routingcat dimensions Declare your own dimensions
Audiences Name a condition once and reuse it, listed by npx routingcat audiences Name an audience
Expectations Start routing from where you expect a variant to do better, and let the evidence correct it Expect a variant to do better for some visitors
Personalize by Let a slot learn which variant works for each of your campaigns, or each ad network Personalize by your own dimension
A value Optimize for what a visit is worth, revenue, a margin, a lifetime value or points, rather than for conversions alone, and read the measured value gain Optimize for what a visit is worth

Your coding agent’s skill knows each of them: ask it in your own words, as “show the sticky bar only on mobile”. It asks whether you mean a rule or an expectation before it writes either.

Next

RoutingCat routes each visitor of your site to the variants that convert.