Product

Routing: one code, many destinations

Every scan is routed at the edge, before any redirect happens. There are two ways to write the logic · the visual flow canvas in the dashboard, or the JSON rules object over the API · and one set of gates that runs before either.

Order of evaluation

Every scan walks the same corridor, in this order:

blocked / paused? expiry geo gate password scan cap flow / rules destination

The gates (expiry, geo gate, password, cap) exist to refuse a scan; routing exists to pick where an accepted scan goes. Anything unmatched falls through to the link's main URL · routing can never strand a scanner.

The flow canvas

A flow is a node graph: a start node, condition nodes that branch, destination nodes that end. You drag it together in the dashboard, watch the simulator walk a pretend scan through it, and publish. Up to 50 nodes and 20 branches per condition · which in practice is a wall of logic no rules object stays readable at.

ConditionRoutes onBranches
deviceThe scanning deviceiOS · Android · desktop (opt-in) · else
geoCountry, read at the edgeyour country groups · else
regionState or region within a countryyour region groups · else
cityCityyour city groups · else
langBrowser language (Accept-Language)your language groups · else
scheduleTime windows: recurring (days + HH:MM in a timezone) or absolute ISO rangesfirst matching window · else
whenBefore or after a single dateafter · else
splitWeighted A/B split · sticky keeps a visitor on one variant, random rerollsyour variants · no else, it always picks
scansHow many times the link has been scannedthreshold branches · else
sourceWhere the visit came from: utm_source, utm_medium, utm_campaign, referreryour value groups · else
  • Destinations can be inline URLs or entries from your resource repository · point ten flows at one saved destination and re-point them all in one edit.
  • Starter templates cover the common shapes: app-store split, opening hours, A/B test, by-country, by-language.
  • Each condition costs 1 credit, once, when added · the same price as a rules-object key. Removing is free and not refunded.
  • A link that routes with a flow refuses a raw rules object over the API with 400 · one brain per link. Gate rules still apply alongside a flow.

The rules object

The same routing, written as JSON for API and MCP clients: device, geo, language, schedule, A/B split, expiry, plus the gates. The full annotated example with every key lives in the API reference; it is machine-checked against the billing list, so if a key is billable it is documented there.

The gates

  • Password · the edge shows a gate form; the password is hashed in your browser and only the SHA-256 hash is ever stored.
  • Geo gate · allow-list or block-list of countries, with an optional elsewhere-URL for refused scanners. Runs before the password gate.
  • Scan cap · a hard ceiling; past it, scanners see the paused page.
  • Expiry · after the date, scanners 302 to a fallback URL or see an expired notice. Checked before every other rule.
  • Preview interstitial · an anti-quishing, verified-brand "you are heading to…" page with optional auto-continue, for codes in hostile environments (posters, parking meters).