Dynamic QR Codes

Changelog

Every release of Dynamic QR Codes for WooCommerce, newest first. Features marked Pro are part of the paid add-on; everything else ships in the free plugin on WordPress.org.

2.0.0 — 5 November 2026

The big one: QR Coupon for WooCommerce is now Dynamic QR Codes for WooCommerce. Same plugin, same WordPress.org slug, same settings and data — your existing codes keep scanning. Requires WordPress 6.1+, WooCommerce 7.0+, and PHP 7.4+.

Highlights

  • Dynamic codes — change a code’s coupon, label and caption after it’s printed, or retire it. Printed copies follow the change, codes printed with 1.x included. A retired code applies no coupon and sends scans to the product page (or the shop).
  • Scan counts you can trust — bots, crawlers and link previews (WhatsApp, Telegram, Facebook and others) are no longer counted and never add to a cart. Unique scans show next to total scans.
  • QR orders show their source in WooCommerce Order Attribution and Google Analytics — every scan carries UTM tags, so an order’s Origin reads “Source: qr” instead of “Direct”.
  • One-step create with a live preview, and PNG and SVG downloads.
  • Pro Print first, assign later with blank codes and the phone-friendly Scan a code screen; bundle codes, link codes, parcel inserts and bulk create.

New

  • A new name and admin menu: QR Codes, with All QR Codes and a QR codes box on each product.
  • Short, easier-to-scan addresses: new codes encode yourstore.com/?qrcw=k7m2xa.
  • Short links (opt-in): new codes can use yourstore.com/q/k7m2xa for an even less dense code. Needs any permalink setting except Plain; Settings → Permalinks shows a read-only QR code short links row so nobody breaks printed codes by accident.
  • Copy link: share a code’s link in a message or email. Clicks are counted apart from scans; lists show Visits (scans + link clicks).
  • Tracking tags: UTM tags on every scan (utm_source=qr, utm_medium=print, the campaign and the code), on by default, under Settings → Links & tracking.
  • Google Tag Manager / GA4: a scan pushes one qr_scan event to the dataLayer. The plugin never loads GTM or GA itself — your tag setup and consent decide what’s sent.
  • A Create QR code button on All QR Codes, and a Get started panel that walks a new store from its first code to its first phone scan.
  • Images on demand: download PNG or SVG from any code’s row, or add it to the Media Library when you want a file.
  • Restyle codes you already made: Use the current site design in the Edit dialog, or the Apply current site design bulk action. Printed copies keep working.
  • Bulk Retire / Reactivate on All QR Codes.
  • Documentation and Support links on the Plugins screen, plus “learn more” links next to the settings they explain.
  • Pro Scan a code: point your phone at a printed code to find, edit, retire or assign it. Checking a code never counts as a scan.
  • Pro Blank codes: print a batch of up to 500 codes first, stick them up, then assign each one with Scan a code.
  • Pro Bundle codes: one scan puts up to 20 products in the cart and applies a coupon once. Create one from All QR Codes → Create QR code → Bundle.
  • Pro Link codes to any page on your store or any website, with or without a campaign. Codes to other websites report scans only.
  • Pro Parcel inserts: a QR codes for this order box on the order screen lists the codes to print and drop in the parcel.
  • Pro Edit more after printing: product or variation, destination, fallback page for retired codes, campaign and the code’s own design.
  • Pro Bulk create codes for many products at once from the WooCommerce Products list, and Print selected on All QR Codes.
  • Pro UTM tags per campaign.
  • Pro Print layouts replace print sheets: saved settings that reprint with each code’s current details, flagged Changed since saved when a code was edited since.

Improved

  • Clearer, consistent screens: plain wording, British spelling, and renamed Settings tabs — QR design, Links & tracking, Cleanup. Every empty list says what it’s for.
  • Simpler code rows: Edit, Download (PNG, SVG, Media Library), Copy link, Retire and Delete in one place, with a thumbnail for every code.
  • All QR Codes has a separate Destination column showing where a scan goes today: the product, a link’s address, a bundle, or for a retired code its fallback page, product page or the shop.
  • All QR Codes fits screens from 960 px without overflowing: the code address is cut at its start, so the identifier stays visible, and row actions no longer wrap.
  • Dialogs and settings tabs with more content below show a fade and a small arrow, since macOS hides scrollbars.
  • Admin notices from WordPress, WooCommerce and other plugins sit below the page title on every plugin screen, instead of inside the guide’s header card.
  • Bundled Freemius SDK updated to 2.13.5, with security hardening.
  • Keyboard-friendly dialogs and tabs, and layouts that no longer cut off dropdowns or clip the preview on narrow screens.
  • The one-code-per-product notice only appears once a product has its code, instead of on every product.
  • Users with edit_products (e.g. a custom “product editor” role) now get the QR Codes menu and can create and edit codes there.
  • All QR Codes opens much faster with a long scan history, flags codes whose product is in the trash, and shows coupon codes in uppercase.
  • The database update runs automatically on your first admin visit (or with wp qrcw upgrade), never on a customer’s request, and never blocks scans.
  • Pro Analytics: bots and link previews left out of every report; unique scans and link clicks next to scans; clearer names; a helpful empty state before the first scan; faster Overview and Products pages; rates formatted for your locale.
  • Pro Smaller print PDFs named after the code, with an option to print each code’s address under it.
  • Pro Clear roles: product editors can scan, assign and link codes to store pages; external destinations, campaigns and Analytics stay with store managers.
  • Pro The guide’s Pro tab is now More ways to use codes, and an inactive licence opens All QR Codes with a renewal link instead of an error — your codes keep working.

