QR Coupon
Troubleshooting
Most QR Coupon problems trace back to one of a handful of causes — a coupon rule that can’t be met, a code that outlived the URL it points at, or a setting that only applies going forward. Here’s how to read the symptom and fix it.
“The coupon didn’t apply”
When a shopper scans a product code, QR Coupon adds the product to the cart and tries to apply the coupon there and then. At that moment the cart holds only that one product — so the coupon has to be valid against a one-item cart. If it isn’t, the product still lands in the cart but the discount is skipped, and the shopper sees “Product added to cart. However, the coupon could not be applied.”
Run down the coupon’s own WooCommerce rules — these are what silently block it:
- The coupon code must exist as a WooCommerce coupon and be spelled the same — a typo or a deleted coupon means there’s nothing to apply.
- Minimum spend is the usual culprit: if the coupon needs a £30 cart and the scanned product is £18, it can’t apply to that single item.
- Expiry, usage limits and per-user limits — an expired or used-up coupon won’t apply.
- Product / category restrictions that exclude the very product the code adds.
Campaign custom-URL codes work differently. A coupon on a campaign code is armed on scan and applied the moment an eligible product is added — so minimum-spend and product rules are checked against the real cart the shopper builds, not a single item. If a minimum-spend coupon keeps failing on a product code, a campaign code is often the right tool instead.
“Scanning does nothing, or opens the wrong thing”
A QR code has the destination baked in when you generate it — it encodes your store’s address as it was at that moment. The fixes follow from that:
- You moved or re-addressed the store. Changing your domain, or switching the site URL from
httptohttps, leaves old codes pointing at the old address. Re-generate codes after a move — and print the new ones. - A variable product needs a choice. If the code targets a variable product without a set variation, the scan opens the product page asking the shopper to “select a product option” rather than adding to cart. Generate the code against a specific variation.
- Something is stripping the link. Scans are recognised by a
?qrcw=parameter on your home URL — pretty permalinks are not required, so that’s never the cause. But an over-eager security plugin, cache, or CDN that strips query parameters can swallow the scan. Test the QR’s URL in a normal browser tab; if that works but the camera doesn’t, suspect the phone’s network or a redirect in front of the site.
Phone cameras and the in-browser generator both behave best over HTTPS. The plugin doesn’t force it, but a secure URL is the smoother path for both scanning and generating.
“The QR image won’t generate, or comes out blank”
The code is drawn in your browser and then saved to the Media Library, so the failures cluster at those two steps:
- “Please save the product first.” The generator needs a saved product to attach to — publish or update the product, then generate.
- “Could not write QR image file.” The browser drew the code but the server couldn’t save it — almost always an uploads folder that isn’t writable or a full disk. Fix the
wp-content/uploadspermissions (or free up space) and try again. - “Free plan: 1 QR code per product.” The free plan allows one code per product (or per variation). Delete the existing code to make a new one, or upgrade to Pro for unlimited codes.
- A logo breaks the preview. Always pick the logo through the Media Library button. A logo pasted in from another website can block the browser from exporting the finished image.
“My code still shows the old design”
This is by design, not a bug. A code’s look is baked into the PNG the moment you save it, so changing Settings → QR Design only restyles codes you generate after the change. To restyle an existing code there’s no “re-skin” button — delete it and generate a fresh one. The full reasoning is on the Design your codes page.
“Analytics show zero, or the revenue looks wrong”
Analytics and conversion tracking are a Pro feature Pro — on the free plan scans are counted, but there are no conversions or revenue by design. On Pro, the usual surprises are about when a sale counts:
- An order only counts once it reaches Processing or Completed. Orders sitting in pending or on-hold aren’t conversions yet — so a brand-new sale can take a moment to show up.
- Revenue is split by status. Net revenue is Completed orders only; money in Processing shows up as Pending revenue, not net. If your “net” looks low, check whether paid orders are being left in Processing. Cancelled, failed and refunded orders are excluded entirely.
- Check the date range. Every report is filtered by scan date — a narrow window hides everything outside it. Widen it to All time to confirm data is there.
- Attribution needs a live session. A sale is credited to a scan through the shopper’s WooCommerce session. Aggressive full-page caching of the cart or checkout can drop that session, so scans stop tying to orders. Exclude cart/checkout from your page cache.
“The plugin won’t activate, or shows a red banner”
QR Coupon checks its requirements on activation and will refuse — or self-deactivate — if they aren’t met. It needs WooCommerce active and version 7.0 or higher, PHP 7.4+, and WordPress 6.0+. The most common case is a missing or outdated WooCommerce: install or update it, then activate QR Coupon again.
Still stuck?
When the symptom doesn’t match anything above, turn on diagnostic logging in Settings → Cleanup, reproduce the problem once, then read the log under WooCommerce → Status → Logs (source qrcw). It records each scan, coupon attempt and attribution as it happens — and it’s exactly what support will ask you to attach. Turn it back off once you’re done. See the Settings page for the details.
That’s the end of the guide. For the technical side — hooks, filters and the data model — see the Developer docs, or check what’s new in the Changelog.
