Skip to main content

Smart routing

Send one link to different destinations by device, country, time of day, or an A/B split.

Reviewed 24 Oct 2026Available from the Pro plan

Open LinksIn your workspace. You are asked to log in first if you are not already.

Normally a link has one destination. With routing rules it can choose between several, decided at the moment of the click from what we can tell about the visitor. Rules belong to a link: open a link from the Links list and choose its Routing tab, beside the Details tab that holds the destination the rules override.

Rule typeDecides onClassic use
DevicePhone, tablet, or desktopSend mobile visitors to the App Store and desktop visitors to the web app.
CountryWhich country the visit came fromRegional storefronts, local pricing, language-specific pages.
Time of dayA start and end timeOffice hours to live chat, out of hours to a contact form.

Those three are conditional rules: they ask a question about the visitor and match or they do not. The fourth rule type, an A/B split, works differently: it is a weighted choice rather than a test that passes or fails, it takes no part in the ordering below, and it changes where unmatched clicks end up. A/B splits covers it on its own.

How a destination is chosen

Conditional rules are tried from the top of the list, and the first one that matches decides the destination. Drag to change that order. The dashboard lists them under Match in order, which is the sequence a click walks. Paused rules are skipped entirely; the redirect engine is only ever handed the active ones.

Order is the whole design

A broad rule placed above a narrow one swallows it. If "mobile" sits above "Germany", a visitor in Germany on a phone does not reach the German rule. Put your most specific rules at the top and your catch-alls at the bottom. A rule is marked Never reached when the rules above it already take every visitor it could match, such as the same country twice, and hovering or tapping the badge names the rules that do. Two rules sharing a position that could both match the same click are marked Overlaps. A broad rule above a narrow rule of another kind is not marked, so read the list top to bottom and check it in Test these rules.

When no conditional rule matches, the click does not go straight to the link's ordinary destination. Any active A/B split on the link is considered next, and the ordinary destination is only reached when the link has no split taking traffic. Keep it pointing somewhere sensible all the same: it is what a link with no split falls back to, and what every link resolves to once you pause or remove its rules.

Writing the rules

  • Device: choose Mobile, Desktop, or Tablet.
  • Country: search and select a country by name or code (ISO 3166-1 alpha-2) from the list, such as United States (US), United Kingdom (GB), or Germany (DE).
  • Time of day: a start and an end time, in UTC. Each field shows an approximate local-time equivalent alongside it.
  • A/B split: weighted destinations. Weights are relative, so 50/50 and 1/1 mean the same thing. Each saved split rule shows the share it takes as "% of traffic", and the New rule form previews that share for the rule you are still typing.

Country detection is approximate

It is derived from the network the visit came from, which is right the overwhelming majority of the time and wrong for anyone on a VPN or a corporate network. Use it to serve the right storefront; do not use it to enforce anything that matters legally.

A/B splits

A split sends a proportion of visitors to each destination and lets you compare. Splits sit outside the ordering above: they do not compete by priority, they carry no drag handle, and they are listed in their own A/B split group under the conditional rules. A click reaches them only after every conditional rule has been tried and none matched.

A split replaces the ordinary destination

While a link has an active split rule with a weight above zero, every click that no conditional rule matched is handed to the split instead, and the link's own destination is not reached. Pause or remove the split rules to hand those clicks back to it.
  1. Change one thing between the variants. If the pages differ in three ways, a difference in the results tells you nothing about which one mattered.
  2. Decide up front how long you will run it and do not stop early. Early numbers on small samples are noise, and stopping the moment one variant looks ahead is the most common way to reach a confident wrong answer.
  3. Know which of the two behaviours below your workspace is getting before you read the result. Whether a returning visitor stays on the variant they were first shown depends on a workspace setting, and it changes what the numbers mean.

When the workspace has Audience analytics switched on, a split is sticky per visitor: the choice is computed from the visitor's own first-party cookie together with the link, so the same browser keeps the same variant on that link every time it clicks. The cookie lasts a year, so the identity holds for that long, but it is a browser, not a person: the same reader on a second device, in a private window, or after clearing cookies is a new visitor and is drawn again. The link is part of the calculation on purpose, so a visitor who lands on variant A here is not pinned to the same side of every other split you run.

Without that setting there is no identity to be sticky to, and every click is an independent weighted draw, so someone who opens the link twice can land on both variants, and a comparison you read as "people" is really "clicks". The same fallback applies to any click with no visitor: traffic we classify as a bot, and a visitor whose browser refuses the cookie. Stickiness also has a limit worth knowing before you touch a running experiment: increasing a variant's weight leaves the visitors already assigned to it where they are, but reducing a weight, or adding and removing variants, reshuffles some existing visitors onto a different destination.

Testing, pausing, and removing rules

