Wootrack Growth Blog

WooCommerce Google Ads Profit Tracking During Seasonal Discounts

Why Your Google Ads ROAS Lies to You During Sales Events

Black Friday arrives. You slash 30% off your best-selling WooCommerce products. Orders flood in, Google Ads reports a soaring ROAS of 600%, and the dashboard glows green. Then January comes — and your accountant hands you a profit report that tells a very different story.

This is the seasonal discount trap. When you apply a 30% discount to a product with a 40% gross margin, that margin doesn’t shrink proportionally — it can collapse entirely. A €100 product with €60 in COGS now sells for €70. After Stripe’s 1.4% + €0.25 fee, €6 in shipping, and VAT obligations, you may be looking at €2–€4 of actual profit per order. Google Ads, meanwhile, sees €70 in revenue and keeps bidding as if the economics haven’t changed.

The root cause is structural: Google’s Smart Bidding optimizes on the conversion value you send it. If that value is order revenue — which is what most WooCommerce stores pass by default — then every discount event becomes a silent profit leak that Google’s AI actively accelerates. Higher bids. More impressions. More orders at margins that barely cover costs. The ROAS number climbs because revenue climbs. Your bank balance tells a different story.

The Compounding Effect of Stacked Costs at Discount Prices

Fixed costs don’t discount. When you run a 25% off promotion, your payment processor still charges the same percentage fee, your shipping carrier still invoices the same rate per parcel, and your COGS remains unchanged. What changes is the revenue ceiling — and therefore every variable cost becomes a larger share of what’s left.

Consider a WooCommerce store doing 400 orders per month with an average order value of €85. At normal pricing, a 35% gross margin leaves roughly €29.75 per order before ad spend. Apply a Black Friday 30% discount and that AOV drops to €59.50. The same fixed costs now consume a much larger slice — leaving perhaps €8–€12 per order before a single cent of Google Ads CPC is deducted. If your campaign was calibrated for a €25 profit-per-order target, it is now structurally incapable of hitting that target, yet Google’s AI has no idea.

The ROAS Vanity Trap During Promotions A 600% ROAS during a 30% off sale does not mean 6x profit. It means 6x revenue relative to ad spend — a metric that becomes actively misleading when discounts have compressed margins to near zero. Always verify POAS alongside ROAS during any promotional window.
Diagram showing how seasonal discounts reduce per-order profit margin in WooCommerce while Google Ads keeps bidding aggressively
How seasonal discounts erode per-order profit while Google Ads continues bidding on revenue signals

Diagnosing the POAS Collapse: A Pre-Sale Checklist

Before you launch your next promotional campaign — Black Friday, summer clearance, end-of-season sale — run this diagnostic against your WooCommerce product catalogue. The goal is to identify which products will survive the discount with viable POAS, which will break even, and which will actively destroy profit the more Google Ads pushes them.

Start with your actual cost stack per SKU. Pull your COGS from your WooCommerce product data. Add your average shipping cost for that product category (factoring in weight and destination mix). Add your payment processing fee — typically 1.4–2.9% plus a fixed transaction fee depending on whether you’re on Stripe, PayPal, or Klarna. For EU stores, factor in your effective VAT rate on the margin, not the gross revenue. This gives you your true floor cost.

Now apply your planned discount percentage to your selling price. The gap between discounted selling price and true floor cost is your available profit window. If that window is narrower than your average Google Ads CPC for that product category, the campaign will generate orders at a loss — and Smart Bidding will scale that loss aggressively because revenue conversion value keeps flowing in.

Identifying Which Products Should Be Excluded From Ad Campaigns During Sales

Not every product in your WooCommerce catalogue deserves ad spend during a promotional event. Products with thin margins at full price become loss-leaders under discount — and unlike physical loss-leaders designed to drive foot traffic, Google Ads loss-leaders don’t bring ancillary basket value that compensates. They simply drain budget.

WootrackApp addresses this directly through its A/C/X product labeling system. Products are classified as Winners (A), Borderline (C), or Losers (X) based on their real POAS performance — and those labels sync automatically to your Google Shopping and Performance Max campaigns as custom labels. During a sale period, if a product’s recalculated profit per order drops it from A to X, the campaign label updates and bidding adjusts accordingly. You don’t need to manually audit 200 SKUs the night before Black Friday.

~€3Typical profit per order on a €100 product discounted 30%, after COGS, shipping, payment fees, and VAT
600%ROAS a store can report during Black Friday while simultaneously running at sub-100% POAS (a loss)
2.9%+Payment processing fee that doesn't discount — Stripe, PayPal, and Klarna fees apply to discounted revenue, not original price
100%POAS break-even threshold — below this, every order funded by Google Ads costs you money

Real-Time Profit Recalculation: The Fix Playbook for WooCommerce Google Ads

The fix is not to pause Google Ads during sales events — that’s leaving real revenue on the table. The fix is to ensure that the conversion value Google receives reflects the actual profit of each discounted order, not its revenue. This is the core principle of POAS bidding, and it requires your profit calculation to be dynamic — updating in real time as discount codes are applied, order totals change, and cost structures shift.

Static conversion values — where you set a fixed revenue multiplier once and forget it — break entirely during promotional periods. A multiplier calibrated for your normal 38% margin becomes wildly inaccurate when a flash sale drops that margin to 8%. Google’s AI will continue to bid as if every conversion is worth the same, because from its perspective, nothing has changed.

How Per-Order Profit Calculation Should Work During Discount Events

