WooCommerce Tips

How to Run a Code-Gated WooCommerce Campaign: When to Require a Coupon Code Instead of Auto-Apply

How to Run a Code-Gated WooCommerce Campaign: When to Require a Coupon Code Instead of Auto-Apply
🏳

WooCommerce Strategy Guide

Same Discount, Different Door. Only One of Them Is Right for This Promotion.

Auto-applying a discount to every visitor and requiring a coupon code are two distinct delivery modes โ€” and treating them as interchangeable is how stores accidentally give away discounts to the wrong audience, or miss the attribution data they needed all along.

A store owner ran a spring sale across their whole catalog and created a coupon code to go with it. The email went out. The code spread. By day three, it was on three coupon aggregator sites and being redeemed by people who had never heard of the brand. The promotion had turned from an email-subscriber exclusive into an open-to-everyone deal with no way to wind it back.

That’s not a coupon problem. It’s a delivery-mode mismatch. The store wanted a code-gated exclusive โ€” a discount that fires only when someone enters a specific code at checkout โ€” but the underlying campaign was designed for a public audience. The fix wasn’t a better coupon. It was understanding when to use which mode in the first place.

This guide covers exactly that: the two WooCommerce discount code campaign delivery modes, the mechanics behind each, and the situations where each one is genuinely the right tool.

Auto-apply vs. requires code: the core difference

Every WooCommerce discount campaign has a delivery mode: it either applies automatically when a qualifying customer reaches checkout, or it requires the customer to enter a coupon code before the discount fires.

The distinction sounds simple, but it carries significant downstream consequences for how the promotion behaves, who can access it, how it appears on the product page, and what data you get afterward.

Property Auto-apply Requires code
Discount fires when Qualifying products are in cart Customer enters the code at checkout
Who can access it Any qualifying visitor Only code-holders
Visible on product pages Yes โ€” strikethrough price and sale badge No โ€” by design
Attribution data Campaign-level only Per-code โ€” tracks which channel or partner
Appears in WooCommerce totals as Sale price (product-level) Coupon line: “Code NAME: โˆ’$X.XX”
URL sharing N/A ?wsscd_code=YOURCODE applies it automatically on arrival

Neither mode is better. They serve different purposes, and choosing correctly is the whole game.

When auto-apply is the right choice

Auto-apply is the right delivery mode when you want every qualifying visitor to benefit from the discount without any friction โ€” no code to remember, no entry required, no risk of someone getting to checkout at full price because they lost the email.

The clearest use cases:

  • Sitewide or category-wide sales. A spring sale, a clearance event, a category spotlight. If the point of the promotion is to give everyone the deal, friction is the enemy. Auto-apply ensures every qualifying customer gets the discounted price the moment they add to cart.
  • Flash sales with a visible countdown. The sale badge and strikethrough pricing on product pages are part of the urgency signal. A code-gated campaign can’t deliver that โ€” the product page shows full price regardless.
  • Tiered and BOGO promotions aimed at all buyers. Buy 3 get 10% off, buy 5 get 20% off. These benefit from being visible on product pages so customers can calculate their savings before adding to cart. That visibility disappears with code delivery.
  • Campaigns where you don’t need to control access. If the audience is “everyone on your store,” the friction of a code is pure friction โ€” no benefit.

Auto-apply is also the architecture that distinguishes campaign discounts from WooCommerce coupons as a conceptual tool. The store is the agent; the discount exists before the customer arrives.

When code-gated is the right choice

Code-gated campaigns are the right delivery mode when access control matters more than friction reduction. The customer needs to prove something โ€” that they received the email, that they’re an influencer’s audience, that they’re a loyalty member โ€” before the discount fires.

Email subscriber exclusives

You’ve built a list of 4,000 subscribers. You want to give them a 20% off reward that isn’t available to random visitors. A code-gated campaign delivers this: you share the code in the email, only subscribers who open it get the discount, and it doesn’t show up as a sale badge for everyone else to see on the product page.

This is meaningfully different from a standard coupon. The discount can be any type โ€” percentage, fixed amount, BOGO, tiered pricing, a spend threshold โ€” not just the percentage-off coupons that older systems tend to limit you to.

Influencer and affiliate codes

