codigo-qr.es
utmgoogle-analyticsmarketing

QR codes with UTM parameters: how to measure your campaigns in Google Analytics

The difference between embedding UTM in the URL and using a dynamic QR with its own analytics

21 de mayo de 20266 min de lectura

Adding UTM parameters to the URL of a QR code is the most direct way to measure in Google Analytics where scans come from. But there are two ways to do it, with different advantages: embedding the UTM directly in the URL of a static QR, or using a [dynamic QR with own analytics](/en/qr-codes-generator/dynamic) that logs scans before redirecting. Knowing the difference saves you dirty data in GA4.

What are UTM parameters and why do they matter for QR codes?

UTM parameters are tags you add to a URL so that Google Analytics identifies the source, medium and campaign of each visit.

UTM stands for Urchin Tracking Module, the URL-tagging system used by Google Analytics. When someone clicks a URL with UTM parameters, GA logs the visit with the source, medium and campaign you have defined.

Without UTM, a visit arriving from scanning a QR appears in GA4 as direct traffic, just as if the user had typed the URL manually. With UTM, it appears correctly labelled as a poster campaign, mailing or whatever you have configured.

Example URL with UTM parameters for a QR:

``` https://yourdomain.com/offer ?utm_source=qr &utm_medium=poster &utm_campaign=opening-may-2026 &utm_content=shop-window-poster ```

When someone scans the QR pointing to that URL, GA4 records: source = qr, medium = poster, campaign = opening-may-2026, content = shop-window-poster. You can filter those visits in any GA4 report and compare them with other campaigns.

How do you create a QR with UTM parameters step by step?

You build the URL in Google Campaign URL Builder, paste it into the codigo-qr.es QR generator and download the code ready to print.

The process has two steps.

Step 1: build the URL with UTM parameters. Use the official Google tool: `https://ga-dev-tools.google/campaign-url-builder/`. Enter:
• Destination URL: the page the QR leads to
• `utm_source`: traffic source (e.g. `qr`, `poster`, `flyer`)
• `utm_medium`: channel (e.g. `print`, `offline`, `display`)
• `utm_campaign`: campaign name (e.g. `opening-may-2026`)
• `utm_content`: (optional) to distinguish two QRs in the same campaign (e.g. `shop-window` vs `counter`)

The tool gives you the complete URL with UTM parameters already encoded.

Step 2: generate the QR with that URL. Paste the full URL (with UTM) into the QR generator at codigo-qr.es. Download the QR in PNG or SVG. That QR, when scanned, takes the user to the URL with UTM parameters and GA4 logs the visit with all the correct tags.

Tip: if you use a static QR, the URL with UTM is fixed for ever. If you need to change the campaign or destination in the future, you have to generate a new QR and reprint.

What is the difference between a QR with UTM and a dynamic QR with its own analytics?

A QR with UTM measures in GA4 but requires GA at the destination. A dynamic QR logs its own scans and lets you change the destination without reprinting.

The two options have different uses:

Static QR with UTM:
• The URL with UTM is encoded inside the QR.
• Google Analytics logs the visit with UTM tags when the user arrives at your website.
• Requires GA4 to be installed at the destination.
• If the destination has no GA (a PDF, a Google Maps listing, a third-party website), the UTM parameters are not recorded anywhere.
• You cannot change the destination without reprinting the QR.

Dynamic QR with its own analytics:
• The QR points to a short URL of the form `/r/abc12345`.
• codigo-qr.es logs every scan (total, time, country, device) before redirecting.
• Does not depend on GA or on the destination having any analytics system.
• You can change the destination at any time without reprinting.
• If you also want data in GA4, add UTM parameters to the dynamic QR's destination URL and you have both records.

Summary table:

| Criterion | Static QR + UTM | Dynamic QR | |-----------|-----------------|------------| | Measurement in GA4 | Yes (if GA is at destination) | No (own analytics) | | Independent of GA | No | Yes | | Change destination without reprinting | No | Yes | | Works with PDF or third-party website | Does not measure in GA | Measures scans | | Cost | Free | Pro plan €5.99/month |

