INTERMEDIATE
DocsRoute by country
You print one QR code, but your audience lives in several countries. A geo rule sends each market to its own destination from the same printed code - set up once in the dashboard or over the API, and changeable long after the ink is dry.
One code, many markets
Say the same packaging ships to Germany, Austria, and everywhere else. A German scan should land on the German shop; everyone else belongs on the international page. Printing a different QR code per market multiplies your print runs - and one mislabeled box sends the wrong audience to the wrong page for the life of that box.
A Kilo link dissolves the problem, because the code never encodes your destination - it encodes the link, and the link decides. Geo rules are evaluated at the edge, inside the same roughly-50-millisecond redirect that forwards the visitor, so nobody waits while the decision happens. And because the rules live on the link rather than on the paper, you can add markets, merge them, or repoint any of them years after printing. Print once; repoint forever.
Set it up in the dashboard
The whole setup is one link and one rule per market. In the dashboard:
- Create the link with your international page as the destination. This default is the safety net - every visitor no rule matches lands here, so make it a page that works for anyone.
- Open the link’s routing rules and choose Add rule.
- Add a geo rule per market: pick the country - or several countries that share a destination - and set the URL those visitors should get. A geo rule can also match a region or a city when a whole country is too coarse.
Rules evaluate in a fixed order - first match wins, geo before device and A/B, with the default catching everyone else - and an edit takes effect on the very next scan. The mechanics, including how rules stack, are in the routing rules guide. One honest note before you build: targeting rules are a paid feature, enforced at the API as well as in the dashboard.
Two calls over the API
Kilo is API-first - the dashboard you just used is a client of the same HTTP API. The printed-poster setup is two calls with a write-scoped key. First, mint the link with the worldwide default:
curl https://qr2r.com/api/links \
-H "Authorization: Bearer $KILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "default_target": "https://example.com/global", "name": "Trade-fair poster" }'The response carries the link’s permanent slug. Then attach one geo rule per market - countries are ISO-2 codes, and the create returns 201 with the stored rule:
curl https://qr2r.com/api/links/aA3k9/rules \
-H "Authorization: Bearer $KILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "type": "geo", "condition": { "countries": ["DE", "AT"] }, "target_url": "https://example.com/de" }'Repeat the second call for each market, and use PUT /api/links/aA3k9 whenever a destination moves - the printed code never changes. The full endpoint walkthrough, including listing, reordering, and deleting rules, is in analytics and rules over the API. Like the dashboard, the API enforces the plan gate: a geo rule on a plan without targeting rules is refused with 402, never silently accepted.
Check the fit in analytics
Open the link’s analytics and read the countries breakdown against your rules. If the poster hangs in Vienna but a third of the scans come from neither Germany nor Austria, either the placement story is bigger than you thought or the traffic is not what it seems - both worth knowing before the next print run.
For a printed code there’s a sharper tool: pin the link’s placement - the country or region where the code physically lives - and the geo panel adds an in-area / out-of-area line, counted on human-classified traffic only. It answers the placement-fit question in one glance: are the scans coming from where the paper actually is?
Honest limits
Network-level geolocation is reliable at country level and approximate below it - a city can resolve to a carrier hub a few towns over, and visitors on roaming or a VPN can appear in the wrong country entirely. Route campaigns with it; don’t ask it to settle disputes. Some out-of-area activity is normal.