An influencer’s audience gets code SARAH20. A podcast sponsor’s audience gets code PODCAST15. Each code is a trackable attribution channel. Redemptions tell you which partner drove which sales. You can cap each code independently, see how much each partner’s audience converted, and decide where to put your next sponsorship budget.

Code-gated delivery is the only way to build that attribution layer. Auto-apply campaigns don’t carry per-channel tracking.

Loyalty rewards and milestone unlocks

A customer hits $500 in lifetime purchases. You send them a personal code for 15% off their next order. That code is theirs โ€” it represents a relationship milestone, not a public offer. The friction of entering it is actually part of the value: the customer feels like they earned something, not just happened to be on the right page during a sale.

B2B and account-based pricing

You supply wholesale customers at a different price point than retail buyers. A code-gated campaign scoped to specific products can deliver that pricing privately. The product page still shows retail price. Wholesale customers enter their code at checkout and see the correct price. Nobody else can access it without the code.

Re-engagement offers

A customer hasn’t ordered in six months. You send a win-back offer: “Here’s 25% off, valid for the next two weeks.” That’s an individual offer with a specific expiry. A code-gated campaign handles this cleanly, with a usage cap that prevents the code from being shared around after the relationship has been re-established.


The access-control gap that creates margin problems

A B2B store ran a 40% off wholesale campaign as an auto-applied discount scoped to their wholesale product category. It worked fine โ€” until a retail customer found a product that happened to be in the wholesale category and bought it at wholesale pricing. There was no barrier. Auto-apply had no mechanism to limit access. Switching to code-gated delivery with the wholesale code distributed only to verified account holders closed the gap immediately.

How code-gated campaigns work mechanically

When you configure a campaign with “Requires code” delivery in Smart Cycle Discounts, the plugin creates a WooCommerce coupon under the hood and ties it to the campaign. From the customer’s perspective, the checkout experience is the familiar WooCommerce coupon field โ€” they enter the code, the discount appears as a coupon line in the order totals (“Code SAVE20: โˆ’$15.00”), and WooCommerce processes it natively.

From your perspective as a store operator, the campaign has everything a normal campaign has: a scheduled window, a discount type, product targeting, a priority level, and Campaign Intelligence verdicts evaluating the campaign before launch. The code is simply the delivery key that unlocks the discount.

What this means practically:

  • The discount shows in the order totals as a recognizable coupon line, which customers expect and trust.
  • The code is scoped to the campaign’s active window โ€” it doesn’t work before the campaign starts or after it ends, without you needing to manually enable or disable anything.
  • The campaign’s priority system still applies. If a code-gated campaign and an auto-applied campaign target the same product, the higher-priority campaign wins.
  • Campaign Intelligence monitors the code-gated campaign with four specific pre-launch checks not run on auto-applied campaigns (covered below).

Code delivery works across every discount type

This is worth being explicit about because it’s one of the things that distinguishes a purpose-built campaign system from a standard WooCommerce coupon. WooCommerce’s native coupon engine supports percentage off, fixed cart discount, and fixed product discount. That’s it.

In Smart Cycle Discounts (as of version 2.1.0), the “Requires code” delivery mode is available for every discount type the plugin supports:

  • Percentage off (free)
  • Fixed amount off (free)
  • BOGO โ€” Buy One Get One (free)
  • Tiered quantity pricing (Pro)
  • Spend threshold discounts (Pro)
  • Bundle deals (Pro)

That means you can run a “subscribers only” BOGO deal, a wholesale tiered pricing campaign accessible by code, or a spend-threshold reward (spend $150, get 20% off) gated behind a loyalty code. None of those discount structures are possible with a standard WooCommerce coupon.


Free vs. Pro distinction

The “Requires code” delivery mode itself is available in the free version of Smart Cycle Discounts for percentage, fixed, and BOGO campaigns. Tiered, spend threshold, and bundle discount types โ€” and bulk unique-code generation โ€” require the Pro upgrade.

Why code-gated campaigns stay invisible on product pages

This is by design, and it matters to understand why.

Auto-apply campaigns apply the discount through WooCommerce’s price filters on each targeted product. That’s what produces the strikethrough price and the sale badge on the product page on your storefront. (The discount is applied at display time rather than written to the stored sale price, so it won’t appear in stored-data “On Sale” filters.)

