WooCommerce Dynamic Pricing
Pricing Recipes
The exact settings for a specific outcome, with the cart totals measured rather than assumed.
Dynamic Pricing can express most of what a store asks for, but the fields are generic on purpose — the same four decisions build a wholesale rate, a quantity break and a buy-one-get-one. These pages start from the outcome and give you the configuration, so you are not reverse-engineering it from field names.
The recipes
Buy 2, Get 1 Free
Special Offer · Purchase 2, Receive 1 · Percentage 100 · Repeating
The charge at every quantity from 1 to 9, and why the customer needs three in the cart before anything happens.
Quantity Breaks
Bulk · three tiers · 10%, 20%, 30%
Buy more, pay less per unit. What the cart charges at eight quantities, and the step where one extra unit makes the order cheaper.
Wholesale Pricing by Role
Specific Roles · store-wide or per product
Two prices in one catalogue, no coupon code. Both places the rule can live, and what happens when you configure both.
Every rule is four decisions
Whatever you are building, you are answering these. Once they are familiar, most requests stop being research.
| Field | Choices | What it decides |
|---|---|---|
| Applies To | Everyone · Guests · Specific Roles | Who gets the price. Specific Roles is how wholesale rates work — no separate price list |
| Quantities based on | Product · Variation · Cart Line Item · Quantity of Category | What gets counted. Quantity of Category is what makes “any 3 from this range” work across different products |
| Rule Processing Mode | Bulk · Special Offer | How the quantity is read. See below — this is the one that catches people out |
| Type & Amount | Price Discount · Percentage Discount · Fixed Price | What the adjustment does. Fixed Price sets the price outright rather than reducing it |
Bulk or Special Offer
Bulk reads the quantity as a threshold: at 10 or more, every unit gets the discount. That is a quantity-break table — buy more, save more on all of them.
Special Offer reads it as a block: for each group of N, something happens once. That is buy-one-get-one, “any 3 for $50”, and every offer where part of the order is discounted and the rest is not.
Bulk is the default, so a rule that should give away a free item but discounts everything instead is almost always this setting. Keep one Special Offer row per pricing group; separate offers belong in separate groups.
The same four fields, other outcomes
Configuration only — the recipes above carry the measured totals. These have not been measured, so treat them as where to look rather than as a promise about a number.
| You want | Set |
|---|---|
| Any 3 from a category, not one product | Quantities based on → Quantity of Category |
| A discount for logged-out visitors only | Applies To → Guests |
| Quantity counted per variation, not per product | Quantities based on → Variation Quantity |
| A promotion that ends on its own | Dates: (Inclusive) — From and To, YYYY-MM-DD. Blank means no restriction |
| A set price rather than a reduction | Fixed Price as the type |