How to track app downloads from a QR code or offline campaign
Offline material has no cookies and no ad pixels. What you can measure is the scan, and with the right links, the installs it led to. Here is a setup that tells you which poster, table tent or flyer worked — and where its limits are.
What can be measured
- Scans and clicks: every visit through the link. SetLinks counts them by day, platform, country and source, and leaves link-preview bots out.
- Store page views and installs: counted by Apple and Google, not by any link service. You see them in App Store Connect and Google Play Console — per campaign, if the link passes one on.
- What happens in the app afterwards: needs analytics inside the app. A link cannot see it.
Step 1: one link per placement
A single link on every poster tells you how many people scanned in total, not where. Give each placement its own link and its own code: cafe-table, cafe-receipt, cafe-window. All of them point to the same stores; only the address and the numbers differ.
- Create the first link with your store addresses and fallback.
- Duplicate it for each placement and give each copy an address you will recognise in a report — the store reports list campaigns by it.
- Download each QR code and put it on its own material. Keep a list of which code went where.
Name links after what you will compare, not after the date you made them. Six months later, spring-poster-metro is still readable; link-14 is not.
Step 2: read scans by platform, day and country
A code from the dashboard carries a small marker, so a scan is told apart from a tap on the same link in a bio. The link’s statistics show all visits as clicks, and the scans among them as a figure of their own. From there:
- By day: line the curve up with what happened — the weekend of the fair, the first day the flyers went out.
- By platform: the share of iPhone and Android scans tells you which store numbers to look at, and whether AppGallery or RuStore are worth a listing.
- By country: for packaging and travel material, where the people scanning actually are.
Step 3: see installs per link in the stores
With store campaign attribution turned on, SetLinks adds the link’s address — cafe-table in setlinks.io/cafe-table — to the store address as it redirects. Google Play receives it as utm_campaign inside the referrer parameter; the App Store receives it as a campaign token ct, together with your provider token pt.
- App Store Connect: App Analytics → Sources → Campaigns lists page views, downloads and proceeds per campaign. Apple needs your provider token for that, which you copy once from App Analytics into the link’s settings.
- Google Play Console: the acquisition reports break store visitors and installers down by UTM campaign.
Store attribution is on plans that include it, listed on the pricing page. If an address you paste already carries its own referrer or ct, SetLinks leaves it alone.
An example: one café, three placements
A café chain puts its app on table tents, on receipts and in the window, each with its own link. After four weeks (the figures are made up to show the reading, not taken from anyone’s account):
-
cafe-table: 420 scans, mostly at lunchtime on weekdays, two thirds on iPhone. -
cafe-receipt: 95 scans, spread across the day. -
cafe-window: 30 scans, almost all in the evening and at weekends, when the café is closed.
The table tent is clearly the placement that works, and the lunchtime peak says when staff should mention the app. The receipt is weak but cheap, so it stays. The window brings few scans, yet they come from people who are not customers yet — worth keeping if the store reports show those scans turning into installs. Without separate links, all three would be one number of 545 that says none of this.
Step 4: turn it into a number you can act on
Scans divided by the number of people who saw the material is the scan rate; installs divided by scans is how well the store page converts that traffic. A poster with many scans and few installs has a store page problem, not a poster problem. Export the clicks to CSV, put the store numbers next to them, and compare placements over the same weeks.
What this will not tell you
- People who saw the poster and searched the store by name. They are real, and invisible to any link.
- Which person installed. Store campaign reports are totals; tying an install to a person needs an attribution SDK in the app.
- Exact numbers for small campaigns. Apple and Google round and hold back low counts for privacy; trends over weeks are more reliable than one day.
Questions
Can I track app downloads from a QR code?
You can count the scans precisely, and see installs per campaign in App Store Connect and Google Play Console when the link passes the campaign on. Per-person install tracking needs an SDK.
Are QR scans counted separately from clicks?
Both. A scan is a click, so it is in the total, and it is also shown on its own so you can see how much of the traffic came through the code.