Skip to main content
A rule’s strategy proposes a price; its constraints decide what that price may be. Each rule has its own constraints, set in the Constraints step of the rule editor: a minimum and maximum price, a MAP, a margin floor and a rounding. On top of them, two organization-wide guardrails stop Auto-apply rules from making very large or very small changes.
Constraints belong to each rule. There are no constraints shared by several rules yet: the Constraint matrix page shows sample data only; see The Constraint matrix page.

Set a rule’s constraints

You need the Create rules or Edit rules permission.
1

Open the rule

Open Pricing Intelligence > Repricer > Rules and click Edit rule on the rule, or create a new one.
2

Go to the Constraints step

Click Next until you reach Constraints, or pick it in the list of steps on the left.
3

Set the limits

Fill in the fields described below. Leave MIN PRICE, MAX PRICE and MAP empty to skip them, and set MARGIN FLOOR to 0 for no margin floor.
4

Save the rule

Go to the review step and click Deploy rule →, or click Save rule. See Review and deploy.

The fields

MIN PRICE, MAX PRICE and MAP are amounts in the currency of the rule’s output price level, including VAT. The fields always show PLN next to the amount, whatever that currency is. MIN PRICE cannot be higher than MAX PRICE. One value applies to every product in the rule’s scope, so for a scope with very different products, use several rules.
Enter gross amounts. A value typed without VAT is treated as gross, so the limit ends up lower than you meant.

The order of the checks

For every price the strategy proposes, the repricer:
  1. Blocks it if its margin is below MARGIN FLOOR.
  2. Blocks it if it is below MAP.
  3. Raises it to MIN PRICE if it is lower.
  4. Lowers it to MAX PRICE if it is higher.
  5. Rounds it down with PRICE ROUNDING, then down to the currency’s smallest unit.
  6. Checks again: blocks it if rounding took it below the margin floor or the MAP, and raises it back to MIN PRICE if rounding took it below.
Raised and lowered prices still become recommendations. Blocked ones become recommendations that show the reason and cannot be applied. See How a price is calculated.

Margin floor

The margin floor is margin on the selling price, net of VAT: “Minimum margin (net price vs net purchase price) — the rule blocks prices whose margin, (price − purchase price) ÷ price, falls below this threshold”. For example, with a purchase price of 80.00 net and a margin floor of 20%, the lowest net price the rule accepts is 80.00 ÷ (1 − 0.20) = 100.00. With 23% VAT, that is 123.00 gross; a proposed price of 119.99 gross is blocked.
  • Set it with the slider, from 0% to 50% in steps of 0.5. 0 means no margin floor.
  • The floor must be below 100%: a 100% margin would need a purchase price of zero.
  • To compare it with a gross price, Omnilinker uses the VAT rate of the product’s price at the output level. If that rate is unknown, the product is skipped.
The margin floor needs a usable purchase price: one that is known, above zero, and in the same currency as the output price level. Without one, the product is blocked rather than priced against nothing. See Purchase prices.
A new rule starts with an 18% margin floor. If your products have no purchase prices yet, every product the rule covers is blocked until you add them or move the slider to 0.
The margin floor is checked once more when a price is about to be written: when someone approves a recommendation, and before an Auto-apply rule writes a price. That check uses the purchase price at that moment and the price exactly as it will be stored. If the margin is no longer enough, for example because the purchase price went up, the recommendation is marked as failed to apply instead. A margin floor set outside the editor can be above the slider’s maximum. The editor then says “This rule’s margin floor is …%, above this slider’s …% maximum, and it is kept as it is. Moving the slider replaces it with a floor of at most …%.” The Margin Floor strategy has its own Minimum margin, separate from this constraint; see Strategies.

MAP

The MAP constraint blocks any price below the amount you enter. Unlike MIN PRICE, it does not raise the price: a manufacturer’s minimum advertised price is a line the rule must not cross, so a price under it is held back for you to see. If both are set, put MIN PRICE at or above the MAP, so that prices raised to the minimum are not blocked.

Min price, max price and rounding

MIN PRICE and MAX PRICE clamp the price: a price outside them is moved to the nearest limit. If no price can be stored between them in the currency’s smallest unit, the product is skipped. PRICE ROUNDING always rounds down: The editor has no “no rounding” choice: a rule saved without rounding through the API opens with ×.99 endings selected, and saving it in the editor keeps that choice. ×.99 endings does nothing in a currency without fractions, and rounding never turns a price into zero.

Auto-apply guardrails

Two settings check every price an Auto-apply rule is about to write. A price that fails is rejected: it appears in the recommendation queue as rejected, with its reason, and is not written. When someone approves a recommendation by hand, the same checks only log a warning. To change them, open Administration > Settings, choose Repricer > Guardrails and the Auto-apply guardrails block, and click Save settings. You need the Repricer Settings permission.
These are the only automatic stops. There is no limit on how many prices a rule may change per hour, and a rule is never paused automatically. Before you switch a rule to Auto-apply, try it with a dry run and run it in Suggest mode for a while.

The Constraint matrix page

Pricing Intelligence > Repricer > Constraint matrix is a preview of constraints shared across brands, categories and products. Everything on it, including the brands, categories, contracts and coverage figures, is sample data, and its buttons do not save anything. It does not show or change your rules’ constraints. Set constraints in each rule, as described above.

Troubleshooting

MIN PRICE is higher than MAX PRICE. Lower one or raise the other.
Set the margin floor below 100% with the slider.
The rule was saved with a margin floor of 100% or more. Move the slider to set a new floor, then save the rule.
Check that the products have purchase prices, in the same currency as the output price level. If you do not need a margin floor, set it to 0. Open a blocked recommendation and use Show me why to see the reason; see Recommendation queue.
Rounding always goes down, and MAX PRICE lowers prices above it. Check PRICE ROUNDING and MAX PRICE.
The change was larger than Auto-apply max delta percent, the price was below Auto-apply min absolute price, or the margin floor failed when the price was about to be written. The recommendation shows the reason.

Rules and strategy templates

Build the rule these constraints belong to.

How repricing works

Where constraints fit in a rule run.

Purchase prices

The costs a margin floor is measured against.

Dry runs

See which prices a rule’s constraints would block.