The correct architecture is order-level profit calculation that fires at the point of conversion, using the actual order data: the discounted line item prices, the applied coupon codes, the real shipping cost charged, the payment method fee, and the VAT obligation. This produces a profit value specific to that order — not an average, not an estimate — and that value is what gets sent to Google Ads as the offline conversion amount.

WootrackApp handles exactly this. When an order completes in WooCommerce, the plugin calculates true profit by pulling COGS from product data, deducting the actual shipping cost, applying the correct payment processor fee (Stripe, PayPal, or Klarna depending on what the customer used), and accounting for VAT for EU stores. That per-order profit figure is then transmitted to Google Ads as an offline conversion. During a Black Friday sale where a customer used a 25% discount code and paid via Klarna, the conversion value Google receives is the real profit of that specific transaction — not a proxy for revenue.

Adjusting Smart Bidding Targets Before, During, and After a Sale

Beyond per-order conversion values, your POAS target itself may need adjustment during promotional windows. If your normal target POAS is 180% (€1.80 profit per €1 ad spend), and you know your margin will compress by 60% during a sale, your effective target needs to reflect that — or you risk Smart Bidding chasing a target that’s mathematically unachievable on discounted products.

A practical approach: calculate your expected profit-per-order at the discounted price before the sale launches. If it drops from €28 to €9, your POAS target should be recalibrated accordingly for the promotional period. WootrackApp’s smart budget management layer supports this by automatically scaling spend toward campaigns and products that maintain positive POAS even under discount conditions — and pulling back from those that don’t.

Real-time profit recalculation loop for WooCommerce Google Ads POAS bidding during sales events
The real-time profit recalculation loop: WooCommerce order data feeds accurate POAS signals back to Google Ads Smart Bidding

Optimizing Google Ads on revenue during a sale is like navigating by a map that was accurate last season. The roads have changed — your bids haven’t.

— Ecommerce Paid Search Strategist / Performance Marketing

Pre-Sale POAS Protection Checklist for WooCommerce Store Owners

  • Calculate true profit floor per SKU: COGS + shipping + payment fee + VAT obligation, before applying discount
  • Identify any product where the discounted price minus floor cost is less than your average Google Ads CPC for that category
  • Exclude or reduce bids on Loser (X-label) products before the promotional window opens
  • Ensure your conversion tracking sends per-order profit values — not revenue — to Google Ads (WootrackApp automates this step)
  • Recalibrate your POAS target to match compressed margins during the sale period, not your standard full-price margin
  • Set a post-sale review date within 72 hours of the promotion ending to catch any Smart Bidding lag that continues aggressive spend after margins normalize
  • Check that discount coupon codes in WooCommerce are reflected in your profit calculation — flat-rate coupons and percentage coupons affect margin differently
  • Monitor your mobile app dashboard in real time during high-volume sale days to catch POAS drops before they compound

Frequently asked questions

Why does my ROAS increase during Black Friday if my actual profit is falling?

ROAS measures revenue divided by ad spend. When you discount heavily, order volume typically increases — so total revenue rises and ROAS improves. But ROAS has no visibility into your cost structure. It doesn’t know your COGS, shipping costs, payment fees, or VAT. POAS (Profit on Ad Spend) does — and POAS almost always tells a much harsher story during discount events because it measures what you actually keep, not what customers spend.

How does WootrackApp recalculate profit in real time when discount codes are applied?

WootrackApp reads the completed WooCommerce order data at the point of conversion — including any applied coupon codes that reduced the order total. It then calculates profit using the actual discounted revenue minus COGS, the real shipping cost, the payment processor fee for the method used (Stripe, PayPal, or Klarna), and VAT where applicable. This per-order profit value is sent to Google Ads as an offline conversion, so Smart Bidding receives an accurate signal for every single transaction, not an average estimate.

Should I pause Google Ads campaigns entirely during a seasonal sale?

Generally no — pausing means missing high-intent traffic during peak buying periods. The better approach is to ensure your Google Ads campaigns are optimizing on profit values rather than revenue, and to exclude or reduce bids on products whose discounted margins can’t support profitable ad spend. WootrackApp’s A/C/X product labeling helps here by automatically flagging which products remain Winners under discount conditions and which become Losers that should be deprioritized.

What POAS target should I set during a 30% off sale?

It depends on your product margins. A rough framework: calculate your expected profit per order at the discounted price for your most-sold products. If that figure is €10 and your average CPC is €0.80 with a 3% conversion rate, your effective CPA is around €26 — which already exceeds your per-order profit. In that scenario, your POAS target needs to be set at or below 100% (break-even) for those products, or you should exclude them from active bidding. Products with higher margins that survive the discount with €20+ profit per order can sustain more aggressive POAS targets.

Does this problem affect Performance Max campaigns differently than standard Shopping campaigns?

Performance Max is arguably more exposed to this problem because its automation is more aggressive and operates across more inventory types. PMax relies heavily on conversion value signals to make real-time bidding decisions across Search, Shopping, Display, and YouTube. If the conversion value it receives is inflated revenue rather than real profit, it will over-invest across all those channels simultaneously during a sale. Sending accurate per-order profit values via offline conversions — as WootrackApp does — is especially important for PMax campaigns during promotional periods.

How quickly does Google Ads adjust bidding after it starts receiving lower profit conversion values?

Smart Bidding typically requires a learning window of 1–2 weeks to meaningfully recalibrate to new conversion value patterns. This means if your sale runs for 5 days, Google may not fully adjust bids downward until after the sale has ended — which is why proactive POAS target adjustments before the sale launches are more effective than relying on the algorithm to self-correct mid-promotion. Post-sale, monitor for a brief period of continued aggressive bidding as the model catches up to your restored margins.