Pricing
Dynamic pricing, and when it is actually a good idea
Dynamic pricing is the practice of changing prices automatically in response to defined inputs such as competitor moves, stock cover, demand and margin, rather than on a manual review cycle. Dynamic pricing suits categories where prices already move often and are easy to compare, and damages trust in categories where shoppers expect a stable, posted price.
Dynamic pricing means a price that changes automatically because a defined input changed, rather than because a person reviewed it. That is the whole idea. Everything difficult about it sits in three places: choosing inputs that actually predict something, setting guardrails so the system cannot do something stupid at scale, and proving the change earned money rather than simply moving it around. Most failed dynamic pricing programmes did not fail at the algorithm. They failed because nobody held a group of products back to compare against, so nobody could tell whether it worked.
- Dynamic pricing
- Adjusting prices automatically and repeatedly in response to defined signals, such as competitor prices, stock cover, demand, cost or time. The distinguishing feature is that the decision rule is set once and executed continuously, rather than a price being reviewed and changed by a person on a cycle.
What dynamic pricing is, and what it is not
Three terms get used interchangeably and mean different things. Dynamic pricing is prices changing automatically in response to inputs. Personalised pricing is different prices for different shoppers looking at the same product at the same moment. Price optimization is calculating what a price should be to hit an objective, which may or may not then be executed automatically.
The distinction matters commercially and reputationally. Most retail dynamic pricing is not personalised at all: every shopper sees the same price, and that price moves over time. That is a very different proposition to defend publicly than showing two shoppers different numbers for the same item. If you are considering the second one, treat it as a policy decision with legal and brand input, not as a configuration option.
Dynamic pricing is also not the same as repricing, although they overlap heavily. Repricing is the execution layer: the rules, the guardrails, the change queue and the audit trail that get a chosen price live safely. Dynamic pricing is the decision that the price should change at all. You can run repricing without anything anyone would call dynamic, and you cannot run dynamic pricing without repricing underneath it. The named rule patterns are covered in repricing strategies.
Where dynamic pricing works, and where it destroys trust
There is a simple test that predicts most of it. Dynamic pricing is well tolerated where shoppers already expect prices to move, and it is corrosive where they expect a posted price to mean something. Airline seats and hotel rooms move constantly and nobody is surprised. A shopper who buys the same replacement filter every quarter and notices it costs more on a Friday evening feels something different, and what they feel is not a pricing signal, it is suspicion.
The second test is about direction. Automation that mostly moves prices down to stay competitive is read as competitiveness. Automation that mostly moves prices up when demand spikes is read as exploitation, and surge-style increases during emergencies or shortages have repeatedly drawn public criticism in categories where they were tried. The identical algorithm gets two completely different receptions depending on which way it usually points.
| Category | How dynamic pricing tends to behave | Main constraint | Sensible change cadence |
|---|---|---|---|
| Consumer electronics | Highly effective. Prices are already volatile, comparison is one search away, and identifiers make matching exact | Margins are thin enough that an unguarded race to the bottom does real damage | Several times a day on hero SKUs, daily on the long tail |
| Fashion and apparel | Works as a markdown cadence rather than a competitive chase. Comparison is weak because assortment is differentiated | Season length and sell-through, not competitor prices | Weekly, aligned to a planned markdown ladder |
| Home improvement and DIY | Mixed. Commodity consumables behave like electronics; project and trade items behave like a relationship | Trade and contractor accounts notice movement and expect stability | Daily on consumables, hold on trade-facing lines |
| Auto parts | Effective where fitment data makes matching exact, weak where it does not | Match confidence. A wrong fitment match reprices against the wrong part | Daily, with a higher match-confidence threshold before any rule fires |
| Health and beauty | Constrained. Brand-mandated floors dominate and much of the category has a MAP | MAP compliance is a hard floor, not a preference | Daily, with a MAP floor that no rule can cross |
| Sporting goods | Seasonal and event-driven more than competitor-driven | Demand peaks are short and stock cover matters more than parity | Daily in season, weekly out of season |
| Grocery and household essentials | Risky on staples. Repeat-purchase items are exactly where shoppers hold a remembered price | Price perception on a known-value basket outweighs per-SKU margin | Rarely, and never upward on a known-value item |
| Branded goods sold under MAP | Bounded by definition. The floor is set by the brand, so the rule operates in a narrow band above it | Advertising the price below MAP risks the reseller relationship | Daily within the band, with the floor enforced in the rule itself |
Cadence here is how often a price is allowed to change, not how often you collect data. Collecting more often than you act is normal and useful; acting more often than you can explain is not.
Rule-based or model-based: pick the one you can explain
Rule-based pricing encodes a decision you already understand: match the lowest in-stock competitor, never below cost plus 18 percent, never move more than 5 percent in a day. Model-based pricing estimates a demand response from data and recommends the price that best hits an objective. Both are legitimate. They fail differently, and the failure modes should decide which one you start with.
Rule-based
- Every price change has a one-sentence explanation anyone in the business can follow
- Works from the first day, with no history required
- Debuggable: a wrong price traces to a specific clause you can read
- Cannot discover anything you did not already know
- Degrades badly when rules multiply and start contradicting each other
- Blind to demand response; matching a competitor says nothing about whether the price is right
Model-based
- Can find price points a human would not have proposed
- Handles many interacting inputs at once without a rule explosion
- Needs real history, real price variation, and clean data to estimate anything
- Hard to explain to a merchandising lead who disagrees with an output
- Fails quietly and confidently when the training conditions stop holding
- Extremely sensitive to confounded data, which most observational pricing data is
The practical recommendation is unglamorous. Start rule-based, because you will spend the first six months discovering that your cost data is stale, your match confidence is worse than you thought and three of your competitor URLs point at the wrong variant. A model trained on that is a fast way to be confidently wrong. Introduce model-based recommendations later, on the categories where you have accumulated genuine price variation, and keep them behind the same guardrails.
If you do reach for a model, understand what it needs. Estimating a demand response requires observed price movement that was not caused by the thing you are trying to measure, which is rarer than it sounds. The reasons that estimate is fragile are set out in price elasticity of demand, and they apply directly to any model-based pricing built on observational data.
The inputs that actually matter
Most dynamic pricing programmes start with one input, competitor price, and stop there. That is the input most likely to produce a race to the bottom, because it contains no information about whether the price is good for you. A workable input set has at least four categories in it.
Competitive position
Competitor prices, but only from in-stock listings, only from sellers you consider comparable, and only above a match-confidence threshold. An out-of-stock listing is not a competing offer, and a marketplace liquidator is not a competitor to match.
Your own economics
Current landed cost, not last quarter's. Fees, freight and returns rate by category. If cost data is stale, a margin floor is decorative and the guardrail you thought you had does not exist.
Inventory and velocity
Stock cover in weeks, sell-through against plan, and days since receipt. Price and inventory are the same decision. Discounting an item with three weeks of cover left is throwing away margin you would have earned anyway.
Constraints
MAP floors, contractual minimums, promotional commitments, price-match liabilities and any regulated pricing rules. These belong in the rule as hard limits, not as reports someone checks afterwards.
Add demand signal if you have one that is genuinely leading rather than lagging: on-site search volume for the term, add-to-cart rate, or watchlist adds. Be honest about which of your signals are lagging. Units sold last week tells you what happened at last week's price, which is the thing you are about to change.
Guardrails are the part that is not optional
A pricing rule without guardrails is a script with production write access. The guardrails are not a safety feature bolted on afterwards; they are the reason anyone in finance will sign off on the programme at all. Five of them do most of the work.
- Margin floor. An absolute percentage or cash margin below which no rule may price, evaluated against current landed cost. This is the one that stops a competitor's clearance event from becoming your clearance event.
- Cost floor. A hard stop at cost, separate from the margin floor, so that a bad cost record produces a blocked change rather than a below-cost price.
- MAP floor. Where a brand publishes a minimum advertised price, the rule cannot advertise below it. Enforced in the rule, not in a weekly report. See MAP monitoring software for how the floor is sourced and kept current.
- Maximum daily change. A cap on how far any single price can move in a day, typically a small single-digit percentage. This is the guardrail that converts a bad input into a small mistake instead of a catastrophic one.
- Change volume limit. A cap on how many prices can change in one run. If a rule suddenly wants to change 4,000 prices instead of the usual 200, that is an input failure, not a market event, and the correct response is to stop and ask.
Repricing — rule builder
Beat market low on Audio
Active- Scope
- Category: Audio
- Strategy
- Match lowest in-stock competitor − $1.00
- Guardrail
- Never below 22% gross margin
- Excludes
- Out-of-stock competitors, unauthorised sellers
- Max change
- 6% per day
- Apply
- Review queue, then push to store
Simulated impact — next 30 days
- Products in scope7SKUs
- Price changes proposed12this run
- Blocked by margin floor3held
Three changes were blocked because they would have taken gross margin below 22%. The rule never overrides its own floor.
| Rule | Scope | SKUs | Status |
|---|---|---|---|
| Beat market low on Audio | Category: Audio | 7 | Active |
| Hold MSRP on protected brands | Brand: Ironside, Granite | 6 | Active |
| Recover margin on Home & kitchen | Category: Home & kitchen | 7 | Awaiting review |
| Clear slow movers | Tag: aged-90d | 4 | Paused |
A rollout sequence that will not embarrass you
The sequence below trades speed for the ability to answer the question everyone asks after three months, which is whether the thing worked. Skipping the holdout group is the most common and most expensive shortcut, because there is no way to reconstruct it afterwards.
- 1
1. Pick one category and define the objective
One category, one objective, written down before anything runs. Contribution margin, revenue, unit share or price position. If the objective is more than one of these, the rule will optimise the easy one and you will argue about it later.
- 2
2. Fix the inputs before touching the rule
Verify landed cost is current, match confidence is high enough on the competitor URLs in scope, MAP floors are loaded, and collection freshness is proven for every source. Nothing in this stage is glamorous, and skipping it invalidates everything downstream.
- 3
3. Randomly hold back 15 to 25 percent of the SKUs
Randomly, not by picking the boring ones. The holdout keeps its existing manual pricing process for the whole test. Without it you will be comparing the test period against last year and attributing the weather to your algorithm.
- 4
4. Run in shadow mode for two weeks
The rule calculates a price and changes nothing. Read the proposed changes daily. This is where you discover the variant that reprices to $4.99 because a competitor URL points at a replacement filter rather than the unit.
- 5
5. Go live with a review queue and a tight change cap
Every change is approved by a person for the first two weeks, with the maximum daily change set low. Track the reject rate. A reject rate that stays high means the rule is wrong, not that the reviewers are cautious.
- 6
6. Release the queue category by category, keeping the caps
Move to automatic execution only where the reject rate has fallen and stayed low. Keep the guardrails exactly as they are. The temptation to widen the daily change cap at this point should be resisted for at least a full quarter.
- 7
7. Read the result at a fixed date you set in advance
Choose the measurement date before you start, and hold the holdout group until then. Deciding when to measure after you have seen the numbers is how a flat result becomes a success story.
How to tell whether dynamic pricing actually worked
Compare treated against held-out over the same window, in contribution margin per SKU per week, and take the difference of the two changes rather than the change in the treated group alone. Here is the arithmetic on an illustrative example with invented numbers, so the shape of the calculation is clear.
Suppose 600 SKUs in one category are split randomly: 480 treated by the rule, 120 held out on the existing manual process. The measurement window is six weeks, compared against the six weeks before the rule went live.
| Group | Before | After | Change |
|---|---|---|---|
| Treated (480 SKUs) | $41.20 | $44.90 | +9.0 percent |
| Held out (120 SKUs) | $40.80 | $43.10 | +5.6 percent |
| Difference attributable to the rule | +3.4 percentage points |
Illustrative figures. 44.90 divided by 41.20 is 1.090, a 9.0 percent rise. 43.10 divided by 40.80 is 1.056, a 5.6 percent rise. The holdout rose too, because the market moved for reasons that had nothing to do with the rule. Subtracting gives 3.4 points.
That subtraction is the entire point of the holdout. Reported without it, this test looks like a 9 percent improvement. Nearly two thirds of that was going to happen anyway. Applied to the treated base, 480 SKUs at $41.20 per week is $19,776 of weekly contribution, or $1,028,352 annualised, and 3.4 percent of that is roughly $34,900 a year. That is a real and defensible number. The 9 percent version is not.
Four secondary measures are worth watching alongside the headline, because each one catches a specific way a good headline hides a bad outcome.
- Guardrail breach attempts. How often did the rule want to go below a floor and get stopped? A rising count means the inputs are drifting, and the guardrail is currently the only thing between you and a bad price.
- Price change volume. Changes per SKU per week. If it climbs steadily, you may be oscillating against a competitor who is also automated, which burns customer trust while producing no position gain.
- Cannibalisation within your own range. Check whether treated SKUs gained units that held-out SKUs lost. If the gain came from your own shelf, the category total will show it even when the SKU-level numbers look excellent.
- Price position, not just price. Track where the rule actually landed you against the market. A price index and a position mix will tell you whether you bought margin by quietly drifting above the market, which usually shows up in volume a quarter later.
Pricing analytics — price index by SKU
| Product | Your price | Market avg | Index | 60-day trend |
|---|---|---|---|---|
| Aurora H7 Noise-Cancelling Headphones | $249.00 | $258.90 | 96.2 | |
| Aurora H7 Noise-Cancelling Headphones — Black | $275.83 | $272.00 | 101.4 | |
| Aurora H7 Noise-Cancelling Headphones — Midnight Blue | $275.90 | $278.19 | 99.2 | |
| Aurora H7 Noise-Cancelling Headphones — Sand | $273.31 | $265.46 | 103.0 | |
| Aurora Buds Pro | $149.00 | $162.53 | 91.7 | |
| Aurora Buds Pro — Black | $165.68 | $173.02 | 95.8 |
Index = your price ÷ average in-stock competitor price × 100. Above 100 means you are priced above the market.
If you want to sanity-check the size of the prize before committing engineering and merchandising time, the dynamic pricing ROI calculator works the same arithmetic from your own margin and volume inputs.
When to stop, and what a failure looks like
Define the kill criteria at the same time as the objective, while nobody is invested in the answer. Four are worth writing down.
- Contribution margin in the treated group falls behind the holdout for three consecutive weeks.
- The review queue reject rate stays above roughly one in five after the first fortnight, which says the rule does not encode what the buyers actually believe.
- Price change volume per SKU keeps rising with no improvement in price position, the signature of an oscillation loop with another automated seller.
- Any guardrail breach reaches a live storefront. That is a control failure rather than a pricing failure, and it should pause the programme regardless of how good the margin looks.
None of these mean dynamic pricing does not work. They usually mean the inputs were not ready, the category was the wrong one to start with, or the rule was written to match competitors rather than to make money. All three are fixable, and all three are much cheaper to find in a holdout test than in a quarterly review.
Run the rules with the guardrails already in place
Margin, cost and MAP floors, a maximum daily change, a review queue and a full change history, on every plan. 14-day free trial, no credit card required.
Frequently asked questions
What is dynamic pricing?
Dynamic pricing is changing prices automatically in response to defined inputs such as competitor prices, stock cover, demand or cost, rather than changing them on a manual review cycle. The decision rule is set once and executed continuously. It is not the same as personalised pricing, where different shoppers see different prices for the same item at the same moment.
Is dynamic pricing legal?
Changing your own prices in response to publicly observable market conditions is ordinary commercial behaviour. The areas that need legal input are personalised pricing based on individual shopper data, anything that could look like coordination with a competitor, and category-specific rules such as price gouging statutes during declared emergencies. Discuss those with counsel before configuring anything.
What is the difference between dynamic pricing and repricing?
Dynamic pricing is the decision that a price should change and by how much. Repricing is the execution layer that gets the change live safely: rules, guardrails, a review queue, a store connection and an audit trail. You can run repricing on a manual cadence without anything dynamic, but you cannot run dynamic pricing without repricing underneath it.
Should we use rules or a machine learning model for dynamic pricing?
Start with rules. Rules work from day one, require no history, and every change traces to a clause you can read aloud in a meeting. Models can find price points rules never would, but they need genuine price variation and clean cost and matching data to estimate anything reliable. Most first-year programmes are still fixing those inputs.
What guardrails does a dynamic pricing rule need?
At minimum: a margin floor against current landed cost, a separate hard cost floor, a MAP floor where a brand publishes one, a maximum daily change per SKU, and a cap on how many prices may change in one run. Add a data-freshness rule so a stale competitor source cannot trigger a change at all.
How do you prove dynamic pricing improved margin?
Randomly hold back 15 to 25 percent of SKUs on the existing process, run for a fixed window decided in advance, and compare the change in contribution margin per SKU per week between treated and held-out groups. The difference between the two changes is the attributable effect. Without a holdout, market movement gets credited to the algorithm.
Which products should be excluded from dynamic pricing?
Known-value items whose price customers actually remember, anything under a contractual price commitment, products with unreliable cost data, and any SKU whose competitor matches sit below your confidence threshold. Excluding these costs very little margin and prevents the two failure modes that damage trust fastest: a visible increase on a familiar item, and a confidently wrong match.
Keep reading
- Dynamic pricing softwareThe execution layer: rules, guardrails, review queue and change history.
- Repricing strategiesTen named rule patterns, the guardrail each one needs, and how each one fails.
- Price elasticity of demandThe formula behind any model-based approach, and why observational estimates are fragile.
- Dynamic pricing ROI calculatorWork the holdout arithmetic on your own margin and volume before committing to a programme.
- Price optimization softwareWhere recommendation sits relative to monitoring and execution.
- Competitor price monitoringThe input layer. No pricing rule is better than the freshness of the data underneath it.
Start monitoring in the next ten minutes
Connect your store, match your catalogue and get your first competitor comparison in the same session.
14 days, no credit card, cancel in one click.