← All guides

QR Code Campaign Tracking: UTM Links, Dynamic Codes and Scan Reports

Find out which poster, package or counter card brings useful visits. Build tagged URLs, assign a dynamic code to each placement and compare scan activity with website results using QRCodeTransfer’s existing tools.

Latest published update

In this article
  1. 1. Decide what a useful result looks like
  2. 2. Build a naming convention before making the QR codes
  3. 3. Set up the campaign in seven steps
  4. Step 1 — Prepare the destination
  5. Step 2 — Build the tagged URL
  6. Step 3 — Create a managed dynamic QR code
  7. Step 4 — Create the other placements
  8. Step 5 — Export and decode the actual artwork
  9. Step 6 — Follow the redirect on a phone
  10. Step 7 — Launch with a repeatable review
  11. 4. Give each placement a separate identity
  12. 5. Read the scan report with the right definitions
  13. 6. Compare website results without inventing attribution
  14. 7. Test the complete journey before printing
  15. 8. Diagnose the most common reporting problems
  16. The website shows no campaign data
  17. Every placement appears as one item
  18. Scan totals increase during internal checks
  19. The QR image decodes but the page is wrong
  20. A date seems to be missing
  21. 9. Keep the printed code useful after the campaign changes
  22. 10. Frequently asked questions and useful tools
  23. Can I use UTM parameters in a static QR code?
  24. Does the UTM builder connect Google Analytics for me?
  25. Can one printed QR code identify several locations?
  26. Can I automatically see sales or exact visitor locations?
  27. Which parts can I try without an account?

You place the same promotion in a shop window, on a counter card and inside a parcel. A month later, the website has more visits—but which placement helped? A QR image alone cannot answer that question. You need a clear relationship between the printed item, its destination and the result you intend to measure.

This guide connects tools already available in QRCodeTransfer: the UTM link builder, dynamic QR codes, scan analytics, the QR image scanner and the print size checker. The example is a small autumn campaign, but the same method works for trade-show handouts, product inserts, menus and local events. All addresses, campaign names and figures below are illustrative; they are not customer results.

Two printed placements, A and B, use different managed QR addresses and different UTM content values to reach the same campaign page.

Figure 1. One campaign page, separate placement identities. The diagram explains the measurement design; it is not a screenshot of customer data.

1. Decide what a useful result looks like

Start with one question: do you want people to open a menu, request a quote, register for an event or download a guide? Choose one primary action and a destination that makes it easy. Sending every printed item to a general homepage makes both the visit and the analysis less useful.

Keep three layers separate. QRCodeTransfer records activity through a managed dynamic redirect. UTM parameters label the destination URL so compatible website analytics can classify the arrival. A completed inquiry, purchase or registration must be measured by the website or the system handling that action. Creating a tagged URL does not install analytics or connect a Google Analytics account.

Choose the dates, placements and person responsible before launch. Keep a campaign register with the placement name, asset name, printed scan address, tagged destination, start date and any later change. This small record is essential when the same design is printed by different shops or suppliers.

2. Build a naming convention before making the QR codes

Use one documented spelling for every value. In this example, store is the source, qr is the medium and autumn_launch is the shared campaign. The content value identifies the physical item. Lowercase letters and underscores are a practical team convention; do not switch between window_a, Window-A and windowA halfway through a campaign.

The builder currently exposes five familiar fields. Use source, medium and campaign together, then add content when you need to distinguish placements. Term can stay empty for this offline example. The tool creates labels; it does not decide which naming scheme fits your organization or guarantee a particular channel grouping in another analytics product.

FieldPurpose in this exampleExample value
utm_sourceWhere the material is distributedstore
utm_mediumYour chosen channel labelqr
utm_campaignThe shared campaign identifierautumn_launch
utm_contentThe placement or creative versionwindow_a
utm_termOptional keyword label; unused here—
An example campaign URL split into source, medium, campaign and content parameters.

Figure 2. Keep the campaign stable and change the content value for each placement. The UTM field names remain the same in every language.

The following is a demonstration URL. Replace example.com with your own tested destination. Enter the base address in the builder rather than manually placing parameters after a page fragment.

https://example.com/autumn?utm_source=store&utm_medium=qr&utm_campaign=autumn_launch&utm_content=window_a

Google’s documentation confirms that campaign values are case sensitive and can populate acquisition reports.

Google Analytics: campaign URL documentation

3. Set up the campaign in seven steps

Step 1 — Prepare the destination

