All use cases

geo.country

One poster, three country pages

The same artwork in Switzerland, in Germany, in France — one print run. A scan from CH lands on .ch, from FR on .fr, every other country on the mandatory rule. Not on an error page.

Where it hangs
Poster, banner, packaging that sits in more than one country.
Why the paper stays
Country-specific URLs on the poster mean three print jobs.

Live resolution

geo.country = CH
device.type = mobilelang.primary = frscan.is_first = true
  1. 1Switzerland
  2. 2France
  3. alwaysOtherwise
https://tour.example/ch

Country of the scan

A paper poster on a concrete wall, carrying the code
The same code on every shot.Poster, banner, packaging that sits in more than one country.

The ruleset

Valid, storable, mandatory rule last.

Not a description of what the engine could do — this is the text a code carries. The first matching rule wins, and the last one always matches.

ruleset · version 1

{
  "rules": [
    {
      "when": { "geo.country": { "eq": "CH" } },
      "then": { "type": "redirect", "url": "https://tour.example/ch" }
    },
    {
      "when": { "geo.country": { "eq": "FR" } },
      "then": { "type": "redirect", "url": "https://tour.example/fr" }
    },
    {
      "when": "always",
      "then": { "type": "redirect", "url": "https://tour.example" }
    }
  ]
}

Only the country. Region and city do not exist as an axis: below country level everything falls apart on a phone, and an axis you cannot trust is worse than none.

Also

Same axis, different situation.

Recycling note
CH the PET line, DE the yellow bag, otherwise the generic page.
Prices per market
One design, three shops. The paper does not know which one.
Legal text
What has to be shown differs by country. The code does not.

All use cases

Reprinting is the expensive part. Stop doing it.