Set and maintain prices

Time-limited and on-request prices

Campaign prices that end by themselves, project prices with a term, and articles that carry no published price at all.

Your supplier clears a warehouse and gives you six weeks of better conditions on forty articles. Sales wants them in the shop on Monday and gone on the 15th without anyone having to remember to switch them off. In the same catalogue sit the made-to-order assemblies that should never show a number at all.

Those are the two things every B2B price book needs and most spreadsheets handle badly: a price that stops on a date, and an article that deliberately has no price.

Where a validity window can sit

Validity exists at two levels, and choosing the right one is most of the job.

Put the window onWhenEffect
The price listThe whole price book is temporary: a campaign, a quarter, a contract termOutside the window the list does not resolve at all; buyers fall through to whatever is next
The entryA few articles inside an otherwise permanent list are on actionOnly those rows expire; the rest of the list is untouched

A rule of thumb: if the reason for the price is temporary, put the window on the list. If only the articles are temporary, put it on the entries.

A campaign that ends by itself

  1. Create a price list: Order Management › Prices › Price lists › New price list. Code it for what it is: aktion-q1-2026.
  2. Edit list and set:
    • Priority high enough to beat the lists it must override. 50 beats a contract list at 10; leave it at 0 and it will not beat anything.
    • Valid from and Valid until: the campaign window.
    • Account / Contact / Channel: usually empty for a public campaign, or a channel if the action is online-only.
    • Logged-in buyers only: on, unless anonymous visitors should see the campaign too.
  3. Add entries only for the articles on action.

When Valid until passes, the list stops resolving. Nobody has to remember to switch it off, and nothing has to be deleted.

A campaign at high priority beats contract prices too. That is usually what you want. Check it anyway. If a customer's negotiated price is already lower than your campaign price, a high-priority campaign list makes them pay more than their agreement says. Either exclude those articles, or leave the campaign at a priority below your contract lists.

A price on a few articles for a few weeks

Put the window on the entries instead:

  1. Open the list and find the entry, or add a new one.
  2. Set Valid from and Valid until on the entry.
  3. Save.

The entries grid shows the window in its Valid column, so you can see at a glance which rows in a list are temporary.

Project prices

A project price is a price for one job, for one customer, for a defined period. It is a contract price with a short life, and the only thing that keeps it from quietly becoming permanent is the end date.

Use a price list bound to the account with a hard Valid until, and code it for the project rather than the customer: proj-halle7-2026, not a second kd-10042. That way, when it expires, it is obvious what expired.

A concession without an end date is a price change. If somebody grants a special price "only for this job" and no Valid until is entered, you have permanently repriced that article for that customer and nobody will notice for years. Treat a missing end date on a project list as an error.

Articles with no published price

Set an entry's Type to On request. The price call then answers "on request" instead of an amount, and the article stays in the catalogue where buyers can still find it, compare it and enquire about it.

Use it for:

  • made-to-order assemblies and configured articles,
  • spare parts whose price depends on the machine and its build year,
  • articles priced from a daily raw-material or metal index,
  • anything where the honest answer is "it depends".

Two rules:

An on-request entry outranks a price. Where it applies, the answer is "ask us" even if another list carries a number. That makes it a deliberate choice, and it means you should not create one for an article you want priced from another list.

"No price" is not zero. An article that no list prices also resolves as on request. Never type 0.00 to express "we do not publish this"; zero is orderable, and somebody will order at it.

What to check

  • On the price list grid, the Validity column shows the window you intended, in the right year. A campaign ending in 2025 when you meant 2026 never applies at all.
  • Ordering matters: a campaign at priority 50 and a contract list at 10 means the campaign wins. Confirm that is what you want for the accounts involved.
  • After a campaign ends, put one of its articles in a test cart and confirm the price returned to the list price rather than staying low.
  • For an on-request article, confirm the storefront shows an enquiry route and not a price of zero.

Next