Open the exact landing page on a phone. Confirm its product, offer, language and primary action. If your website uses analytics, ask its owner to verify that campaign parameters and the chosen completed action are actually collected.

Step 2 — Build the tagged URL

Open the UTM link builder. Enter the website URL, source store, medium qr, campaign autumn_launch and content window_a. Build the tagged URL and copy the entire result. Existing unrelated query parameters should remain part of the address; inspect the output before using it.

Step 3 — Create a managed dynamic QR code

Sign in to the correct workspace and open the dynamic QR workflow. Use the complete tagged URL as the destination and choose dynamic mode. Name the asset so that the campaign and placement are recognizable, for example autumn_launch — window_a. Check the current workspace allowance before creating all planned variants.

Step 4 — Create the other placements

Repeat the process for counter_b and parcel_insert. Keep the shared campaign values, change the content value and create a separate dynamic asset for each placement. Record the resulting scan address next to the physical item. Do not distribute the window image to every location if location comparison matters.

Step 5 — Export and decode the actual artwork

Apply the intended QR design and export the image. Open the QR code scanner tool and select a supported image to read what is encoded. A dynamic image should contain its managed scan address; the tagged website URL is the destination behind that address. For PDF artwork, inspect an exported image or the printed sample as well.

Step 6 — Follow the redirect on a phone

Scan the exported or printed code. Check the final destination, its parameters and the primary action. Open Analytics in the same workspace, select a date range that includes the test and allow for the UTC date boundary. Record your test time because quality checks can contribute activity.

Step 7 — Launch with a repeatable review

Place each verified image with its intended artwork. Record the launch date and review the same period across your scan report and website analytics. When a result is unexpected, check the journey and measurement setup before changing the offer or printing a new batch.

4. Give each placement a separate identity

If every poster contains exactly the same QR address, the redirect report cannot tell which physical poster was scanned. Design the separation before exporting the images. Different names in a spreadsheet cannot create distinctions that the encoded links do not contain.

Printed placementDynamic asset nameutm_content
Shop windowautumn_launch — window_awindow_a
Counter cardautumn_launch — counter_bcounter_b
Parcel insertautumn_launch — parcel_insertparcel_insert

All three destinations may open the same page and share source, medium and campaign. Their scan identities and content values remain different. Put the matching file name on each print brief and check a sample from every placement. If you deliberately reuse one code, treat its results as a combined total.

5. Read the scan report with the right definitions

The member Analytics page shows total scans, estimated unique scans, daily activity and counts by asset. It offers 7-, 30- and 90-day shortcuts, a custom range of up to 366 days ending today or earlier, and a daily CSV export. That range limit is a query rule, not a promise about how long data will be retained. The daily CSV contains dates and scan totals; it is not a conversion export or a UTM attribution report.

Total scans are recorded visits through the managed redirect, not verified camera actions or confirmed people. Opening the scan URL directly and repeating quality checks can add visits. Unique scans estimate distinct IP-and-browser hashes within the selected workspace and period. A shared network can merge visitors, while changes of browser or network can separate visits from one person. Do not add unique figures from separate reports and call the sum unique customers.

The chart and daily CSV use UTC calendar days. A late-evening local visit may fall on a different reporting date. Compare the same workspace and interval, and check the timezone used by your website analytics. Static QR codes bypass the managed redirect, so QRCodeTransfer cannot record their direct scans. A selected window of zero activity is not proof that the printed item was never seen.

6. Compare website results without inventing attribution

The following invented example illustrates how to discuss results responsibly. Assume the website measurement has been checked and each placement uses its own content value. The completed action is a quote request; none of these values comes from a real customer campaign.

Illustrative measurement stages: 120 recorded redirect visits, 90 measured website sessions and 9 completed actions; 9 divided by 90 is 10 percent.

Figure 3. Illustrative numbers only. Redirect activity, website sessions and completed actions come from different measurements and do not have to match.

PlacementRedirect visitsWebsite sessionsQuote requestsRequests / sessions
Window A12090910%
Counter B6045920%

Window A generated more recorded activity. Counter B produced the same number of requests from fewer measured sessions. Its illustrative session-to-request rate is 9 ÷ 45 × 100 = 20%; Window A is 9 ÷ 90 × 100 = 10%. The denominator is website sessions, not QRCodeTransfer’s estimated unique scans. This calculation describes this example and does not prove that the placement caused the difference.

Redirect totals and website sessions differ because they measure different stages. Repeated openings, a page closed before loading, browser restrictions, consent choices and analytics configuration can all affect the counts. Report the observed numbers alongside their definitions. Do not present the gap as an exact count of lost customers.

