What Is a WooCommerce Campaign Priority and Why It Decides Who Wins a Discount Conflict
WooCommerce Campaign Operations
One Product. Two Campaigns. Only One Gets to Win.
WooCommerce campaign priority is the number that decides which discount applies when two active campaigns target the same product at the same time. This guide explains the exact resolution logic, the tie-break rule, the optional Smart mode, and how to assign priorities so the right campaign always wins.
You have two campaigns active at the same time. Campaign A is a site-wide spring sale at 15% off. Campaign B is a product launch promotion at 25% off, targeting 40 new-arrival items. Twenty of those items are also covered by Campaign A.
Which discount do those 20 products get? 15%? 25%? Both somehow combined? The answer depends on one thing: campaign priority. And if you’ve never deliberately set it, the answer is “the default” โ which may not be what you intended.
WooCommerce campaign priority is a number you assign to each campaign that determines which campaign’s discount wins when two campaigns compete for the same product. Understanding how it works means understanding exactly what happens in your store when promotions overlap โ before a customer sees the wrong price.
What Campaign Priority Actually Means
WooCommerce campaign priority is the resolution mechanism that decides which of two overlapping campaigns applies its discount to a given product. In Smart Cycle Discounts, every campaign carries a priority value on a 1-to-5 integer scale. When a product is covered by more than one active campaign simultaneously, the campaign with the higher priority number wins โ and only that campaign’s discount applies to the product. The lower-priority campaign is skipped for that specific product, but continues to apply normally to all its other non-overlapping products.
Priority does not affect how large a discount is. A campaign at priority 5 does not give a bigger percentage โ it just wins the conflict. A 10% campaign at priority 5 will override a 30% campaign at priority 3 every time. The number is about resolution order, not discount magnitude.
The default priority for every new campaign in Smart Cycle Discounts is 3. If you never change it, every campaign you create starts at the same level โ which means any overlap between them has no clear winner by priority, and the system must use a secondary rule to resolve it.
No stacking โ one winner per product
Smart Cycle Discounts does not stack campaign-on-campaign discounts. When two campaigns overlap on the same product, exactly one wins. There is no averaging, no combining, no compound discount. The priority system is a clean selection: one campaign applies, the other doesn’t โ for that product, in that moment. If you’re trying to understand the broader question of how discounts interact across different mechanisms (campaigns, coupons, sale prices), the guide on the WooCommerce discount stacking problem covers that full taxonomy.
The 1-to-5 Scale and What Each Level Is For
Smart Cycle Discounts uses a fixed 1-to-5 integer scale for campaign priority, where 5 is the highest and 1 is the lowest. Each level has a natural meaning that maps to the real promotional hierarchy most stores use:
| Priority | Label | Designed for | Typical examples |
|---|---|---|---|
| 5 | Highest | Campaigns that must override everything else, no exceptions | Flash sales, emergency clearance, time-critical launches |
| 4 | High | Targeted, strategic promotions with higher discount specificity | Product launches, VIP offers, category spotlights |
| 3 | Medium (Default) | Standard campaigns โ the working default for most promotions | Seasonal sales, weekend deals, recurring promotions |
| 2 | Low | Background discounts that should yield to almost anything more specific | Loyalty incentives, mild site-wide discounts |
| 1 | Lowest | Catch-all baseline discounts โ applies only when no other campaign wins | Evergreen “5% off everything” as a standing incentive |
The scale is intentionally narrow. Five levels force you to think in tiers โ not to invent fine-grained orderings between individual campaigns, but to assign campaigns to a meaningful bucket based on their strategic role.
The most useful reframe: instead of asking “which campaign is more important,” ask “which campaign should win when this product appears in both?” A site-wide 15% sale might be important strategically, but it should lose to a targeted 30% product launch campaign on the products they share. Give the targeted campaign priority 4, keep the site-wide sale at priority 2, and the conflict resolves cleanly every time those products overlap.
How Priority Resolution Works Mechanically
When a customer visits a product page or adds a product to their cart, Smart Cycle Discounts evaluates which active campaigns cover that product. The resolution sequence is deterministic:
All applicable campaigns are identified
The plugin checks every active campaign whose product scope, schedule, and conditions match this specific product at this specific moment. “Active” means the campaign’s status is live and its current time falls within the scheduled window.
Campaigns are sorted by priority, highest first
The applicable campaigns are sorted descending by their priority value: 5, then 4, then 3, then 2, then 1. If campaigns are tied at the same priority, the secondary rule (campaign ID order, described below) determines their relative position within the tie group.
The top campaign wins and applies its discount
The first campaign in the sorted list โ the one with the highest priority, or the oldest campaign when priorities are tied โ wins. Its discount configuration is applied to the product. All other campaigns are bypassed for this product in this evaluation.
Lower-priority campaigns apply normally to their other products
Being overridden on one product doesn’t affect a campaign’s behavior on its other products. A site-wide sale at priority 2 that loses to a priority-4 campaign on 20 shared products still applies its discount to all the other products in its scope that no higher-priority campaign touches.
This resolution runs per-product, per-evaluation. It’s not a store-level setting โ it’s a calculation that happens every time a product price needs to be determined. That means the winning campaign can change dynamically if a campaign activates or expires while a customer is browsing.
Results are cached for five minutes
Smart Cycle Discounts caches the applicable-campaign list per product for five minutes. This means the resolution result is stable within a browser session, but a newly activated campaign may take up to five minutes to show its effect on product prices. This is intentional โ recomputing priority resolution on every page load for every product would create meaningful performance overhead on larger catalogs.
The Tie-Break Rule: What Happens When Priorities Are Equal
When two campaigns have identical priority numbers and both target the same product, Smart Cycle Discounts needs a secondary rule to produce a deterministic winner. The tie-break rule is: the older campaign wins โ meaning the campaign with the lower database ID, which corresponds to the one that was created first.
This rule is stable and consistent. The same product will always show the same campaign’s discount when the tie condition exists โ it won’t flip between campaigns across different orders or different customers. What makes ties problematic isn’t randomness; it’s that the winner is determined by creation order rather than by your intent.
Consider two scenarios:
- Expected outcome: You have a standing loyalty discount (priority 3, created six months ago) and a new spring sale (priority 3, created today). They overlap on a product. The loyalty discount wins because it was created first. You probably didn’t intend the loyalty discount to override the spring sale โ you just left both at the default priority.
- Unexpected outcome: You created a new flash sale (priority 3, created today) to override a recurring promotion (priority 3, created last year). The recurring promotion wins because it’s older. Your flash sale has no effect on the overlapping products.
The solution in both cases is identical: give the campaign that should win a higher priority number. Even raising one campaign from 3 to 4 is enough to produce a clear, intent-driven winner. The tie-break rule exists as a safety net โ not as a substitute for deliberate priority assignment.
Campaign Intelligence flags priority ties as a risk
When two active campaigns share the same priority number and overlap on the same products, Smart Cycle Discounts’ Campaign Intelligence system surfaces this as a risk condition. The health check identifies the overlapping campaigns, lists the products affected, and recommends assigning distinct priorities before the campaign goes live. The conflict detection guide on WooCommerce discount conflict detection explains the full health-check evaluation in detail.
Smart Mode: Urgency-Based Tie-Breaking
Smart Cycle Discounts offers an alternative tie-breaking mechanism called Smart mode, configured in the plugin’s display settings under the priority mode option. When Smart mode is enabled, the tie-break logic adds an urgency layer on top of the creation-order rule.
In Smart mode, when two campaigns are tied at the same top priority level, the plugin computes an urgency score for each tied campaign. The urgency score is based on time-proximity to the campaign’s start or end:
- A campaign starting within the next 24 hours receives +2 urgency points
- A campaign ending within the next 24 hours receives +3 urgency points
The tied campaign with the higher urgency score wins. If urgency scores are also tied, the system falls back to the standard creation-order rule (older campaign wins).
The practical effect: in Smart mode, an expiring campaign โ one running its final hours โ takes priority over a tied campaign that still has days left. This mirrors how most store owners would manually decide if they thought about it: “the one that’s about to end should probably win, because it’s the one the customer might have been counting on.”
Smart mode supplements, it doesn’t replace deliberate priority
Smart mode only activates within a tie group โ campaigns at the exact same priority number. It doesn’t override clear priority differences. A priority-4 campaign still beats a priority-3 campaign regardless of urgency scores. Smart mode is most useful when you’re running several similar campaigns at the same priority level and want the ending-soonest one to take precedence during its final window. For most stores, the cleaner approach is assigning distinct priorities from the start rather than relying on urgency scoring to sort out ties.
When to Set a Campaign Higher Than the Default
The default priority of 3 is appropriate when a campaign is unlikely to overlap with other active campaigns, or when you’re comfortable with the tie-break rule resolving any conflicts. But there are clear situations where you should raise or lower a campaign’s priority deliberately.
Raise priority when the campaign must override a running promotion
Flash sales are the clearest case. If you’re running a recurring weekend sale at priority 3 and you want a 24-hour flash event to override it on specific products, set the flash sale to priority 5. It will win on every product both campaigns share, for the duration it’s active. When it expires, the weekend sale resumes normally on those products โ no manual intervention needed.
Product launches follow the same logic. A new-arrivals discount at priority 4 beats the standard seasonal sale at priority 3 on the products they share. The seasonal sale still covers everything else. The launch campaign gets the correct, higher discount on its products without you needing to narrow the seasonal sale’s scope.
Lower priority when a campaign should serve as a background baseline
A site-wide “5% off everything” campaign that’s meant as a standing incentive should sit at priority 1 or 2. This way, any targeted promotion you create automatically overrides it on the products they share, without you needing to think about the interaction. The site-wide sale acts as a floor โ it applies to everything that no other campaign touches.
Loyalty discounts for returning customers often work the same way. You want them active but deferential. Priority 2 keeps them running while ensuring any seasonal or targeted promotion wins on the products it covers.
Use the mid-scale for anything that should interact normally
Priority 3 is the default for a reason. Most campaigns don’t need to override each other โ they cover different product ranges, run at different times, or are designed to be the only active promotion on their products. Leave these at 3 and only adjust when you know a conflict is coming.
| Campaign type | Suggested priority | Why |
|---|---|---|
| Flash sale / 24-hour clearance | 5 | Must override everything; short window; high urgency |
| Product launch / spotlight | 4 | Targeted, strategic โ should win over broad promotions on shared products |
| Seasonal sale / recurring weekend deal | 3 (default) | Standard promotion; adjust only if conflicts arise |
| Loyalty / returning customer discount | 2 | Background incentive; should yield to any active promotion |
| Evergreen site-wide incentive | 1 | Catch-all fallback; should only apply when no other campaign wins |
This framework works best when the whole team knows it. “Is this a flash sale or a seasonal promotion?” answers the priority question immediately. When priorities are assigned consistently by campaign type, conflicts resolve predictably even as the catalog of active campaigns grows.
Three Priority Mistakes That Cause Unintended Pricing
1. Leaving every campaign at priority 3
This is the most common mistake. Every campaign ships at priority 3 by default, and if you never change it, every campaign is equal โ which means every conflict falls back to the creation-order tie-break rule. The wrong campaign wins. Products show the wrong discount. The fix takes five seconds at campaign creation time: choose a priority level intentionally instead of accepting the default.
2. Giving the site-wide campaign the highest priority
A site-wide campaign at priority 5 blocks every other campaign on every product it covers. Your targeted product launch at priority 4 gets overridden everywhere. Your flash sale at priority 4 gets overridden everywhere. The more campaigns you add, the more the high-priority site-wide campaign suppresses them โ the opposite of what you intended.
Site-wide campaigns belong at the bottom of the priority scale, not the top. They’re the default background; everything more specific should win over them.
3. Not accounting for recurring campaigns when setting new campaign priorities
A recurring weekend sale creates a predictable overlap window. If you launch a new two-week campaign on a Wednesday, it will share time with the upcoming weekend sale. Did you set their priorities deliberately? If they share any products, one will override the other โ and if both are at priority 3, the older one wins. Check your recurring campaign schedule before launching anything new that might intersect with it. The broader guide on handling overlapping WooCommerce discounts covers the full pre-launch checklist, including how to spot recurring campaign collisions before they happen.
Key Takeaways
- WooCommerce campaign priority is a 1-to-5 integer that determines which campaign wins when two active campaigns target the same product simultaneously โ higher number wins, no stacking
- The default priority is 3 for every new campaign; if you never change it, all your campaigns are equal and conflict resolution falls back to creation-order tie-breaking
- The tie-break rule is deterministic: when two campaigns share the same priority, the older one (lower database ID, created first) wins โ this is consistent but may not match your intent
- Smart mode offers urgency-based tie-breaking within a priority level: campaigns ending within 24 hours get +3 urgency points, campaigns starting within 24 hours get +2; highest urgency wins within the tie group
- Losing a conflict doesn’t affect a campaign’s other products โ the lower-priority campaign still applies normally everywhere it doesn’t overlap with something higher
- Practical priority framework: flash sales = 5, product launches = 4, standard seasonal = 3, loyalty/background = 2, evergreen site-wide = 1
- Site-wide campaigns should have the lowest priority, not the highest โ they’re meant as a floor, and giving them priority 5 silently suppresses every targeted promotion on every product they cover
Frequently Asked Questions
What is WooCommerce campaign priority?
WooCommerce campaign priority is a number assigned to each campaign that determines which campaign’s discount applies when two active campaigns target the same product at the same time. In Smart Cycle Discounts, priority is a 1-to-5 integer scale where 5 is the highest. When a product is covered by two overlapping campaigns, the campaign with the higher priority number wins and applies its discount. The lower-priority campaign is skipped for that product but continues to apply normally to all its other products. Priority does not affect the size of the discount โ a 10% campaign at priority 5 still beats a 30% campaign at priority 3.
What happens when two WooCommerce campaigns have the same priority?
When two campaigns share the same priority number and overlap on the same product, Smart Cycle Discounts uses a tie-break rule: the older campaign wins. “Older” means the campaign with the lower database ID โ the one that was created first. This resolution is consistent (the same product always shows the same campaign’s discount under the same conditions), but the winner is determined by creation order rather than intent. Campaign Intelligence flags same-priority conflicts as a risk condition. The correct fix is to assign different priority numbers to the two campaigns so the resolution is deliberate rather than historical.
Does a campaign losing a priority conflict affect its other products?
No. Priority resolution is per-product. When a campaign loses a conflict on a specific product, it is bypassed for that product only. It continues to apply its discount normally to every other product in its scope that no higher-priority campaign also covers. A site-wide sale at priority 2 that gets overridden by a product launch at priority 4 on 20 shared products still applies its 2% discount to all the other products in its scope that the launch campaign doesn’t touch.
What is Smart mode in Smart Cycle Discounts?
Smart mode is an optional tie-breaking mechanism in Smart Cycle Discounts’ display settings. In the default Manual mode, ties between same-priority campaigns are resolved by creation order (older campaign wins). In Smart mode, ties are resolved by urgency: a campaign ending within 24 hours gets +3 urgency points, a campaign starting within 24 hours gets +2 urgency points, and the highest urgency score wins within the tied group. If urgency scores are also equal, the system falls back to creation order. Smart mode only activates within a tie group โ it does not override clear priority differences between campaigns at different priority numbers.
What priority should a site-wide discount campaign have?
A site-wide discount campaign should have a low priority โ typically 1 or 2. A site-wide campaign is meant to serve as a background baseline that applies to everything not covered by a more targeted promotion. If you give it a high priority (4 or 5), it will override every targeted campaign on every product they share, effectively suppressing your more specific promotions. Setting it to priority 1 means any other active campaign automatically wins on any product they overlap on, without you needing to configure each interaction individually.
How does campaign priority interact with WooCommerce coupons?
Campaign priority controls resolution between campaigns only โ it has no effect on WooCommerce coupons. Coupons are a separate system in WooCommerce’s architecture: they apply at the cart level, while campaign discounts apply at the product price level before the cart is assembled. A campaign discount and a coupon can both affect the same order simultaneously, regardless of the campaign’s priority. If coupon-on-campaign stacking is a concern, that requires managing WooCommerce coupon exclusion settings or, on Smart Cycle Discounts Pro, using the coupon combination policy control.
How long does it take for a priority change to take effect?
Priority changes affect the next evaluation of each product, but Smart Cycle Discounts caches campaign resolution results per product for five minutes. In practice, this means a priority change may take up to five minutes to visibly affect product prices on the frontend. Orders placed during that window will use the cached resolution. After the cache expires, the updated priority takes effect for all subsequent evaluations.
Set priorities once. Let conflicts resolve themselves.
Smart Cycle Discounts includes a 1-to-5 priority system, deterministic tie-breaking, optional Smart mode, and Campaign Intelligence that flags same-priority conflicts before they go live.