Skip to content
Weavee

August 13, 2026

Promotions and pricing in omnichannel retail: how to avoid inconsistent discounts between channels

How to integrate pricing rules, promotions and coupons across ecommerce, POS, ERP and CRM to avoid inconsistent discounts between channels.

Isometric illustration of omnichannel promotions: a grid of channels goes completely dark and a single node stays lit.

Few things break a customer’s trust as quickly as finding a different price for the same product in the online store and in the physical store. And few things erode margin as much, and as silently, as a promotion that was switched off in one channel but is still alive in another. The problem is rarely that the commercial team made a mistake. It is that pricing rules live in four different systems and each one has its own way of interpreting them. This article explains how to integrate prices, discounts, promotions and coupons across ecommerce, POS, ERP and CRM so that a campaign is applied, and switched off, the same way in every channel.

Quick summary

  • The final price a customer sees almost never comes out of a single system: it is the result of a chain of rules applied in order.
  • Defining the order of precedence between base price, commercial price list, promotion and coupon matters more than the tool you use.
  • Promotions that are not switched off on time are the hardest margin leak to detect, because they generate no visible error.
  • Coupon validation has to be centralised: if every channel validates on its own, the usage limit is a suggestion, not a rule.

Why promotions fall out of sync between channels

Pricing rules are usually defined in more than one system. The ERP manages commercial price lists, the ecommerce has its own promotions engine, the CRM handles personalised coupons and the POS applies discounts at the moment of sale. Without a clear integration, each of those systems can end up with a different version of the same campaign. On top of that there is a calendar factor. A promotion has a start and end date and time, and those moments have to match across all channels. A time zone offset, an ecommerce cache that refreshes every six hours or a POS that syncs when the branch opens are enough for the same campaign to be active in one channel and finished in another for hours.

The pricing chain: why order matters

The price a customer sees is the result of applying rules in sequence. When that sequence is not uniquely defined, two systems can reach different results from the same input data:

  1. Base product price, defined in the ERP.
  2. Price list corresponding to the customer, the segment or the channel.
  3. Active promotion applicable to the product or the category.
  4. Volume discount, if applicable.
  5. Coupon entered by the customer.
  6. Exclusion rules that prevent certain benefits from stacking.

The question that has to be answered explicitly before integrating is: does the coupon apply to the list price or to the already discounted price? Can two promotions stack on the same item? If each system answers on its own, inconsistency is guaranteed.

Which commercial rules need to be in sync

  • Price lists and base prices per channel, customer or segment.
  • Active discounts and promotions, including exact start and end date and time.
  • Coupons and their usage logic: single use, per customer, per product, stackable or not.
  • Special commercial terms for B2B or wholesale customers.
  • Exception rules: products excluded from a general promotion.
  • Caps: maximum discount amount, maximum units per customer, total campaign budget.

The most expensive commercial errors

The zombie promotion. It is switched off in the ecommerce but keeps applying in the POS, or the other way round. Nobody reports an error, because from the system’s point of view everything works: something is simply being sold at a discount it should no longer have. The coupon with no real limit. It can be used more times than allowed because its validation is not centralised. A single-use coupon validated per channel allows as many uses as there are channels. The price increase that never arrived. The online price does not reflect a recent increase loaded into the ERP. With tight margins, a few days of selling at the previous price consume the category’s profit. The wholesale customer at retail price. A B2B customer sees a price in the ecommerce that differs from the one their commercial agreement entitles them to. Beyond the margin impact, it creates a commercial argument the sales team has to resolve. The unplanned stacked discount. A general promotion and a personalised coupon combine in a way nobody modelled, and the product ends up selling below cost.

How to integrate pricing and promotions without losing commercial agility

The goal is not to make the commercial process rigid. It is that the marketing or sales team can keep launching promotions at the same speed, knowing the rule will propagate automatically to every channel where it belongs and will be switched off at the exact moment it ends. That requires four architecture decisions:

  • One single definition of the campaign. The promotion is loaded once, in the system designated as the rules engine, and is distributed. It is not replicated by hand in each platform.
  • Propagation with confirmation. The integration layer does not just send the rule: it verifies that each channel has received and applied it. A promotion that never reached the POS has to generate an alert, not silence.
  • Validity synced to the minute. Start and end coordinated, with each channel’s cache accounted for in the calculation.
  • Historical record. Which promotion was active, in which channel and over which period. Without that record, analysing a campaign’s profitability afterwards is impossible, and so is auditing a complaint.

This flow shares requirements with catalogue consistency across PIM, ERP and channels: in both cases, the principle is define once and distribute, instead of maintaining parallel versions.

Illustrative example: the cost of a promotion that never switches off

The numbers depend on each operation, but the exercise helps to size the problem. Suppose a 20% promotion on a category that bills 5,000 dollars a day in the channel where it stayed active. If the campaign was meant to end on a Friday at midnight and is switched off on Monday morning, that is three days of sales with an unplanned discount: around 3,000 dollars of margin given away with no commercial decision behind it. What matters is not the exact number, but that this cost generates no alarm at all. There are no failed orders, no complaints, no system errors. It shows up, at best, in the following month’s profitability analysis, when nothing can be done about it.

Frequently asked questions

Where is it better to define pricing rules: in the ERP or in the ecommerce? Base price and commercial price lists are best kept in the ERP, which is where margin control lives. Promotions can live in a promotions engine or in the ecommerce itself, as long as there is a mechanism that propagates them to the rest of the channels. Can you have different prices per channel on purpose? Yes, and it is a common and legitimate practice. The difference between a per-channel pricing strategy and an inconsistency is that the first is defined as a rule and the second happens through lack of sync. How do you validate single-use coupons across several channels? Validation has to be centralised: every channel queries the same service before applying the coupon, and that service marks the consumption atomically. If each channel keeps its own record, the limit stops existing in practice. What latency is acceptable for a price change? Minutes. A price change that takes hours to reach a channel means selling at a price that is no longer valid, with a direct margin impact. For promotions with a cut-off time, syncing has to be immediate. How do you audit applied promotions? With a per-transaction record that stores which rules were applied and in what order. That detail is what makes it possible to answer why a customer paid what they paid, both in a complaint and in an internal margin review.

Checklist to integrate pricing and promotions

  • Does a promotion switch on and off automatically in every channel at once?
  • Is the order of precedence between price list, promotion and coupon defined?
  • Are coupons validated centrally, regardless of the channel they are used in?
  • Do B2B customer prices appear the same in the ecommerce as in the ERP?
  • Is there an alert if a channel does not confirm receipt of a new rule?
  • Is there a record of which promotion was active in each channel and on what date?
  • Can the commercial team launch a promotion without depending on a manual load in each system?

You may also be interested in reading: • “How to integrate POS, ecommerce and ERP without breaking inventory, pricing or invoicing” • “PIM, ecommerce and ERP: how to keep catalogue, pricing and stock consistent across every channel” • “Microsoft Dynamics 365 and B2B ecommerce: how to sync customers, pricing, orders and invoicing” With Weavee’s omnichannel retail systems integration, pricing and promotion rules are defined once and synced automatically across ERP, ecommerce, POS and CRM, with per-channel confirmation and a historical record, so a campaign looks the same everywhere and switches off when it is supposed to.