Review page speed, the promise on the printed material, the visibility of the action and the distribution context. A high scan count with weak website results may call for a clearer landing page. Few scans may justify checking placement and readability first. Do not claim return on investment without reliable cost and revenue data, or a completed sale merely because a QR link was opened.

7. Test the complete journey before printing

  • The correct workspace owns every dynamic code and each code is active.
  • Each physical placement has the intended asset, image and UTM content value.
  • The final website and primary action work on a phone without an administrator login.
  • The redirect chain reaches the expected page and the required campaign parameters survive.
  • The exported image decodes to the expected address; a printed sample also scans at actual size.
  • The print size checker has been used as preparation, followed by checks on the real material and lighting.
  • The scan report and website analytics use a documented, comparable reporting period and timezone.
  • The campaign register records quality-test visits, launch dates, owners and destination changes.

8. Diagnose the most common reporting problems

The website shows no campaign data

Check that analytics is configured on the destination and allowed to run in the test browser. Inspect the actual final URL for missing or replaced parameters. A generated UTM link cannot repair a website that does not collect campaign data.

Every placement appears as one item

Decode the distributed images. If they all contain one managed address, their redirect activity is combined. If different assets point to an identical content value, website reporting may also merge them. Correct the mapping before the next print run.

Scan totals increase during internal checks

Direct openings and repeat tests can appear in recorded activity. Keep a quality-test log and compare the intended launch interval. Do not promise that the system automatically removes every test visit or all automated traffic.

The QR image decodes but the page is wrong

Successful decoding only establishes that the matrix can be read. Check the saved destination, asset status and any subsequent website redirects. Test the final call to action as well as the first page.

A date seems to be missing

Confirm workspace, dynamic mode, active status and the UTC start/end dates. Compare the daily chart with an export made for the same interval. A local calendar date and a UTC calendar date are not always the same day.

9. Keep the printed code useful after the campaign changes

A managed dynamic code keeps its printed domain and path while you update the destination in the same asset. When an offer ends, direct visitors to a relevant follow-up page instead of abandoning the printed material. Keep campaign tags that still describe the original placement, and record the effective time of the destination change. Earlier events do not become a new campaign simply because the URL is edited.

Changing an asset name or destination does not create a fresh historical identity. Use date ranges and your change log to interpret a reused code. For a truly separate new campaign, create new identities before distributing new artwork. Keep the account, allowance and scan domain usable; if a custom domain is involved, its DNS and HTTPS must also remain operational. A code’s continuity depends on that address staying available.

10. Frequently asked questions and useful tools

Can I use UTM parameters in a static QR code?

Yes. A static image can encode a tagged destination, and a properly configured website can interpret that URL. It does not gain QRCodeTransfer redirect analytics or an editable managed destination. Longer encoded URLs can also make the pattern denser; check the real print.

Does the UTM builder connect Google Analytics for me?

No. It builds a URL. Your website must have its own analytics setup and any required collection settings. QRCodeTransfer’s scan report and the website’s acquisition report remain separate measurements.

Can one printed QR code identify several locations?

The same encoded address carries the same placement identity wherever it is printed. Use separate managed codes and consistent destination tags when you need a location comparison. A location name added only to a print-order document is not present in the scan.

Can I automatically see sales or exact visitor locations?

Opening a link does not establish a sale. Sales and inquiries need measurement in the relevant business system. GPS is a separate consent-based capability; do not assume every scan includes coordinates or infer a precise visitor location from the chosen placement name.

Which parts can I try without an account?

The public UTM builder, image scanner and print size checker are available as tools. Saving managed dynamic codes and viewing workspace analytics requires signing in. Asset capacity and access follow your current workspace and plan; check pricing and current allowances before a large rollout.

Start with one campaign, two placements and one clearly defined website action. Build and verify the links first, then expand the print run only after the complete journey is working.

Ready to create your code?

Try the generator, or sign up to manage dynamic codes.

Create a QR code
Help

Choose which optional settings this browser remembers. Necessary storage stays enabled so the requested service works.

Necessary storage Always active

Sign-in, security checks, requested drafts and checkout, and your cookie choice. These are not advertising cookies.

Remember language, currency and appearance for up to 180 days. When off, appearance lasts only for this browser tab session; language and currency can still be chosen on the current page.

We currently use no advertising or third-party website analytics cookies. QR scan records are described separately in our Privacy Policy.

Privacy Policy