Rates start @ $15/hour!

WooCommerce Dynamic Pricing Not Working? Here’s How to Fix It

WooCommerce Dynamic Pricing Not Working? Here’s How to Fix It

You set up your WooCommerce dynamic pricing rules. The configuration looks correct. But the discount is not showing on the product page, the cart shows the wrong total, or the pricing just flat-out ignores your rules.

This is one of the most common WooCommerce issues I fix for clients. I have solved dynamic pricing failures on stores running everything from the official WooCommerce Dynamic Pricing extension to free plugins like Advanced Dynamic Pricing for WooCommerce and Discount Rules by Flycart. The root cause is almost never what you expect.

Here are the 9 most common reasons WooCommerce dynamic pricing is not working, and the exact fix for each one.

1. Caching Is Serving Stale Prices

This is the number one cause of WooCommerce dynamic pricing not working, and it is the one most store owners miss completely.

If your site uses a caching plugin (LiteSpeed Cache, WP Rocket, W3 Total Cache, SiteGround Optimizer) or a CDN like Cloudflare, the cached version of your product page still shows the old price. The dynamic pricing plugin calculated the new price, but the visitor sees a cached page from before the rule existed.

The Fix

First, check whether your caching plugin excludes WooCommerce pages. Specifically, these URLs must never be cached:

  • /cart/
  • /checkout/
  • /my-account/
  • Any page that displays user-specific or role-specific pricing

In LiteSpeed Cache, go to LiteSpeed Cache > Cache > Do Not Cache URIs and add those paths. Also enable “Login Cookie” under Cache > Cache and check “Do Not Cache for Logged-in Users” if your dynamic pricing is role-based.

In WP Rocket, WooCommerce pages are excluded by default, but if you have a role-based pricing rule, you need to disable caching for logged-in users entirely.

