Loading…
← All tutorials

How to set up adaptive QR code routing

Adaptive routing lets one printed square behave differently for each scanner: iPhone to the App Store, Android to Google Play, French speakers to your French page, a launch code to a countdown before the drop and the product page after it.

  1. 1

    Open a Pro code

    Adaptive rules live on the code detail page in your dashboard. Static codes cannot do this — their destination is physically inside the pattern.

  2. 2

    Turn adaptive rules on

    Enable the rules panel. Until you add a rule, everything continues going to the code's normal destination.

  3. 3

    Understand rule order

    Rules are evaluated top to bottom and the first match wins. Put the most specific rule first — a device rule above a catch-all language rule, for example.

  4. 4

    Add a device rule

    Match ios, android, mobile or desktop. Useful for app-store splits and for sending desktop scanners to a page that makes sense on a large screen.

  5. 5

    Add a language rule

    Matches the scanner's Accept-Language header. A rule for 'en' also matches 'en-CA' and 'en-GB', so you don't have to enumerate regions.

  6. 6

    Add a campaign window

    Give a start and end and the rule only applies between them. After the window closes, scans move to your fallback — ideal for printing drop material weeks ahead of the launch.

  7. 7

    Add a scan cap

    A cap routes the first N human scans to one destination — a limited offer, a first-hundred discount — and everything after it to the fallback.

  8. 8

    Set a fallback

    The fallback catches closed windows and exhausted caps. If you leave it empty we use the code's normal destination. A ForeverQR code never resolves to nowhere.

  9. 9

    Test every branch before printing

    The test page replays a scan and shows exactly which rule fired and where it sent the scanner. Check each branch there — a printed label is expensive to be wrong about.

Retired or mistyped codes still land on a branded ForeverQR page rather than a browser error, so a printed square never reads as broken.