The code is printed.
The destination
is not.
Dynamic QR codes with live analytics. What goes to print is an identifier. Where it resolves is a record you can edit at 11:20 on a Tuesday, from a phone, without touching the four thousand table cards already on the tables — and every scan against it is logged with location, device, OS and time.
Dynamic redirectsScan analyticsBulk generation
- SymbolPrinted, and then fixed. A short identifier and nothing else. There is no menu, no price and no campaign inside it.
- DestinationA live record. Edited in the dashboard, effective on the next scan, with no reprint and no reissue.
- Scan logOne row per scan. Time, location, device, OS and the destination that was served.
Dynamic redirects
One symbol.
Four destinations.
Nothing reprinted.
The card on the left is the physical object: four thousand two hundred of them went to print in September 2025 and not one has been reissued since. Choose a destination and watch the matrix. It does not redraw, because there is nothing in it to change — and the scan total underneath it keeps counting through every change.
The symbol carries a short identifier. Every change below edits the record it points at, not the ink.
DESTINATION 2 OF 4
Winter menu
urbaneats.ae/menu/winter
Same table cards. Nothing reprinted, nothing reissued. A seasonal changeover that would otherwise be a print run. The destination is edited in the dashboard and the next scan resolves to the new page.
Cumulative scans on QRF-UE-0042 through destination 2 of 4: 98,190. The symbol has not been reissued.
Worked example with illustrative scan volumes. What is not illustrative is where the totals sit: they accumulate against the code rather than against the destination, so autumn against winter is a like-for-like comparison — same symbol, same placement, same audience, one variable. That is also why the closure notice is measurable at all; a five-day message on a door would otherwise leave no record.
Real-time scan analytics
Every scan is a row,
not a tick on
a counter.
A counter tells you a code is popular. QRForge writes one row per scan carrying location, device, OS and time, which is what lets the four dimensions be crossed rather than reported beside each other. Building an audience profile is that, literally: the profile is assembled from rows.
Scans by hour of day form two distinct peaks: a lunch peak just after 13:00 and a larger dinner peak at 19:00, with the dinner peak roughly ten per cent higher. Fewer than one scan in twenty happens before 09:00, so a morning promotion behind this code would reach almost nobody.
Device and operating system
Recorded per scan, not sampled. The in-app browser share is the number that decides whether a destination can rely on a wallet pass or a native app hand-off at all.
Geography and placement
Location is derived from the request and attributed to the placement the code was deployed on, which is how a packaging insert and a table card can be compared honestly.
Per scan, not per day
The chart above is a summary of rows like this one. Because the rows are kept, a question nobody asked at launch — how many Android users in Sharjah arrive after 21:00 — is a filter rather than a new tracking plan.
Live, not batched
A scan appears in the dashboard as it happens. On a code that has just gone up on a door, that is the difference between watching a message land and hearing about it tomorrow.
Measured against the code
Because the identifier is stable for the life of the printed object, the history is continuous. Nothing resets when the destination changes.
Illustrative campaign. The dimensions are the ones QRForge records on every scan: location, device, OS and time.
A/B tests and smart routing
One code can ask
who is holding it.
Behind a single symbol sits an ordered rule set. The first rule that matches wins; anything unmatched falls through to the default, which can itself be a weighted split. Nothing here requires a second code, which means nothing here requires a second print run.
Split-test destinations
Two or more destinations behind one code, weighted. The audience, the placement and the symbol are identical across arms, so the only variable left is the page — which is what makes the result worth acting on.
Route by location or device
A code on regional packaging can send each market to its own page, and a code advertising an app can send each handset to the right store, from one printed artwork.
Schedule the redirect
Time-based rules change the destination on a clock rather than on somebody remembering. A breakfast menu until eleven, an event page until the doors close, a thank-you page afterwards.
Branded code design
A code is artwork
before it is a link
The symbol is going on a menu, a window or a carton, which makes it a design object with a tolerance. QRForge keeps the brand treatment on the side of that tolerance where the code still reads.
Brand colours and embedded logos
Your palette on the modules, your mark in the centre, with the contrast and quiet zone that keep a camera reading it first time.
Custom frames
A frame carries the instruction — what the person gets for scanning. On a table card that sentence does more for the scan rate than the symbol design does.
Print-perfect export
Multiple formats, including vector SVG that goes to a printer at any size without softening the module edges. What the designer places is what the camera reads.
Bulk generation
One file in,
a campaign out
Thousands of unique codes from one CSV in seconds. Unique matters: a code per table, per carton or per outlet is the only way the analytics can tell you which placement worked rather than that the campaign worked.
One upload, four folders, 4,200 unique codes. Folders carry team permissions, so an agency can be given the campaign it is working on and nothing else.
Campaigns, folders and permissions
Codes are organised into campaigns rather than kept in a list. Who can create, re-point or export is set per folder — re-pointing a live code is a permission, because it changes what the public sees.
Campaign dashboards
Reports you can put
in front of the client
who paid for it.
Scan heatmaps, conversion funnels and campaign comparisons, exportable and shareable. The comparison is the useful one: two campaigns measured the same way, by the same instrument, on the same axes.
Scan heatmaps
Where and when scanning concentrated, across placements and hours, so the next print run goes where the last one was actually read.
Conversion funnels
Scan, landing, action. The drop between the first two is a placement problem; the drop between the last two is a page problem, and they need different people.
Campaign comparisons
Autumn against winter, insert against table card, arm A against arm B — on one set of axes rather than in two exports that were built differently.
Exportable and client-ready
Shareable as a report or exported for a deck, which matters when the person who needs the number does not have a login.
Where QRForge sits in the nine
The one system whose output leaves the building
Eight of the nine FlowZa AI applications are read by people who work for you. QRForge is not. A code printed on a carton or a menu is a FlowZa record that a member of the public can reach — from a pavement, a table, a shelf, months after it was printed and long after whoever printed it has moved on.
That is why the mechanism is built the way it is: nothing meaningful in the symbol, the destination held as a record, permissions on who may re-point a live code, and 99.99% uptime on the redirect. It is also why the scan record is worth keeping. A person you have never met told you where they were, what they were holding and when they were interested, and QRForge keeps that record with the campaign it belongs to — queryable over its API for whatever you want to do with it next.
How it works
Design, deploy, then keep changing it
- 01
Create your codes
Design one branded code or upload a CSV to mint thousands. Set destinations, add the brand elements, download in the format the printer asked for.
- 02
Deploy and track
Print them, embed them, ship them on packaging. Every scan is captured as it happens — who, when, where, on what device.
- 03
Optimise on live codes
Change destinations, run A/B tests and adjust routing without reprinting. The scan data keeps sharpening the campaign after the print budget has been spent.
“We run hundreds of simultaneous marketing campaigns and FlowZa QRForge is the backbone of all of them. The ability to update destinations after print saves us thousands in reprinting costs every month. The analytics are outstanding.”
Questions marketing teams ask
Are static codes ever the right answer?
Yes — for a destination that will never move and a code you will never want to measure. Everything else pays for the redirect on the first change of mind. The published 60% engagement difference is measured against static codes, and most of it comes from codes staying relevant rather than from the symbol itself.
What does the redirect cost the visitor?
An average of under 0.3 seconds per scan, on infrastructure with 99.99% uptime. The hop is where the scan is logged and the routing rules are evaluated, which is the price of the code being changeable at all.
Will a dynamic code scan on any phone?
It is an ordinary QR symbol holding a short address, so any native camera app reads it without an application to install. The intelligence is behind the address, not inside the symbol.
Can an agency work in our account without seeing everything?
Yes. Codes live in campaigns and folders, and permissions are set per folder — including who may re-point a code that is already in the field, which is the action worth restricting.
How many codes can we generate at once?
Thousands from a single CSV in seconds, each one unique and each one tracked separately. Uniqueness is the point: a code per placement is what turns a campaign total into a per-placement answer.