You do not need a real phone to check what a rule will do. Test these rules, beside the rule list, runs the same resolution the redirect engine runs: pick a Device, a Country, and a Time (UTC), then Run simulation. It reports the destination the click resolves to and which rule matched, or tells you no rule matched and the default destination decided. A rule you are still typing into the New rule form joins the simulation as soon as its destination URL is valid, so you can try it before saving it. A split is a fresh random draw on every run, so repeat runs on the same input can differ. The simulator has no visitor of its own, so it does not take the sticky path a real click can.

Each rule row carries a pause control. A paused rule keeps its settings, its destination, and its place in the order, and the redirect engine ignores it completely, so pausing is how you take a rule out of service without losing how it was built. Paused rules are marked Paused, and still count toward the Rules meter. Select several rows and the toolbar that appears offers Resume, Pause, and Remove for all of them at once.

Rule type cannot be changed later

Editing a rule lets you change its destination and its match (the country, the device, the time window, the weight), but not what kind of rule it is. Turning a country rule into a device rule means removing it and adding a new one.

What your plan allows

Smart routing is a Pro feature, and its cap is counted per link rather than per workspace. Every link carries its own allowance, so adding rules to one link does not use up another link's room.

Smart routing rules / link, by plan
Free Not included · Starter Not included · Pro 20 · Business 50

Paused rules count towards that allowance too: it counts every rule on the link, not only the active ones. If a link is at its cap, remove a rule you no longer need, or split the intent across a second link.

Step by step

Send phone users to the app and everyone else to the website

For: Anyone who can edit links, on Pro or above

Before you start

  • A plan that includes smart routing.
  • An existing link: routing rules attach to a link, they are not a link in themselves.
  • The destinations: your app store listing and your web page.

Steps

  1. Confirm the link's ordinary destination is your website.

    This becomes the default destination for everyone no rule matches, so it must already be the sensible one.

  2. Open the link from Links and choose Routing.

  3. Open New rule and set its type to Device.

  4. Set the device to Mobile and the destination to your app store listing.

  5. If you want tablets treated separately, add a second Device rule for Tablet.

    Tablets are their own category: a mobile rule does not cover them.

  6. Check the rule order.

    Specific rules sit above general ones, and no row is marked Never reached or Overlaps.

  7. In Test these rules, set Device to Mobile and Run simulation.

    It resolves to your app store listing and names the device rule as the match.

  8. Set Device to Desktop and run it again.

    It resolves to your website, the default destination, matched by no rule.

  9. Open the link on a real phone.

    You land on the app store listing.

What you should see

One address you can put everywhere, which sends each visitor to whichever destination suits the thing they are holding.

How to check it worked

  • A real phone reaches the app store listing.
  • A desktop browser reaches the website.
  • The link's analytics show clicks accumulating as normal: routing does not affect counting.

Edge cases

A visitor arrives with an unusual or unrecognised browser.
Every visit is classified as mobile, tablet, or desktop, and anything ShortZen cannot place as a phone or a tablet is treated as desktop. There is no "unknown" outcome, so an odd client, such as a scraper, a preview bot or an obscure browser, matches your Desktop rule. Point that rule somewhere that is safe for a non-human visitor to load.
You have both a device rule and a country rule.
Whichever sits higher in the order wins outright. They do not combine. If you need "mobile in Germany" specifically, that is a single rule's worth of intent that the current rule types cannot express; use separate links.
The link also has an A/B split on it.
The device rule is still tried first. Visitors it does not match are handed to the split rather than to the link's ordinary destination, so the website you set as the default destination is not where desktop visitors land. Which side of the split each of them gets is settled once per visitor while Audience analytics is on, and drawn afresh on every click while it is off.
The link is also password-protected.
The password is asked for first. Routing decides the destination afterwards.

If something goes wrong

A rule is marked Blocked for safety.
The nightly safety check flagged its destination, so visitors skip that rule and go to the next one that matches, or to the link's own destination. Changing the destination clears the block, and the new one is checked when you save. If the site itself is cleaned up, the block lifts on its own at the next nightly check.
Everyone is landing on the default destination.
The rules are not matching. Check the link you attached them to is the one you are testing, that none of the rules you are relying on is marked Paused or Blocked for safety, and that the country you selected in the search field is the one you meant. Run the case through Test these rules to see which rule the engine picks.
Desktop visitors are being sent to the app store.
A rule is broader than you think, or ordered above a rule that should take precedence. Read the list top to bottom as a click would, and look for a Never reached or Overlaps badge on the pair. Neither marks a broad rule above a narrow one of another kind, so run the case through Test these rules.
A rule needs to come off in a hurry.
Pause it rather than deleting it. A paused rule stops affecting clicks immediately and keeps its destination and its place in the order, so you can resume it once you have worked out what went wrong. Delete only when you are sure you will not want it back.
Nobody reaches the link's ordinary destination any more.
Check whether the link has an A/B split rule taking traffic. While one is active, it takes every click no conditional rule matched. Pause the split rules to return those clicks to the ordinary destination.

Try it on a real link

The free plan needs no card and has no time limit.