Fixed

  • Page-cache plugins can no longer cache scan responses (which swallowed scans and skipped the add-to-cart); HEAD and prefetch requests no longer run it.
  • A cached copy of the page a scan opens no longer drops the scan’s message or its qr_scan event: the landing URL gets a one-off qrcw_n parameter that the page removes from the address bar.
  • Coupon pickers no longer offer expired coupons or ones at their usage limit.
  • A scan greets the customer once, and its message (out of stock, offer ended) now reaches first-time visitors.
  • Variable products: codes show their variation, and a code without one keeps its coupon until the customer picks.
  • A saved code keeps its gradient and own colours when printed; deleting its image outside the admin no longer breaks it.
  • Settings show “Settings saved.”; clearing scan history updates counts at once; dialog buttons follow the site language; an expired session shows a clear message instead of failing silently.
  • Activation and updates no longer rebuild the plugin’s table columns on every run; deactivation and uninstall leave nothing behind.
  • Safe to roll back: a site that returns to 2.0 after a later update keeps scanning normally, and its newer database is never downgraded. Uninstall removes every option, table and meta the plugin added, including any a later version created.
  • Pro Frame text is centred on downloads and printed PDFs; the print preview encodes your store’s address; failed campaign and layout actions say why.
  • Pro Analytics tables no longer repeat or skip rows across pages; the funnel’s middle step is now “Reached product or page” and also counts scans whose coupon was refused.

Developers (breaking)

  • Codes are identified by their code ID, not an attachment ID. qrcw_cart_tagged now passes the code ID first; qrcw_delete_qr is replaced by qrcw_delete_code; qrcw_intercept_scan, qrcw_resolve_attachment_id and qrcw_get_product_codes are removed.
  • REST: GET qrcw/v1/products/{id} has a new response shape; GET qrcw/v1/url is removed. QRCW_Tracker::count_by_attachment() is removed.
  • New: a documented PHP API (six functions), public lifecycle hooks, WP-CLI commands (wp qrcw status, wp qrcw upgrade) and a deprecation policy.
  • Pro Analytics detail URLs use ?code= (was ?qr=); print sheets saved as PDFs in 1.x are no longer listed (the files stay in the Media Library).
  • 2.0.0 is the last release that breaks without notice. Full details: Upgrading from 1.x.

Requirements

  • WordPress 6.1 or newer (was 6.0). WooCommerce 7.0+ and PHP 7.4+ unchanged.
  • Back up before updating. You can go back to 1.x with your data intact and 1.x codes keep scanning, but codes created in 2.0 don’t reach their product on 1.x: standard ones open your shop, short links show “page not found”.

1.0.0 — 24 June 2026

The first public release. Requires WordPress 6.0+, WooCommerce 7.0+, and PHP 7.4+.

  • One-click QR code generation straight from the product edit screen.
  • Coupon pre-selection — embed any existing WooCommerce coupon in the code.
  • Save QR images to the Media Library or download them as PNG.
  • Variable-product support — generate variation-specific codes.
  • A scan counter on every QR code.
  • An All QR Codes management screen with search, sort, and bulk delete.
  • Privacy-respecting scan logging — IPs stored as an HMAC-SHA256 hash, never in the clear.
  • Optional diagnostic logging (off by default) via WooCommerce’s logger — kept on your server, never transmitted.
  • Stock-aware — a friendly notice for out-of-stock products.
  • No external API — QR images are generated client-side in the browser.

The free version generates one QR code per product (one per variation for variable products). Pro lifts that limit and adds:

  • Unlimited QR codes per product.
  • Visual QR design — dot and corner styles, gradients, logos, and printable frames.
  • Print sheets — arrange multiple codes on a page and export a print-ready PDF.
  • Campaigns — group codes into campaigns, each with its own tracking link.
  • Quick coupon creator — create a WooCommerce coupon without leaving the QR screen.
  • Analytics — per-code performance, scan timelines, and order-level conversion and revenue attribution.

Following along? The free plugin’s release notes are also published on its WordPress.org page.