What to Do When a WooCommerce Sale Goes Wrong
WooCommerce Store Operations
When the Sale Fires Wrong, Here’s What You Do
A practical crisis response guide for store owners β from the moment you realise something went wrong, to communicating with customers, assessing the damage, and making sure it never happens this way again.
It starts with a Slack message, a panicked email from a staff member, or a customer screenshot that makes your stomach drop. Something is wrong with the sale. The product is showing $0. The 50% discount was supposed to be 5%. The promotion you set for 48 hours has been running for nine days. Orders are coming in at prices that make no sense.
Every store owner who runs promotions at scale eventually has this moment. The variables change β it might be a wrong percentage, a misconfigured product selection, a date field left blank, or two campaigns stacking in a way nobody anticipated. But the shape of the problem is the same: real money is moving at the wrong price, and you need to deal with it right now.
What you do in the next hour β and how you handle it with customers β will define your brand more than the mistake itself. This guide covers the full response: stopping it, understanding what happened, communicating with customers, and building the processes that reduce the chance of it happening again.
It happens to everyone eventually
Before we get into the response playbook, it’s worth naming some of the real scenarios that show up repeatedly in WooCommerce support forums and store operator communities. You may recognise your own situation in one of these.
Common scenarios from real stores
The $0 product. A store owner sets up a “fixed amount” discount equal to the product price, not realising WooCommerce will display $0 and accept orders at that price. 14 orders before anyone catches it.
The extra zero. A 5% discount is entered as 50% β a single keystroke error. The store notices after 30 minutes and Β£2,400 in revenue at half margin.
The never-ending sale. An end date is left blank. The campaign was meant to run for a weekend. It runs for six days before a customer asks why the “48-hour flash sale” is still going.
The wrong product set. A campaign targeting “Summer Collection” accidentally includes the entire store because someone selected “All Products” instead. The 30% sale that was meant for 18 items applies to 400 products for 4 hours.
The invisible stack. Two campaigns overlap. One is a category discount, the other a site-wide promotion. The store’s plugin applies both. Some products are now 55% off instead of 30%.
None of these are the result of carelessness or incompetence. They’re the result of complexity β of managing multiple campaigns, product selections, discount types, and date fields, usually under time pressure, often close to midnight before a sale launches. The conditions that produce mistakes are the normal conditions of running a real store.
What separates stores that recover well from those that turn it into a longer crisis is the quality of their response.
The first 10 minutes: stop the bleeding
Your first job is not to understand what happened. It’s to stop more orders from coming in at the wrong price. Understanding comes second. In the heat of the moment, the urge to diagnose is strong β resist it long enough to act.
Work through this sequence:
-
Deactivate or pause the campaign immediately
If you’re using a campaign management plugin, pause or deactivate the offending campaign first. This is faster than editing individual products and it stops the discount source. If you’re using native WooCommerce scheduled sale prices, go to the affected products and clear the Sale Price field β but if there are many products, this takes time. Deactivating the plugin campaign is the faster lever.
-
Enable maintenance mode if orders are still coming in fast
If the wrong price is generating a high volume of orders per minute and you need more time to fix things without accumulating more liability, enable maintenance mode temporarily. A plugin like WP Maintenance Mode takes 30 seconds to activate. This is a last resort β it blocks all visitors β but it’s better than having 50 more orders arrive while you’re diagnosing. Turn it off as soon as the price issue is resolved.
-
Verify the fix is live on the frontend
Open an incognito window and check the product page. Does the price look correct? If you’re seeing a cached version of the wrong price, clear your site’s cache. If you use a managed host with server-level caching (Cloudflare, WP Rocket, LiteSpeed Cache), clear that too. Don’t assume the fix is live until you’ve verified it in a clean session.
-
Note the exact time the problem started and ended
Before you do anything else, check your WooCommerce order list and note the timestamp of the first affected order and the timestamp of when you made the fix. This window β start to fix β is your damage assessment range. You’ll need it in the next step.
Don’t start editing individual products first
The instinct when you see a wrong price is to go to the product page and fix it. If the discount is coming from a campaign or plugin, editing the product won’t fix the source β and you may have 50, 200, or 400 affected products. Fix the source (the campaign or plugin configuration) before touching individual product records.
Assess the damage: what actually happened?
Once the wrong price is stopped, you need a clear picture of the impact. This determines your next moves β how many customers to contact, what the financial exposure is, and what operational response is appropriate.
Pull the affected orders
In WooCommerce, go to WooCommerce β Orders. Filter by date range using the window you noted (from when the problem started to when you fixed it). If the error affected specific products, you can also use the search to find orders containing those product names.
Export this list to CSV (there’s a built-in export under WooCommerce β Orders β Export). You now have your affected order set.
Calculate the financial impact
For each affected order, the financial impact is:
- Revenue collected at wrong price (what the customer paid)
- Revenue at correct price (what they should have paid)
- Difference = your direct financial exposure per order
Sum the differences across all affected orders. That’s the number you’re working with. For a $0 product, every order is pure loss. For a 50% vs. 5% error, you’re missing 45% of planned revenue on each affected line item. Get this figure before you make any decisions about honoring or canceling orders β you need to know what you’re absorbing.
Segment the orders by status
Not all affected orders are equal in terms of what you can do about them:
| Order Status | What It Means | Your Options |
|---|---|---|
| Pending payment | Payment not collected yet | Cancel the order β payment hasn’t cleared, so there’s no customer harm |
| Processing | Payment captured, not yet shipped | You can cancel with a full refund, or honor β this is your main decision point |
| Completed | Shipped or delivered | You almost certainly honor β chasing a refund after delivery is not viable |
| On hold | Awaiting manual review or stock | Cancel before processing completes β the cleanest option |
The orders still in “Processing” status are where you have a genuine decision to make. The ones already completed β shipped, downloaded, or delivered β are effectively final. The ones in “Pending” that haven’t been paid are the simplest to resolve.
Check for patterns in who ordered
This matters more than it sounds. Look at whether the affected orders came from a broad cross-section of customers, or whether a concentrated group ordered many times in a short window. A cluster of orders from new accounts created in the last hour, all shipping to similar addresses, or all using a payment method you’ve seen before in suspicious contexts β these are signals that word of the error spread and some customers deliberately exploited it.
This doesn’t change the legal picture much (they placed valid orders at the price shown), but it may affect your emotional willingness to honor those particular orders and can inform future monitoring.
Talking to customers: what to say and how
This is where most stores make their second mistake. The first mistake was the wrong price. The second is communicating badly about it.
The core principle is this: communicate before they ask. If a customer placed an order at the wrong price and you’re going to cancel it or change anything about it, they should hear from you first β not find out when they check their bank statement or when the parcel doesn’t arrive.
When you’re honoring the orders
This is the simplest communication scenario. The customer doesn’t need to know there was an error β they placed an order, it’s being fulfilled. You can send a brief, warm confirmation:
Email template: honoring the order
Subject: Your order from [Store Name] β confirmed
Hi [First Name],
Thanks for ordering. Your order #[number] is confirmed and we’re getting it ready for you. You’ll get another email when it ships.
We noticed an issue with our pricing on the site earlier today and we’ve corrected it β but your order was placed under the sale terms and we’ll be honoring it exactly as you saw it at checkout.
If you have any questions, just reply here.
[Store Name]
You don’t have to include that last paragraph β disclosing the error is optional when you’re fulfilling. But if the customer is likely to notice (e.g., the price was dramatically lower than anything you’ve ever sold), it’s better to name it plainly than to have them wonder.
When you’re canceling the orders
This is harder. You’re telling someone their order isn’t happening β something they didn’t cause and didn’t know was coming. The communication needs to be:
- Fast: Don’t sit on this for 24 hours. Same day is the minimum, within a few hours is right.
- Direct: Say what happened. Don’t bury the cancellation in vague language.
- Clear about the refund timeline: If they paid, tell them exactly when they’ll see the money back.
- Human in tone: They didn’t do anything wrong. An apology is warranted and should feel genuine, not corporate.
Email template: canceling with a full refund
Subject: Important update on your order #[number]
Hi [First Name],
I need to let you know about an issue with your recent order from [Store Name].
We had a pricing error on our site earlier today β [product name] was showing an incorrect price that we hadn’t intended. We caught it and corrected it, but some orders came in at the wrong price while the error was live, and yours was one of them.
We’ve cancelled order #[number] and issued a full refund. You should see the money back in your account within [3-5 / your bank’s] business days, depending on your bank.
I’m genuinely sorry for the inconvenience. If you’d like to purchase [product name] at the correct price of [Β£X], here’s a direct link: [link]. As a small apology for the hassle, we’ll honour a 10% discount on your next order β use code [CODE] at checkout, valid for the next 14 days.
If you have any questions at all, just reply here and I’ll get back to you personally.
[Your name]
[Store Name]
A few notes on this template: the goodwill discount is optional and should scale with how badly you feel about the situation. A 10% code for a minor inconvenience is appropriate. For something like a $0 product where the customer was genuinely excited and now disappointed, a larger gesture makes sense. Don’t offer goodwill codes when you’re not genuinely sorry β customers can tell.
Tone matters more than the decision
This is the part that gets lost in operational mode. Whether you honor or cancel, the tone of how you communicate it leaves a lasting impression. A cold, template-heavy email that talks around the error, uses passive voice, and buries the refund information will generate complaints and negative reviews even when you did the “right” thing financially. A warm, clear, honest message that acknowledges the mistake directly will often generate understanding β even loyalty β even when you cancel.
People remember how they were treated in moments of friction more than they remember the products themselves.
The hardest call: honour the wrong price or cancel?
There’s no universal right answer here. It depends on your margin situation, the size of the error, the number of orders, and your read of the customer base. But here’s the framework most experienced store operators use:
The factors that push toward honoring
- The error was small β a 50% vs. 40% discount, not a 99% markdown
- You can absorb the financial impact without operational strain
- The orders are from identifiable, genuine customers (not a pattern of exploitation)
- The products are digital or have high margins even at the wrong price
- Your brand positioning depends on trustworthiness and doing right by customers
- The error ran for a short time with few orders
The factors that push toward canceling
- The error was extreme β a $0 product, a 95% discount on a physical good
- The volume of orders is high enough to create a real financial hardship
- The orders show signs of exploitation (many from new accounts, concentrated in a short window)
- The products are physical goods with fulfillment cost that makes shipping at a loss unreasonable
- Your business is small enough that absorbing the loss would genuinely hurt operations
What the law says (briefly)
Advertised price obligations vary by jurisdiction, and you should check what applies where your business is registered. In the US, a general legal principle is that a website price listing is an “invitation to treat” rather than a binding offer β the contract forms when you accept and fulfill the order, not when the customer clicks “buy.” This gives you some legal room to cancel orders placed at an erroneous price, as long as you refund promptly and don’t use it as a pattern.
In the UK and EU, consumer protection law is stricter. If a price was advertised and the customer reasonably relied on it, there’s a stronger expectation that the price is honored β though courts have generally not required businesses to fulfill orders at obviously erroneous prices (like a product listed at Β£0.01 instead of Β£999). If the wrong price was plausibly within a normal sale range, the argument for honoring it is stronger.
This is not legal advice
The above is a general orientation, not a substitute for checking with a lawyer familiar with your jurisdiction. Consumer contract law varies significantly, and if you’re dealing with a large financial exposure, a 30-minute legal consultation is worth it before you decide.
The practical middle ground
Many stores that cancel still offer the correct price with a genuine discount attached β 15-20% off the right price, as a goodwill gesture. This is often the best of both worlds: you’re not fulfilling at an impossible price, but the customer gets something real out of their experience. If they convert on that offer, you’ve turned a crisis into a sale at a healthy margin.
The internal post-mortem: how did this happen?
Once the immediate situation is resolved, schedule a quick post-mortem. Not to assign blame β to understand the root cause well enough to fix it. Most sale errors come from one of six places:
1. Wrong discount value
Someone entered 50 instead of 5, or 100 instead of 10. This is almost always a data entry error under time pressure. The fix isn’t “be more careful” β it’s adding a review step or a preview that shows what the discount will look like on a real product price before launch.
2. Wrong product selection
The campaign targeted more products than intended. “All Products” was selected instead of a specific collection. A category was broader than expected. A product tagged incorrectly ended up in the selection. The fix is reviewing the affected product count before launch β if you expect 20 products and the count shows 400, you know something is wrong.
3. Wrong dates or no end date
The end date was left blank, set to the wrong year, or set in the wrong timezone. Campaign scheduling is the area where date handling errors are most common, especially when stores are in one timezone and their server is in another. The fix is always reviewing the scheduled start and end times in a second pass before saving.
4. Conflicting campaigns stacking
Two campaigns overlapped and both applied their discounts to the same product β resulting in a combined discount deeper than either was intended to be. If your tooling allows stacking, and you have multiple campaigns running, this is a constant risk. Understanding how your campaigns interact is part of operating safely at scale.
5. Wrong discount type
“Fixed amount” vs. “percentage” is a common mix-up. A fixed Β£50 discount on a Β£40 product will show as Β£0 or go negative. A 50% percentage discount on a product someone thought was set up as a fixed-amount campaign applies an unintended deep cut. The fix is having the discount type visible and explicit in any review step before the campaign goes live.
6. The “test campaign that became live” problem
A campaign built for testing purposes β set to immediate activation, no end date, broad product selection β accidentally gets saved and activated in a production environment instead of being left in draft. This is specifically a workflow problem: no clear separation between test configurations and live ones.
Write down the root cause
Don’t just fix it and move on. Write a single sentence that captures what went wrong: “End date left blank β assumed it would default to today rather than no expiry.” That sentence is what drives a specific process change, not a vague commitment to “double-check things.”
Building the safeguards to prevent it next time
The right response to a sale error is a specific process change, not a general resolve to be more careful. Here are the safeguards worth building into your regular workflow.
A pre-launch campaign checklist
Before any campaign goes live, run through this list β physically or digitally, it doesn’t matter, but it has to be a real check, not a mental skim:
- Discount value: Does it match the intended percentage or fixed amount?
- Discount type: Percentage, fixed amount, or BOGO β is it set correctly?
- Product selection: How many products are in scope? Does that number make sense?
- Start date and time: Is it correct, in the right timezone?
- End date and time: Is it set? Is it correct?
- Conflict check: Are there other active or scheduled campaigns that cover the same products in the same window?
- Preview the discount: What does a product in this campaign actually show as its sale price? Is it a number that makes sense?
Two minutes before launch, not after.
A staging environment for campaign testing
If you’re making significant campaign configurations β new discount types, complex product selections, custom rules β test them on a staging copy of your store first. Most managed WordPress hosts provide staging environments one click away. Set the campaign up, place a test order, confirm the price calculation is right, then replicate the configuration on production.
This adds 20 minutes to the process and has prevented problems that would have cost hours β and the goodwill of real customers.
Pre-launch conflict detection
If you run multiple campaigns simultaneously, you need a way to know before launch whether the new campaign will conflict with anything already running. Manually cross-referencing campaign product lists and date ranges is error-prone as soon as you have more than three or four active campaigns.
Smart Cycle Discounts has a Campaign Health Check feature that runs before a campaign launches β it checks for product overlaps with other active campaigns, validates that the timing won’t create a conflict window, and flags stock exposure warnings if a product is low on inventory and about to get a deep discount. It doesn’t stop you from launching, but it surfaces the risks explicitly so you can review them before the campaign goes live rather than discovering them when orders arrive at the wrong price.
Whether you use that or build your own manual review process, the goal is the same: see the conflicts before they happen, not after.
Monitoring during the first 30 minutes of a live campaign
When a campaign goes live, especially one you’ve set up for the first time or that’s using a new configuration, check the first few orders manually. Go to WooCommerce β Orders, filter to today, and look at what the first two or three customers actually paid. Does the price match what you intended?
This one habit β 60 seconds of checking after launch β catches the majority of errors before they accumulate into a real problem. Most of the horror stories in support forums involve errors that ran for hours because nobody checked the first order.
Set up order notifications for unusual activity
Configure WooCommerce email notifications so you get an email for every new order. If you’re running a campaign and suddenly see 15 orders arrive in 10 minutes for a product that normally sells twice a day, that’s a signal worth investigating. WooCommerce’s default admin email notification for new orders is a basic version of this β make sure it’s enabled.
For higher-volume stores, a simple Zapier automation that sends you a Slack or SMS notification for orders above or below certain thresholds can serve as an early warning system for pricing anomalies.
A “break glass” plan for when it does happen
Keep a short document β even a note in your phone β that lists the exact steps to stop a broken campaign. Who has admin access. Where the campaign settings are. Where the WooCommerce maintenance mode plugin is. What the site cache login is.
In the first moments of a pricing error, you’re running on adrenaline. Having the steps written down means you take them in the right order without forgetting that verifying the fix in an incognito window is step 3, not something you do an hour later.
Frequently asked questions
Can I cancel WooCommerce orders that were placed at the wrong price?
Technically yes, in most jurisdictions β especially if the price error was obvious (like a $0 product) and you act quickly with a full refund. The legal specifics depend on where your business operates. In the US, there’s more flexibility. In the UK and EU, consumer protection rules are stricter. Regardless of jurisdiction, refunding promptly and communicating honestly gives you the strongest position and the best chance of a good customer outcome.
What if a customer already received the item before I caught the error?
At that point, you’ve almost certainly already fulfilled your end of the transaction. Asking for the item back or the price difference creates far more customer friction and reputational risk than the financial exposure of honoring the sale. The practical answer is: absorb it, learn from it, and chalk it up to process cost. The exception is if the purchase was clearly exploitative (someone who ordered 40 units of a $0 product in 10 minutes) β in that case a conversation is warranted, but even then, the legal position is complicated once the goods are delivered.
How do I know which orders were affected if the error ran for several hours?
Filter WooCommerce orders by date range, using the window from when the wrong campaign started to when you fixed it. Export to CSV and look for orders containing the affected product or products. If the error was a site-wide campaign, all orders in that window are potentially affected. Cross-reference the order totals against what the correct prices would have been β the difference shows up clearly.
Should I publicly acknowledge the error on social media or my website?
Only if customers are already talking about it publicly. If the error was contained, discovered quickly, and resolved without a lot of customer-facing visibility, there’s no benefit to broadcasting it. If you see tweets or comments asking what happened to the sale price, or if customers are actively discussing it in public, a brief, honest acknowledgment β “We had a pricing error earlier today, it’s been corrected, affected customers have been contacted” β is better than silence. Don’t be defensive and don’t over-explain.
Can two WooCommerce discount plugins apply at the same time and create a stack?
Yes, and this is one of the more common causes of unintended deep discounts. If Plugin A applies a 30% discount and Plugin B also applies a 20% discount to the same product, the customer may end up with both β though exactly how this stacks depends on how each plugin hooks into WooCommerce’s price filters. The safest approach is to run one discount campaign manager at a time, or use a plugin that has an explicit anti-stacking mechanism. Check your plugin’s documentation for how it handles priority and conflict resolution.
How do I issue a bulk refund for all affected orders?
WooCommerce doesn’t have a native bulk refund tool. Your options are: process refunds individually from each order page (tedious but reliable); use a plugin like WooCommerce Order Refunds or a payment gateway’s bulk refund feature if your gateway supports it; or, for large volumes, contact your payment processor directly β some can process batch refunds on request. If the volume is significant, start with the largest-value affected orders first while you work through the rest.
Will my payment gateway flag this as unusual if I issue many refunds at once?
Possibly. A sudden spike in refunds can trigger risk flags with some payment processors. It’s worth sending a brief note to your payment gateway’s merchant support explaining the situation before you process a batch of refunds β most processors understand pricing error scenarios and appreciate the proactive communication. This is especially important if you’re with a newer processor or if you’ve had any previous disputes.
Wrapping up
A sale that goes wrong is not a catastrophe. It’s an operational incident β the kind that every store running active promotions will eventually face. The stores that come out of it well are not the ones that never make errors; they’re the ones that respond quickly, communicate honestly, and build something useful out of the experience.
The first 10 minutes are about stopping the problem. The next hour is about understanding it. The communication is where your brand gets defined. And the post-mortem is where you earn back the time this cost you β not by dwelling on it, but by turning it into a specific process that makes the next campaign safer to run.
The one thing worth remembering: your customers will mostly forgive a pricing mistake. What they won’t forgive is finding out about it from their bank statement instead of from you.
Key Takeaways
- Stop the source first β deactivate the campaign or plugin before editing individual products. Fixing the source is always faster.
- Note the exact start and end time of the error window before doing anything else β you’ll need it to pull the affected orders.
- Communicate before customers have to ask. A proactive email β even a short one β changes the entire dynamic of how people respond to the situation.
- The honor-vs-cancel decision depends on the size of the error, your financial position, and the customer context. There is no universal right answer β but there is a wrong communication tone.
- Every sale error has a specific root cause. Write it down and make one concrete process change. “Be more careful” is not a fix.
- A pre-launch checklist reviewed before every campaign goes live catches the majority of errors before they reach customers.
- Check the first 2-3 orders of any new campaign manually, within 30 minutes of launch. Most problems are stoppable before they compound.
Want to catch campaign errors before customers do?
Smart Cycle Discounts runs a Campaign Health Check before any campaign goes live β flagging conflicts, timing issues, and stock exposure warnings so you can review and fix them before the first order arrives. Free to start.