For Cloudflare, create a Page Rule for yourdomain.com/cart/*, yourdomain.com/checkout/*, and yourdomain.com/my-account/* with “Cache Level: Bypass.”

After updating cache settings, purge all caches and test in an incognito browser window.

2. Variable Product Quantity Tallying Is Misconfigured

This is the bug that catches most store owners off guard with variable products. The pricing plugin is calculating the discount based on the wrong quantity count.

Most dynamic pricing plugins give you a choice for how quantities are tallied:

  • Product quantity – counts all variations of the same product together
  • Variation quantity – counts each variation separately
  • Cart line item – counts each line in the cart individually

If you set up a “buy 5 get 10% off” rule and the customer adds 3 of Variation A and 2 of Variation B, the result depends entirely on this setting. With “Product quantity,” they hit the threshold. With “Variation quantity,” they do not.

The Fix

Go to your dynamic pricing rule and check the “Quantities based on” setting. For most stores, “Product quantity” is correct because customers expect the discount to apply across all variations of the same product.

If you are using the official WooCommerce Dynamic Pricing extension, this setting is on the product’s Dynamic Pricing tab under “Pricing Group.” For Advanced Dynamic Pricing for WooCommerce (free plugin), it is in the rule’s conditions section.

Test with a real cart. Add multiple variations of the same product and verify the discount triggers at the correct combined quantity. If you are running into a related issue where the WooCommerce variation quantity is not updating at all, that is a separate bug with a different fix.

3. Multiple Pricing Rules Are Conflicting

When two or more dynamic pricing rules apply to the same product, the plugin has to decide which one wins. Some plugins apply the first matching rule. Others apply the largest discount. Others apply all rules, stacking discounts.

If your configuration uses “Apply first matched rule” but a less favorable rule is ranked higher, the better discount never fires.

The Fix

Check the rule priority or calculation mode in your plugin settings:

  • WooCommerce Dynamic Pricing extension: Rules evaluate top to bottom. The first match wins. Drag your rules into the correct priority order.
  • Advanced Dynamic Pricing for WooCommerce: Go to WooCommerce > Pricing Rules > Settings > Calculation. Choose between “First matched rule,” “Biggest discount,” “Smallest discount,” or “Apply all rules.”
  • Discount Rules for WooCommerce (Flycart): Check Settings > How to apply discount to set priority behavior.

My recommendation: unless you have a specific reason to stack discounts, use “First matched rule” and order your rules from most specific to most general. This prevents unexpected double discounts that eat your margins.

4. The Discount Shows in Cart but Not on the Product Page

This is actually expected behavior for many dynamic pricing plugins, not a bug. The official WooCommerce Dynamic Pricing extension, for example, calculates all pricing adjustments at the cart level. The product page shows the regular price. The discount only appears after the customer adds the item to their cart.

This confuses customers. They see $50 on the product page, expect the 20% discount they saw in your banner, but do not see $40 until they view the cart.

The Fix

There are two approaches:

Option A: Use a plugin that supports product page display. Advanced Dynamic Pricing for WooCommerce and Discount Rules by Flycart both show adjusted prices directly on the product page. If your current plugin does not, switching may be the simplest fix.

Option B: Add a custom pricing table or notice on the product page. Many plugins support a bulk pricing table that shows the quantity breaks and discount tiers directly on the product page. In Advanced Dynamic Pricing, go to Settings > Product Price and enable “Show bulk table on product page.”

If you are using the official extension and want to display role-based prices on the product page, you need custom PHP. Hook into woocommerce_product_get_price and woocommerce_product_get_sale_price to override the displayed price based on the current user’s role. This is a common customization I build for wholesale stores as part of my WooCommerce development service.

5. Role-Based Pricing Not Applying for Logged-In Users

You created a pricing rule for “Wholesale” customers, but when a wholesale user logs in, they still see the regular price. This happens for three reasons:

  1. The user is not actually assigned to the correct role
  2. The caching plugin is serving a cached page meant for guests
  3. The pricing plugin is checking a different role name than what you assigned

The Fix

First, verify the user’s role. Go to Users > Edit User and check the Role dropdown. WordPress stores roles as lowercase slugs internally. Your plugin might expect wholesale_customer while the user has wholesale-customer or Wholesale Customer. These are not the same.

Second, disable page caching for logged-in users. This is critical for any role-based pricing setup. If LiteSpeed Cache serves a guest-cached product page to a wholesale user, they see guest prices.

Third, check your pricing plugin’s role mapping. Some plugins like WooCommerce Dynamic Pricing use the WordPress default roles (subscriber, customer, shop_manager). If you use a third-party role plugin like User Role Editor or Members, make sure the pricing plugin can see those custom roles.

6. Sale Price Conflicts with Dynamic Pricing

If a product already has a sale price set in WooCommerce’s default pricing fields, dynamic pricing plugins handle it differently:

  • Some plugins apply the discount on top of the sale price
  • Some apply the discount on the regular price and ignore the sale price
  • Some skip products that already have a sale price

This creates confusion when a product on sale does not get the expected dynamic discount.

The Fix

Decide which price should be the base for your dynamic discount. If you want the discount to apply on top of the sale price, check your plugin settings for a “Use sale price as base” option.

In Advanced Dynamic Pricing for WooCommerce, go to Settings > Calculation and look for “Initial product price” – options include “Regular price,” “Sale price,” or “Current product price.”

My recommendation: avoid mixing WooCommerce native sale prices with dynamic pricing rules on the same product. Use one system, not both. Set the regular price as the base and let the dynamic pricing plugin handle all discounts. This avoids double-discount confusion for both you and your customers.

7. Tax Configuration Breaking Displayed Prices

If your store displays prices including tax but the dynamic pricing plugin calculates discounts on prices excluding tax (or vice versa), the numbers shown to the customer look wrong.

A customer sees “$100 incl. tax” on the product page, the dynamic pricing rule gives 10% off, but the cart shows $85 instead of the expected $90. The plugin applied 10% to the pre-tax price of $83.33, making it $75 pre-tax, which is $85 with tax.

The Fix

Go to WooCommerce > Settings > Tax and note whether prices are entered with or without tax. Then check your dynamic pricing plugin to make sure it uses the same basis for its calculations.

In the official WooCommerce Dynamic Pricing extension, discounts are always calculated on the price as stored in the database (before tax if that is how you enter prices). If you display prices including tax, the discounted amount will reflect the tax-inclusive total after the discount is applied to the base price.

Document this for your client or store manager so they set discount amounts correctly. A “10% off” rule on a $100 tax-inclusive product with 20% VAT means 10% off $83.33 base, not 10% off $100.

8. Plugin Compatibility Issues

Dynamic pricing plugins hook into WooCommerce’s price calculation at various priority levels using filters like woocommerce_product_get_price, woocommerce_product_get_sale_price, and cart-level hooks. Other plugins that also modify prices – currency switchers, product add-ons, product bundles, subscription plugins – can conflict.

Common conflicts I have seen in client stores:

  • WPML/WooCommerce Multilingual overriding the adjusted price with the translated product’s price
  • WooCommerce Product Add-Ons recalculating the total after the dynamic price was set
  • Currency switcher plugins converting the already-discounted price incorrectly
  • WooCommerce Subscriptions ignoring dynamic pricing on recurring products

The Fix

Deactivate all plugins except WooCommerce and your dynamic pricing plugin. Test the rule. If it works, reactivate plugins one by one until the conflict surfaces.

Once you identify the conflicting plugin, check for a compatibility setting in your dynamic pricing plugin. Advanced Dynamic Pricing for WooCommerce has explicit compatibility toggles for WooCommerce Product Bundles, WPC Product Bundles, Aelia Currency Switcher, and others in its Settings > Compatibility tab.

If no compatibility toggle exists, the fix usually requires adjusting the hook priority in your pricing plugin or the conflicting plugin. A developer can add a small code snippet to functions.php that reorders the filter priorities so the dynamic pricing plugin runs last. This is a common fix in my WordPress bug fixing work.

9. The Rule Conditions Simply Do Not Match

Before blaming the plugin, double-check the rule logic. I have debugged dozens of “broken” dynamic pricing setups where the plugin was working perfectly, but the rule conditions excluded the scenario the store owner was testing.

Common mismatches:

  • Rule applies to “Category A” but the product is in “Category B” (and also tagged in A through a parent category that the plugin does not traverse)
  • Rule requires minimum quantity of 5 but the tester adds 4 items
  • Rule is set to “Specific roles” but the tester is logged out
  • Rule has a date range that has expired
  • Rule applies to simple products only, and the product is variable
  • Rule is saved as “Draft” or “Paused,” not “Active”

The Fix

Open your pricing rule and read every condition field out loud. Then go to the front end and replicate the exact scenario: correct user role, correct product, correct quantity, correct date. Use the browser console or a plugin like Query Monitor to verify the user role and product category.

If you are using Advanced Dynamic Pricing for WooCommerce, enable debug mode at WooCommerce > Pricing Rules > Tools > Enable Debug. This shows which rules were evaluated and why they matched or did not match for the current cart.

Debugging Checklist: WooCommerce Dynamic Pricing Not Working

Use this sequence every time a dynamic pricing rule is not firing:

  1. Purge all caches – hosting, plugin, CDN, browser
  2. Test in incognito mode while logged in with the correct user role
  3. Verify the rule is active and not expired, paused, or in draft
  4. Check the quantity tally method for variable products
  5. Confirm the product matches the rule conditions – category, tag, specific product
  6. Look for sale price conflicts – remove any native WooCommerce sale price temporarily
  7. Check plugin conflicts – deactivate other price-modifying plugins
  8. Review the tax calculation basis – with or without tax
  9. Enable debug mode if your plugin supports it

When to Hire a Developer for Dynamic Pricing Issues

If you have gone through this checklist and the pricing still behaves unexpectedly, the problem is likely deeper: a theme filter overriding the price, a custom code snippet in functions.php that conflicts, or a hosting-level caching layer (Varnish, Redis object cache) serving stale data.

At that point, a WooCommerce developer who has debugged pricing across multiple plugin stacks will save you hours. I have fixed dynamic pricing issues on stores using the official extension, Advanced Dynamic Pricing, Discount Rules, YayPricing, and custom-coded pricing logic. The fix is usually one of the nine causes above, but finding it requires knowing where to look.

If your WooCommerce dynamic pricing is not working and you need it fixed fast, book a call or send me a message. I will diagnose the root cause, fix it, and verify the pricing works across all product types and user roles before closing the ticket.

Frequently Asked Questions

Why is my WooCommerce dynamic pricing discount not showing on the product page?

Most dynamic pricing plugins, including the official WooCommerce Dynamic Pricing extension, calculate discounts at the cart level. The product page shows the regular price, and the adjusted price appears only after adding the item to the cart. Plugins like Advanced Dynamic Pricing for WooCommerce and Discount Rules by Flycart support displaying adjusted prices directly on the product page if you enable the bulk pricing table option in settings.

Why does WooCommerce dynamic pricing not work for variable products?

The most common cause is the quantity tallying method. If your rule requires buying 5 items for a discount but the plugin counts each variation separately, a customer buying 3 of Variation A and 2 of Variation B will not trigger the discount. Change the “Quantities based on” setting to “Product quantity” so all variations of the same product are counted together.

Can caching break WooCommerce dynamic pricing?

Yes. Page caching, object caching, and CDN caching can all serve stale prices. Role-based pricing is especially vulnerable because a page cached for a guest visitor gets served to a logged-in wholesale customer. Exclude WooCommerce cart, checkout, and account pages from caching, and disable page caching for logged-in users if you use role-based pricing.

Why is dynamic pricing applying the wrong discount amount?

Check whether the discount is calculated on the price including tax or excluding tax. A 10% discount on a $100 product with 20% VAT could mean 10% off $83.33 (the pre-tax price), resulting in a final price of $90 including tax instead of the expected $90. Also verify that no other pricing rule is stacking on top of or overriding your intended rule.

How do I fix WooCommerce dynamic pricing conflicts with other plugins?

Deactivate all plugins except WooCommerce and the dynamic pricing plugin, then test. Reactivate plugins one at a time to identify the conflict. Common conflicts include currency switchers, product add-ons, and subscription plugins. Many pricing plugins have a Compatibility tab in settings with toggles for known third-party plugin conflicts.

Does WooCommerce have built-in dynamic pricing?

No. WooCommerce core only supports a regular price and a sale price per product. For quantity-based discounts, role-based pricing, BOGO deals, tiered pricing, or cart-total discounts, you need a dynamic pricing plugin. Popular options include the official WooCommerce Dynamic Pricing extension, Advanced Dynamic Pricing for WooCommerce (free), and Discount Rules for WooCommerce by Flycart.

Why does my WooCommerce BOGO deal not add the free product?

BOGO rules have specific trigger conditions. The most common failure is that the “buy” product and the “get” product are configured as the same item, but the customer needs to manually add the second item to the cart. Some plugins auto-add the free item, others require the customer to add it. Check your plugin’s BOGO settings for “Auto add free product to cart” and enable it.

How do I test WooCommerce dynamic pricing rules properly?

Clear all caches first. Open an incognito browser window and log in with a user account that matches the rule’s role conditions. Add the exact products, variations, and quantities that your rule targets. Check the price on the product page, in the cart, and at checkout. If testing role-based pricing, create a test user with the specific role rather than using your admin account.

Can I use WooCommerce sale prices and dynamic pricing together?

You can, but it creates confusion. Some plugins apply the dynamic discount on top of the sale price, others use the regular price as the base regardless of the sale price. The safest approach is to use only one pricing method per product: either the native WooCommerce sale price or the dynamic pricing rule, not both.

Which WooCommerce dynamic pricing plugin is best for variable products?

Advanced Dynamic Pricing for WooCommerce (free version available) handles variable products well and supports per-variation pricing tables on the product page. For more complex setups involving role-based pricing combined with quantity tiers, the official WooCommerce Dynamic Pricing extension or Discount Rules for WooCommerce Pro provide more granular control over how variations are counted and discounted.

Topics covered in this article Uncategorized
Share
Devansh Thakkar

Written by

Devansh Thakkar

WordPress Developer & SEO Specialist

Devansh Thakkar is a top-rated WordPress developer and SEO specialist with 5+ years of experience, 100+ projects delivered, and a 100% job success score on Upwork. He specializes in WordPress, WooCommerce, Elementor, page speed optimization, and technical SEO for clients worldwide.

100% Job Success 100+ Projects 5+ Years Upwork Top Rated

Need help with your WordPress project?

Top-rated developer with 100% job success and 100+ projects delivered worldwide. Let's talk about what you need.

Book a Free Call