Code-gated campaigns don’t surface a sale price on the product page. The product page still shows the regular price โ€” because the discount only activates when a qualifying code is presented at checkout. Showing a sale price before anyone has applied a code would be inaccurate and confusing. The wizard in Smart Cycle Discounts includes an explicit visibility note on this when you configure a code-required campaign, so there’s no guessing about what customers will see.

This has a practical implication: if you want the promotional price to be visible on the product page, auto-apply is the right mode. If you’re running a subscriber exclusive or B2B code and you specifically don’t want the discounted price visible to all visitors, the invisibility is a feature.

URL auto-apply: sharing codes that apply themselves

Code-gated campaigns in Smart Cycle Discounts support URL auto-apply via the ?wsscd_code=YOURCODE query parameter. When a customer clicks a link containing that parameter โ€” in an email, a social post, a transactional message โ€” the code is applied to their cart automatically when they land on the cart page.

This removes the manual entry step without removing the code-gate entirely. The code still controls access. The campaign still fires only for people who followed the specific link. But the friction of “remember to type your code at checkout” disappears.

For email campaigns, this is particularly useful: you include a “Shop the sale” link that pre-applies the code, and subscribers who click through get the discount without needing to copy-paste anything. Non-subscribers browsing the store directly see regular prices.

As of Smart Cycle Discounts 2.1.1, a dedicated “Copy share link” button on each code’s admin row generates the URL automatically โ€” you don’t have to construct it by hand.

Pre-launch intelligence warnings for code-gated campaigns

Before you launch a code-gated campaign, Campaign Intelligence in Smart Cycle Discounts runs four checks specific to the code delivery mode. These aren’t run on auto-applied campaigns โ€” they’re specific to the risks that arise when a discount is activated by a code.

Conflict with auto-applied campaigns on the same products

If you have an auto-applied campaign running on some of the same products as your new code-gated campaign, Campaign Intelligence flags the overlap. When a customer enters the code, they get the coupon discount instead of the sale price โ€” which may or may not be what you intended. The warning tells you how many products overlap and which campaign is the other party, so you can adjust priorities or product targeting before launch.

Stacking on top of native WooCommerce sale prices

For percentage-off code-gated campaigns, Campaign Intelligence checks whether any of the targeted products already have a WooCommerce sale price set. If they do, the effective discount when a customer enters the code will be higher than your campaign percentage โ€” the code discount stacks on top of the already-reduced price. The warning shows you the range of effective combined discounts, so you can decide whether to adjust the campaign discount value or exclude the already-on-sale products.

This is the kind of problem that’s easy to miss at launch and hard to explain to customers afterward. If you’ve ever given away more margin than intended on a promotion, a stacking scenario like this is one of the most common causes. The guide on WooCommerce discount stacking covers the mechanics in detail if you want to go deeper.

Schedule overlap with another code-gated campaign

If two code-gated campaigns are active during the same window on overlapping products, customers can only apply one code. The higher-priority campaign’s discount wins. Campaign Intelligence surfaces this before launch so you can decide whether the overlap is intentional or whether you need to stagger the campaigns or adjust priorities.

Redemption velocity vs. usage cap

Once a code-gated campaign is running and has accumulated redemption data, Campaign Intelligence monitors the redemption rate and projects whether the campaign will exhaust its usage cap before the scheduled end date. If the current pace will burn through the cap three days before the campaign ends, you’ll see a warning showing the redemptions-per-day rate, the projected exhaustion date, and the days remaining.

This gives you the option to act โ€” raise the cap, pause the campaign, or send a “last chance” email โ€” before the cap runs out silently mid-campaign and customers start seeing errors when they try to apply the code.


These are advisory warnings, not launch blockers

Campaign Intelligence presents these as caution-level warnings, not hard stops. You can launch a code-gated campaign with any of these flags active โ€” the system is surfacing information, not gatekeeping. The point is to make sure you’ve made the decision consciously, not accidentally.

Stacking: what happens when a code runs alongside auto-applied discounts

The stacking behavior between a code-gated campaign and other active discounts is one of the nuances worth understanding before launch, not during.

When a customer enters a code from a code-gated campaign, the campaign’s discount fires at the coupon level. If an auto-applied campaign is also active on the same products, the priority system determines which discount the product carries. The code-gated campaign’s coupon then applies on top of whatever price the customer already sees.

