SmartQRCode
Pricing
  1. Home
  2. /Blog
  3. /Enterprise qr smart routing by rule
business enterprise

Enterprise qr smart routing by rule

SmartQRCode editorial · Updated October 2026

Enterprise qr smart routing sends scanners from one printed pattern to different destinations by rule. First match wins. Conditions inside a rule AND. Values inside a condition OR. A Canva static file cannot route, and it is still the right file when every guest should open the same frozen URL.

How enterprise qr smart routing picks a destination

Remember first match wins not most specific. Write empty when is the default last. Evaluate schedule in the customer timezone. Honour the twenty rules ceiling.

The modules still encode one hosted URL. Rules sit on that object and run at scan time. Country uses ISO alpha-2 from the edge header. Device is mobile, tablet, or desktop. Language is the primary subtag; en matches en-GB. Schedule uses the customer's IANA zone, not the scanner's watch. Days use 0 as Sunday. from is inclusive; to is exclusive; a to earlier than from wraps midnight.

twenty rules ceiling is a stored constraint. PUT replaces the entire list because order is meaning. A partial patch that moved rule 3 above rule 1 would reroute a national print run.

javascript: and data: destinations are refused on write and ignored on read. Garbage in the column skips routing and falls through to target_url so a printed code never 500s. Unentitled owners do not apply stored rules on the hop, so a leftover JSON array cannot quietly start routing.

Paid options are $1.99, $29, $97, and $197. We do not sell an unpaid tier. Object counts remain QR campaign tracking by code. Plant timing is enterprise QR code rollout. Parameters on each destination are UTM QR code parameter plan.

Dynamic QR codes, tracked QR codes, and the website URL generator are the types this applies to. Wi-Fi cannot route: no hop. Product launch placements are the usual brief: one poster, UK app store versus US app store.

empty when is the default. Write it last.

How to order rules so the first match is the one you meant

Draft the list as a waterfall you can explain to a merchandiser.

  1. Freeze the printed pattern as a hosted URL type. Proof the modules before you add rules.
  2. Write the narrowest AND groups first: country plus device plus language if you truly need all three.
  3. Put schedule windows next if after-hours should differ. schedule in the customer timezone, not in UTC guessed from a laptop.
  4. Place the catch-all empty when last. If it is first, nothing else runs.
  5. Disable a rule when you need to pause it. Disabled is skipped; it does not become the default.
  6. Save the whole list. Confirm performance counts per rule id after real scans, instead of after an editor save alone.
  7. Export print files as SVG or 300 dpi PNG or PDF. Routing does not change density. UTMs on each destination also do not.
  8. Test device and language from a phone. Do not sign off a country rule in production by spoofing a header; the edge overwrites it.

first match wins not most specific is the sentence to tape above the editor. A GB plus mobile rule below a GB-only rule will never run.

Country, device, language, and schedule

Country in production is the edge's value. A scanner cannot choose GB to see a UK price list by sending a header. That is the property you want. It is also why QA of country rules needs real geography or a non-production edge.

Device classification must match analytics. Tablets are not phones. iPads once drifted between the two paths; they should not.

Language matches the primary subtag. Do not list en-GB and expect en-US to miss if you also listed en.

Schedule days empty means every day. Overnight windows wrap. A from of 18:00 and to of 09:00 is the usual closed store.

What happens when nothing matches

target_url is the destination. That is how you keep a safe fallback without an empty-when rule, if you prefer. Performance reports a default bucket for those scans so you can see a rule that never matches. A rule that never matches looks identical to a working rule in an editor without that bucket.

Unknown keys do not match. Ignoring them would widen the rule to people you meant to exclude.

A URL type with a splash page still evaluates the same rules after the splash. The destination is not passed in a query string.

Routing failures that send the whole run to target_url

Catch-all first. Every scan looks "fine" and every specialised URL is dead.

Country QA from a spoofed header in production. You sign off GB. Shoppers are not GB.

javascript: leftover from a spreadsheet. Refused. Good. If an older tool allowed it, scanners would follow it.

Provider pause. No hop, no routing, no UTMs. F91 still owns the outage.

Covered finders and 2 cm marks on a roll-up. Nobody is routed because nobody scans. Size for distance.

How to test rules without lying to yourself about country

