How the pricing pipeline works

The exact sequence from source amount to stored WooCommerce price, and which value is authoritative at each step.

Updated August 2, 2026

Price Anchor synchronises data. It does not intercept reads. Understanding that sentence explains almost every behaviour in the plugin.

Two kinds of price data

On an anchored product there are two sets of values:

  • Source price meta — the source regular price, the optional source sale price and the source currency. This is the only truth you edit. Nothing writes it except you.
  • WooCommerce’s native price fields — regular price, sale price and active price. On an anchored product these are derived. They are never authored by hand, and exactly one class in the plugin writes them.

On a native product — one where you chose “Store currency — no conversion” — there is no source meta and WooCommerce’s fields are authored by you as usual. Price Anchor does not touch it.

The conversion sequence

  1. Rate lookup. The stored rate table is read. Rates are stored as the value of one unit of a currency in the table’s base currency, which makes a cross-rate a single division and works for any store currency.
  2. Markup. The configured percentage for that source currency is applied. Pro can substitute a product- or category-scoped markup at this point through a public filter.
  3. Margin floor. Pro only. If the calculated price would fall below the locked acquisition cost plus your minimum margin, the floor wins.
  4. Rounding. The selected rounding rule is applied, respecting the store currency’s decimal places.
  5. Write. The result is written into WooCommerce’s native regular, sale and active price fields, and the product’s price transients are cleared so the storefront picks it up.

The regular price and the sale price are calculated from one immutable snapshot of the market rate and filtered markup, so a sale price can never be computed against a different rate than the regular price it is discounting.

What triggers a recalculation

A repricing pass starts when:

  • a rate refresh produces a new, validated rate table;
  • a pricing-relevant setting changes — markup, rounding, source currency, provider;
  • the WooCommerce store currency changes;
  • an individual product is saved, which reprices that product immediately rather than waiting for the catalogue pass.

What never triggers a recalculation

  • A page view. There is no pricing, rate or sync service instantiated for a normal storefront request.
  • An order that has already been placed. Order totals are fixed at purchase, and the per-line pricing evidence is fixed with them.

Subscriptions

WooCommerce Subscriptions prefers its own recurring price field over WooCommerce’s native regular price. A native-only write would therefore leave the raw source amount visible to Subscriptions. For subscription and subscription-variation products, Price Anchor writes and repairs that compatibility-owned recurring amount alongside the native fields, through product CRUD. Existing subscriptions and orders remain immutable; new purchases use the current catalogue price.