Depending on your configuration, this can mean:

  • The code-gated campaign overrides the auto-applied discount (if it has higher priority)
  • The code applies on top of an already-discounted price (stacking, intentional or not)
  • The outcome is a combined discount significantly deeper than either campaign on its own

The Campaign Intelligence stacking check covers the most common scenario (code on top of native sale prices for percentage-type campaigns), but it’s worth thinking through the full picture for your specific setup. The discount stacking guide has a systematic way to audit this across your active campaigns.

If you need a code-gated campaign that explicitly does not stack with other active discounts, Smart Cycle Discounts’ Pro combination policy controls let you configure that per campaign.

Single-use codes and bulk code generation

A shared code โ€” one code that everyone uses โ€” works for email campaigns, influencer partnerships, and most of the use cases above. But it carries one unavoidable limitation: once the code leaves your hands, you can’t control where it goes.

Any code shared with more than a handful of people will eventually end up on deal aggregator sites. Browser extensions like Honey actively test and distribute codes. A code that was intended for your 2,000-person loyalty list can be redeemed by tens of thousands of strangers within 24 hours of appearing on a coupon site.

For situations where that’s unacceptable โ€” high-value rewards, truly exclusive offers, or any promotion where you need one redemption per recipient โ€” single-use codes are the more robust option. Smart Cycle Discounts Pro supports bulk generation of up to 50,000 unique codes per campaign, exportable as CSV for mail merge into your email platform. Each code can be locked to one redemption globally or one redemption per customer.

The guide to single-use WooCommerce coupon codes covers the setup workflow and the tradeoffs in detail if this is the path you’re heading down.


Treat any shared code as public the moment it leaves your hands

Shared codes and public accessibility aren’t a technology problem โ€” they’re a behavioral reality. Once a code exists and more than a small number of people have it, someone will share it. Design your campaigns with that assumption built in: set a usage cap that limits total redemptions, use an expiry window that limits the damage window, and consider single-use codes for genuinely exclusive offers. The coupon abuse patterns this creates are covered in the guide to spotting coupon abuse in WooCommerce.

Decision table: which delivery mode for which use case

Use this table as a quick reference when deciding which delivery mode fits a specific promotion. If a use case appears twice, the context column explains what makes the difference.

Use case Delivery mode Why
Sitewide sale Auto-apply No access control needed; friction reduces conversion
Flash sale with countdown Auto-apply Sale badge and strikethrough price are part of the urgency signal
BOGO for all customers Auto-apply Visible on product pages; no friction
Email subscriber exclusive Requires code Only code-holders (subscribers) get access; invisible to casual browsers
Influencer / affiliate code Requires code Each code = one attribution channel; tracks per-partner ROI
Loyalty milestone reward Requires code Earned status; intentional friction; access controlled to the individual
Wholesale / B2B pricing Requires code Retail customers must not see or access the B2B price
Win-back offer (lapsed customer) Requires code Personal, capped offer; shouldn’t be visible on product pages or broadly accessible
BOGO subscriber exclusive Requires code Access control matters; native WooCommerce coupons can’t deliver BOGO โ€” a code-gated campaign can
Tiered pricing for email list Requires code Native coupons can’t deliver tiered pricing; a code-gated campaign does
Public sale + subscriber bonus Both together Auto-apply for the public discount; code-gated for the subscriber top-up

Frequently asked questions

What is a code-gated WooCommerce discount campaign?

A code-gated WooCommerce discount campaign is a promotion that only fires when a customer enters a specific coupon code at checkout. Unlike auto-applied discounts โ€” which activate automatically for any qualifying customer โ€” code-gated campaigns require the customer to hold the code before they can access the discount. The discount then appears as a standard coupon line in the WooCommerce cart and order totals.

How is a code-gated campaign different from a standard WooCommerce coupon?

A standard WooCommerce coupon supports three discount types: percentage off, fixed cart discount, and fixed product discount. A code-gated campaign built through a plugin like Smart Cycle Discounts can use any discount type โ€” including BOGO, tiered volume pricing, spend threshold discounts, and bundles โ€” all delivered via a code at checkout. Code-gated campaigns also have a scheduled active window, campaign-level intelligence verdicts, product targeting, and priority controls that native WooCommerce coupons don’t provide.