Device and language can be exercised by changing a phone. Country in production cannot, because the edge overwrites the header. If the brief is UK versus US app stores, you need a scan from each geography, a preview environment that trusts headers, or a temporary destination you will not leave in the field.

Log the matched rule id from analytics performance. A rule that has zero scans after a week is either unused or unreachable because something above it already matched. first match wins not most specific makes that a design bug, not a data bug.

Keep UTMs distinct on each destination so GA4 can see the split even when someone looks at the web property instead of the QR series. The printed density stays the short URL either way.

Cap the list. twenty rules ceiling exists because a novel of conditions is how you ship a poster nobody can explain. If you need a twenty-first split, you probably need a second code.

When you disable a catch-all to debug, remember disabled rules are skipped. The next rule runs. If nothing remains, target_url takes over. Say that out loud before a live debug on a national SKU.

Name each rule id as a stable string you can find in performance, not as "rule 1." When someone deletes and recreates a rule, the id should stay if you still want history. PUT replaces the list; if you mint new ids every save, the chart forgets.

Do not route to a destination that 301s. You will debug the QR while the cache sits downstream. Enterprise qr smart routing already has a 302 hop. Add a 301 after it and edits freeze for some phones.

If a language rule is in play, test a phone whose OS is that language, not a translated landing page you opened yourself. Accept-Language is the input, not the page you wish they spoke.

When one static destination is the honest rule

Every scanner should see the same URL, you will never edit it, and you will not count: Canva or another free static generator. Enterprise qr smart routing is a rules engine for a poster that did not need one.

One printed object, several legitimate destinations by country or hours: host it, order the waterfall, keep target_url as the fallback, and remember that unique scan hashes are still not names. The pattern remains one. The shopper remains anonymous. The resolver still has to stay up.

Questions this raises

Rules run top to bottom. first match wins not most specific. Put narrow AND groups above a catch-all. An empty when is the default and will swallow everything below it if you place it first.

The code uses its own target_url. Disabled rules are skipped without ending evaluation. Unknown condition keys make that rule not match.

When every scanner should see the same URL and you will never count. A Canva one-off is then enough. Enterprise qr smart routing is extra moving parts.

Not in production. The edge overwrites the country header. Device and language can be spoofed because they come from user agent and Accept-Language.

No. There is no /api/v1 equivalent yet. Session-authenticated routing writes the list as a whole.

Keep going

The tools and playbooks this post refers to, one click away.

Generator

dynamic generator

Open it
Generator

tracking generator

Open it
Generator

website generator

Open it
Use case

product launches

Read the playbook
Guide

qr campaign tracking by code

Read it
Guide

enterprise qr code rollout

Read it

Make the code this post is about

$1.99 for 7 days, then a paid plan. Pick a type, brand it, and edit the destination whenever you like, even after it is printed.

Create a QR codeSee pricing
SmartQRCode

Dynamic QR codes you can edit after printing, with scan analytics on every one. From a single table tent to a warehouse of asset tags. Pay once or subscribe.

Create a QR codeTalk about Business

QR code types

  • Website QR code
  • Menu QR code
  • WiFi QR code
  • PDF QR code
  • Business card QR code
  • WhatsApp QR code
  • Google review QR code
  • Event QR code
  • Location QR code

More QR codes

  • Text QR code
  • Image QR code
  • Video QR code
  • Social media QR code
  • App download QR code
  • Google Form QR code
  • Business profile QR code
  • All QR code types

Features

  • Dynamic QR codes
  • QR codes with tracking
  • QR code with logo
  • Custom QR code design
  • QR codes that never expire
  • One-time payment QR code
  • No-subscription QR codes
  • Unlimited-scan QR codes

Business

  • QR codes for business
  • Bulk QR code generator
  • QR code API
  • QR code webhooks
  • Custom scan domains
  • White label QR codes
  • Team accounts and roles
  • QR code management platform

Solutions

  • Restaurants
  • Retail
  • Events
  • Healthcare
  • Real estate
  • Hotels
  • All use cases

Resources

  • Guides
  • Compare QR generators
  • Static vs dynamic
  • QR code cost
  • Buy a QR code
  • Cheap QR codes
  • Pricing
  • Help centre
  • About us
  • Contact us
GDPR compliantSSL securedPrivacy first
Terms of servicePrivacy policySecurity·© 2026 SmartQRCode

QR Code is a registered trademark of DENSO WAVE INCORPORATED.