When to use a QR with UTM and when to use a dynamic QR with its own analytics?

Use UTM when the destination has GA and the URL will not change. Use a dynamic QR when there is no GA or you need to edit the destination afterwards.

The choice depends on three questions:

Does the destination have Google Analytics? If your website has GA4, UTM parameters work well. If the QR points to a PDF on Drive, an Instagram profile or a third-party website without GA, the UTM parameters do not reach any measurement system. In that case, the dynamic QR with its own analytics is the only way to know how many people scan.

Do you need to change the destination in the future? If the destination URL may change (new version of the menu, new season offer, new landing page), use a dynamic QR. With UTM and a static QR, any change requires reprinting.

Do you need data in GA4 to combine with other channels? If your marketing team already works with GA4 and wants to compare QR with other channels (email, social media, paid), UTM parameters are the standard way to make that comparison. You can combine both options: a dynamic QR whose destination URL includes UTM parameters. That way you have your own analytics in codigo-qr.es and data in GA4 at the same time.

See the full guide on static vs dynamic QR for more detail.

What UTM parameters should you use for each type of print medium?

Poster uses utm_medium=print, flyer uses utm_medium=brochure, packaging uses utm_medium=packaging. The utm_content field distinguishes each location within the same campaign.

A consistent UTM convention makes subsequent GA4 analysis easier. These are the recommended tags for the most common physical media:

| Medium | utm_source | utm_medium | utm_content (example) | |--------|-----------|------------|-----------------------| | Outdoor poster | qr | print | shop-window-poster | | Flyer or leaflet | qr | brochure | trade-fair-flyer-may26 | | Packaging or label | qr | packaging | box-product-a | | Business card | qr | business-card | sales-card | | Restaurant table | qr | table | terrace-table | | Purchase receipt | qr | receipt | receipt-shop-bcn |

`utm_campaign` should be the full campaign name, the same for all media in that campaign (e.g. `opening-may-2026`). That way you can group all QR codes from the campaign in a single GA4 report and see which medium generates the most traffic.

§CODIGO-QR.ES / PRO

Create your QR with UTM parameters or your dynamic QR with analytics

Free generator for QR with UTM. Pro plan at €5.99/month for dynamic QR with its own analytics and destination editing.

Preguntas frecuentes

Do UTM parameters make the QR bigger or harder to scan?
UTM parameters make the URL longer, which increases the dot density of the QR. For long URLs (more than 150 characters with UTM), use error correction level M instead of H to keep the QR scannable. Or use a dynamic QR, which encodes a short URL regardless of the destination.
Can I use UTM parameters with a dynamic QR?
Yes, they are compatible. The dynamic QR encodes the short URL (/r/abc12345). That short URL redirects to the destination URL, which can include UTM parameters. That way you have your own analytics in codigo-qr.es and UTM data in GA4 at the same time.
Do UTM parameters work in GA4 the same way as in Universal Analytics?
The five classic UTM parameters (source, medium, campaign, term, content) work the same in GA4. The difference is that GA4 shows them in Acquisition reports, in the Campaigns section. The attribution model is different, but UTM parameters are recorded the same way.
What happens if two QRs in the same campaign have the same utm_content?
It is not an error, but you lose granularity. If you want to distinguish the shop-window QR from the counter QR, use a different utm_content for each. If you do not need to distinguish them, the same utm_content is fine.
J

Jose Flores

Fundador de codigo-qr.es · codigo-qr.es

Jose Flores es fundador de codigo-qr.es, herramienta de generación de QR dinámicos y códigos de barras creada en Barcelona en 2026. Especializado en soluciones digitales para pequeños negocios, desarrolla herramientas que permiten a restaurantes, comercios y profesionales digitalizar su comunicación sin infraestructura técnica propia.

Más artículos