Skip to content

Pricing tiers

A tier is a small record edited in WooCommerce → Pricebook → Tiers.

FieldMeaning
RoleThe WP role/capability whose holders belong to this tier (the tier key).
LabelDisplay name used in the switcher, tables, and flowchart.
Multiplier / Base roleCompute the price as multiplier × base role's price when the tier has no explicit price.
Fallback toMSRP, another tier, or none — used when nothing else resolves.
Price overrideHow this tier competes with the other tiers a customer holds (see below).
CategoriesThe products this tier prices: All / Only selected / All except selected.
NotesFree-form documentation for the tier.

Membership is a capability check

A user belongs to tier gold when user_can( $user, 'gold' ) is true. By default that matches a role named gold — WordPress exposes every role as a same-named capability — but it also matches any role that grants a gold capability, so you can name roles however you like.

The same capability check is used everywhere a role is targeted — visibility roles, per-product force overrides, and bulk pricing — so "target gold" means the same thing throughout.

The plugin never creates, deletes, or assigns roles — that stays with the store (or a role manager). Override membership entirely with the wc_pricebook_user_tier filter.

Override semantics

When a customer holds more than one tier, each tier's Price override decides how it competes:

  • Competes on price (lowest wins) — the tier's price is a candidate; the lowest candidate wins.
  • Overrides when this tier has its own price (when_priced) — if the tier has an explicit price for the product, it takes over (distributor-style).
  • Always overrides (in its category scope) (always) — inside its categories, the tier wins outright (category-scoped, e.g. "this account pays MSRP on category X").

Precedence when several apply: alwayswhen_priced › lowest candidate. A tier that is out of its category scope is inert — it contributes nothing.

Category scope

Every tier (and visibility role) uses the same category-set control:

  • All products
  • Only selected categories (include)
  • All except selected categories (exclude)

Released under the GPL-2.0-or-later License.