CreateQR.ai
All articles

How to track QR code scans and see what works

· 4 min read

What a scan count really tells you, why each table card, poster or flyer needs its own code, and how to read the numbers before you decide.

Short answer: use a dynamic QR code, give each place it appears its own code, and compare them over the same days. Each code counts its own scans, so within a few weeks you can see which table card, window poster or flyer people actually use.

What a scan count really is

A dynamic code holds a short link. A scan opens that link first, and the link sends people on to your menu, shop or page. That moment is the scan, and it is what gets counted.

A static code has nothing in between. The phone reads your full web address from the pattern and goes straight there, so nothing counts the scan itself. At most, your own website statistics show the visit, if you added a tag to the address before printing.

Each scan of a dynamic code comes with a little context:

  • The day. Scans per day show quiet weeks, busy weekends and the effect of a new poster.
  • The city. An approximate city, worked out from the phone's network. A phone on mobile data can show up under another city, where its network connects.
  • The device. Which kind of phone people scan with.
  • The time. The day of the week and the hour, so you can see when people scan.

Total scans counts scans, not people, so a guest who scans the menu twice adds two. Unique people is a rough estimate, a fixed share of the total, and it is labelled as one. That is on purpose: we use the IP address to work out the city but do not store the full address, and our own code sets no scan cookies, so we cannot tell whether two scans came from the same phone. Our own code sets no cookies on scan pages. Our hosting provider's security service may set one short-lived technical cookie (__cf_bm) to block bots, never for tracking or advertising.

Treat the total as a good guide, not an exact count. Now and then a scan is missed or counted twice, for example when a scanner app checks the link before opening it.

Give each placement its own code

One code on everything gives you one number. You see that people scan, but not where. Make a separate code for each place instead: one for the table cards, one for the window, one for the flyers. They can all open the same menu or page.

Now each placement has its own count. If the window code keeps getting twice the scans of the flyer, week after week, you know where your next poster should go. And because every code is dynamic, you can send any of them to a new page later without reprinting.

Name each code after its place, such as “Window, front door” or “Flyer, spring market”. Your list of codes then reads like a map of where people scan.

How to read the numbers

  • Compare the same days. A Saturday at a café is not a Tuesday. Compare this Saturday with last Saturday, or a full week with a full week.
  • Wait for enough scans. A gap of three or four scans is chance. Give new codes at least two full weeks, so every day of the week shows up twice, and look for a difference that holds.
  • Change one thing at a time. Move a poster and rewrite it in the same week, and you cannot tell which change helped.
  • Use the time of day. The busiest hours show when you need an extra pair of hands, or when to post today's special so it is up before the rush.

Common mistakes

  • One code for every placement. The total looks healthy, but it cannot tell the table from the window.
  • Reading unique people as a headcount. It is an estimate. Base decisions on total scans.
  • Forgetting your own test scans. Scans of your printed proofs count too, so a new code often shows a few on its first day.
  • Blaming the spot when the message is missing. A code with no words next to it is easy to walk past. Add a short line such as “Scan for today's specials” before you move it.

How CreateQR.ai helps

Every code you make with CreateQR.ai is dynamic, so every one is counted from its first scan. Wi‑Fi and contact codes are counted too, because a scan opens a small page we host with those details.

On the Analytics page you can switch between the last 7 and 30 days, look at all codes or just one, and see scans per day, top cities, devices and the busiest days and hours. Your best codes ranks your codes by scans, so your best placement sits at the top. See an example dashboard.

To keep the numbers, click Export CSV. You get one row per day for each code you are looking at, with the date, the code's name and its scans, ready for any spreadsheet app.

The short version

Use a dynamic code, give each place its own code, and compare full weeks with full weeks. Give it two full weeks, and the numbers show you which spot earns its place.

More articles