Does a code-gated campaign show a sale price on the product page?

No โ€” intentionally. A code-gated campaign keeps product pages at the regular price. The discount only appears after the customer enters the code at checkout. This is by design: the discount is private, and showing a reduced price on the product page before anyone has applied a code would be inaccurate. If you want the discounted price visible on product pages, auto-apply is the correct delivery mode.

Can I run an auto-applied campaign and a code-gated campaign at the same time on the same products?

Yes, but the interaction depends on your priority settings and configuration. The higher-priority campaign’s discount applies to the product price. When a customer then enters a code from the code-gated campaign, they get the coupon discount on top of whatever price the auto-applied campaign produced. Whether that stacking is intentional or accidental is a question of configuration. Campaign Intelligence flags this overlap before launch so you can make the decision consciously rather than discover it through unexpected margin impact.

What is URL auto-apply for a code-gated campaign?

URL auto-apply lets you share a link that includes the code in the URL โ€” for example, https://yourstore.com/cart/?wsscd_code=YOURCODE. When the customer clicks the link and lands on the cart page, the code is applied automatically without them needing to type it. The discount still requires the code (it’s still code-gated), but the entry friction is removed for customers who follow the link. In Smart Cycle Discounts 2.1.1, the admin adds a “Copy share link” button next to each code to generate the URL for you.

What happens if my code gets shared publicly on a coupon site?

Any shared code is effectively public once it reaches more than a handful of people. Browser extensions like Honey test codes automatically; deal-aggregator sites collect them. The mitigations are: set a usage cap that limits total redemptions, use a short active window, and for genuinely exclusive offers, switch to bulk single-use codes (one unique code per recipient). Single-use codes in Smart Cycle Discounts Pro can be locked to one redemption per code or one redemption per customer, making sharing useless. The WooCommerce coupon abuse guide covers the full range of patterns to watch for.

Can code-gated campaigns work with WooCommerce block checkout?

Yes. Smart Cycle Discounts fully supports WooCommerce block cart and checkout (WooCommerce 8.3+). Code-gated campaigns use WooCommerce’s native coupon field, which is present and functional in both the classic template and the block-based checkout. The discount appears as a standard coupon line in totals in both layouts.

How do I choose between a single shared code and bulk unique codes?

Use a shared code when the promotion is intended for a defined group and the risk of it spreading beyond that group is acceptable โ€” or when having a usage cap on the total number of redemptions is sufficient control. Use bulk unique codes (Pro) when every recipient needs to be individually accountable: high-value loyalty rewards, situations where you need to prevent sharing, or promotions where one redemption per recipient is a hard requirement. Bulk code generation in Smart Cycle Discounts Pro supports up to 50,000 codes per campaign, exportable as CSV for import into your email platform.


What to take from this

  • Auto-apply is for open promotions where you want every qualifying visitor to benefit without any friction. Code-gated is for access-controlled offers where the code proves the customer qualifies.
  • Code-gated delivery works across every discount type in Smart Cycle Discounts โ€” not just percentage/fixed like native WooCommerce coupons. That unlocks BOGO exclusives, tiered pricing by code, spend-threshold loyalty rewards, and subscriber-only bundle deals.
  • Code-gated campaigns stay invisible on product pages by design. The sale badge and strikethrough price only appear with auto-apply campaigns.
  • URL auto-apply removes the entry friction without removing access control โ€” the code is still required, it’s just pre-applied via a link parameter.
  • Campaign Intelligence runs four code-specific pre-launch checks: conflict with auto-applied campaigns, stacking on native sale prices, schedule overlap with another code-gated campaign, and redemption velocity vs. usage cap. None are hard stops โ€” all are information for you to act on.
  • Any shared code should be treated as public. Set a usage cap, keep the active window short, and use single-use codes for genuinely exclusive, high-value offers.

Run code-gated campaigns alongside your existing promotions

Smart Cycle Discounts supports both delivery modes โ€” auto-apply and requires code โ€” across all discount types, with Campaign Intelligence watching for conflicts before launch.

W

Webstepper

WordPress & WooCommerce Plugin Studio

We build WooCommerce plugins and write honest, practical guides for store owners. No hype โ€” just the mechanics of running a better store.