Dynamic QR Codes

Campaigns

A campaign is a folder and a scoreboard in one. Group the codes behind a single promotion — a summer sale, a flyer drop, a trade show — and you can see how the whole effort performs instead of squinting at codes one by one. Pro

Campaigns are optional. A link code — a code that opens any page instead of adding a product — can live with or without one; a campaign is what you add when you want codes grouped, tagged and compared.

Create a campaign

Go to QR Codes → Campaigns and click + New campaign. Give it a name, pick a channel — Social, Print, In-store, Email, Digital or Other (type your own, e.g. Outdoor or Podcast) — and, if you like, a start and end date. Then click Save campaign.

Before your first campaign the list shows what it’s for: “Campaigns group your QR codes by channel (a flyer run, a trade show), so you can compare their scans and sales.” with a Create a campaign button.

Add codes to it

Open the campaign and click + Create QR code. It’s one step: fill in the form and a live preview of the code — in your site’s design — updates beside it. Click Create QR code and the code is saved into the campaign, with the message “QR code created. Download or print it from its row below.”

  • Destination — a page on your own store (type the path, e.g. summer-sale/) or any full https:// address.
  • Coupon (optional) — on your own pages it’s held from the scan and applied as soon as the shopper adds an eligible product to the cart, so minimum-spend and product rules are checked against the real cart.
  • Label (optional, internal) and Caption (optional, printed under the code).

Codes made elsewhere can join a campaign too: when you create a code in a product’s QR codes box, or a link code from All QR Codes → Create QR code → For a link, pick the campaign in its optional Campaign field. A product code in a campaign still adds its product to the cart — it’s just filed and reported under the campaign.

Codes that open another website

A link code can point at any site — your Instagram, a partner’s page, a booking tool. Three rules come with that:

  • No coupon. A coupon can’t be used on another website, so the plugin refuses one on an external destination.
  • Scans only. No order on your store can be linked to the visit, so Analytics reports it as “external — scans only”.
  • Store managers only. Users who can edit products but aren’t shop managers or administrators can make link codes to pages on your store, but they can’t point a code at another website — for them the field reads “Only store managers can change an external destination.”

UTM tags per campaign

Every scan that opens your site carries UTM tags, so WooCommerce’s Order Attribution and Google Analytics can tell a QR order apart from a direct visit. A campaign can set its own: in the campaign’s UTM tags section fill in any of Source, Medium, Campaign and Term.

Added to every scan of this campaign’s codes. Leave a field empty to use the site’s tracking tags (Settings → Links & tracking); an empty Campaign uses the campaign’s name.

So a campaign called Summer sale with every field empty tags its scans utm_source=qr, utm_medium=print, utm_campaign=summer-sale. Set Source to flyer and only that tag changes. Each code also sends its own utm_content (from its label or product name plus its identifier), so you can still tell the campaign’s codes apart in GA4. The full order of precedence is on the Tracking tags page.

Inside a campaign

The campaign page shows its channel, status and run dates, then two tabs. QR codes lists every code it holds — type, destination, coupon, scans — with the same row actions as everywhere else: Edit, Download, Print and the … menu (Copy link, View analytics, Delete). Print layouts holds the layouts you saved for its codes. View analytics → jumps to the campaign’s numbers.

An empty campaign says “This campaign’s QR codes show up here, with their scans. Create one, or move a code here from its Edit dialog.”

Move a code to another campaign

Open the code’s Edit dialog and change its Campaign (or set it to — None —). The printed code doesn’t change — the next scan simply counts for the new campaign. History stays where it was earned: “Scans and sales so far stay with the current campaign.” Analytics always credits a scan, and the order it led to, to the campaign the code was in at the time of the scan.

A moved link code belongs to its new campaign. If you move a link code from campaign A to campaign B and later delete B, the code is deleted with B — not with A.

Archive when it’s over

The channel isn’t just a label — Analytics shows it next to each campaign, so you can compare your print codes against social or email. When a promotion ends, click Archive (“Archive this campaign? Scan history is kept.”). It moves to the Archived list and no longer appears when you pick a campaign for a new code, but its codes keep working and its numbers stay in Analytics. Archiving is the right choice for almost every finished campaign.

Delete a campaign

Deleting is for campaigns you’re truly done with, and it starts from the Archived list: archive the campaign first, then click Delete there. The dialog spells out what happens:

  • Its link codes are always deleted, with their print layouts (link codes you made without a campaign, or moved out of it, aren’t touched). Printed copies of a deleted code no longer do their job — a scan just opens your shop.
  • For its other codes you choose: Keep its other QR codes & print layouts (the default — they stay in your library, with no campaign) or Delete its other QR codes & print layouts too (their images are deleted from the Media Library as well).
  • Analytics are kept. Scans and sales stay in your reports under (deleted campaign). To clear them, use Clear analytics for deleted products & campaigns in Settings → Cleanup.

Deleting can’t be undone. If any of the campaign’s link codes are already printed, move them to another campaign (Edit → Campaign) before you delete — or just archive.

Next: Track performance →