QR Code With Custom Short Link and Scan Tracking
How memorable slugs and per-scan analytics work together inside a single dynamic QR code.
A dynamic QR code encodes a short redirect URL like app.qrcodefordonation.com/q/yourslug. The slug is 3 to 25 characters and points to any destination you control. Every scan is logged with IP, device, city, country, referer, and timestamp.
The /q/ redirect explained in plain terms
A static QR code bakes the destination URL straight into the pixel pattern. Once printed, it cannot change. A dynamic QR code does something different. It encodes a short redirect URL on a domain we control, like app.qrcodefordonation.com/q/help, and that short URL is the one printed in the code.
When a phone scans the code, the camera reads the short URL and opens it in the browser. The browser asks our server, "where does /q/help go?" Our server looks up the slug, records the scan, and returns an HTTP 302 redirect to the real destination. The phone follows the redirect and the donor lands on your donation page.
The donor never sees the redirect. To them, scanning feels exactly like a static QR code. The whole loop happens in milliseconds. The technical pattern is documented in the Wikipedia article on HTTP redirection if you want the underlying spec.
This indirection unlocks two features that static codes can't offer. First, you can change the destination at any time by updating the lookup, with no reprint needed. Second, the server can record details about every scan as it passes through, which becomes your analytics. The QR code itself never knows or cares.
Picking a custom slug that works
The slug is the part after /q/. On QR Code For Donation, slugs are 3 to 25 characters. Letters, numbers, and hyphens are accepted. Pick one and the full short URL becomes app.qrcodefordonation.com/q/yourslug.
Three rules for a slug that earns its place:
- Short. Shorter slugs encode into fewer modules, which means a less dense QR code at the same print size. A 5-character slug scans more reliably from a distance than a 25-character one.
- Memorable. The slug doubles as a fallback. Print it under the QR code in plain text so people who can't scan can still type it. /q/help2026 beats /q/x7k9p2qr.
- Campaign-specific. If you'll run multiple campaigns, give each one its own slug. /q/spring and /q/fall let you compare scan volumes side by side.
Avoid characters that look similar in print. Lowercase L, capital I, and the digit 1 are easy to confuse. Same with capital O and zero. Same with capital B and digit 8. If the slug will appear in plain text under the code, pick characters that read cleanly.
For more on this, see the custom short URLs page, which covers slug rules, character limits, and naming conventions for multi-campaign nonprofits.
What scan tracking actually captures
When a scan passes through the redirect, the server records six fields. Here's exactly what gets stored:
- IP address. The public IP the scan came from. This is what makes city and country lookup possible.
- User agent. The browser identification string. This reveals the device type (phone, tablet, desktop), the operating system (iOS, Android, Windows), and the browser.
- City. Derived from the IP address using a geolocation database. Accuracy is generally good in cities, less precise in rural areas.
- Country. Also derived from IP. Country accuracy is high.
- Referer. The URL the scanner came from, if any. Most direct camera scans have no referer.
- Timestamp. Exact server time when the scan occurred.
What's not captured: names, emails, phone numbers, payment information, social profiles, or anything that personally identifies the donor. The scan log is anonymous by design. We only know what the HTTP request itself reveals.
If you want to understand how IP geolocation works at a technical level, the Wikipedia article on IP address geolocation explains the database approach and its known limits.
For dynamic QR codes with the full tracking pipeline, see dynamic QR code with tracking.
Reading the analytics for real decisions
Raw scan logs are useless without questions. Before opening the dashboard, write down what you actually want to know. Then look only for those answers. Here are the four questions that matter most for a small nonprofit running a campaign:
- Did anyone scan it at all? Total scan count over the campaign period. If the answer is zero, the placement is wrong, the print size is wrong, or nobody knew the QR was there.
- When did people scan? Timestamp distribution. Most donation QR scans cluster in tight bursts right after an event or a newsletter send. If your bursts don't match your sends, your messaging needs work.
- Where are they scanning from? City and country breakdown. If you printed posters in two cities and one shows zero scans, that location has a problem.
- What devices? User agent breakdown. If 80% are iPhones and your donation page is broken on Android, you've found a leak before it costs you money.
Don't read the dashboard daily. Pick a cadence (weekly, or after each campaign) and look at trends, not single scans. A single scan tells you nothing. A pattern across 50 scans tells you whether the campaign worked.
Compare slugs side by side. If you set up /q/poster and /q/email with the same destination, you'll know which channel drove more scans without any extra setup.
When to update the destination, and how
The ability to change the destination is the single most valuable feature of a dynamic QR code. Use it. Here are the situations where updating saves a print run:
- Campaign rollover. Spring campaign ends, fall campaign begins. Same printed posters, new destination URL, no reprint.
- Page move. Your donation page URL changes because you switched processors. Update the slug destination once, every printed code keeps working.
- Seasonal redirects. Send scanners to a holiday landing page in December and the regular donation page the rest of the year.
- Emergency response. A disaster appeal needs to go live fast. Repoint an existing slug to the appeal page in seconds.
- Broken link recovery. The destination 404s. Repoint to a working URL while you fix the original page.
To update, sign in to the dashboard, find the slug in your list, edit the destination URL, and save. The next scan after the save uses the new destination. Existing scans already in flight finish at the old one. There's no propagation delay.
One word of caution. Don't update the destination so often that the same printed code means different things to different donors over time. If you're running unrelated campaigns, give each one its own slug. Keep one slug, one purpose.
Ready to set this up? Start at the dynamic QR code generator or read the nonprofit QR guide for use cases by mission type.
Frequently Asked Questions
Q.01 How does a custom short link work inside a QR code?
Q.02 How long can a custom slug be?
Q.03 What scan data is captured?
Q.04 Can I change the destination URL after I print the QR code?
Q.05 Is scan tracking free?
Set up a tracked short link today
Pick a memorable slug, point it anywhere, watch the scans roll in. Editable destinations, real-time logs.
Generate QR Code Free