Pricing & Discounts ยท Module 3.20 Module 3.20 UPDATED v3.9

Points & Rewards

A B2B-native loyalty system built for wholesale buyers. Award points for purchases, account actions, and spend milestones. Sub-accounts can earn points that benefit the parent company. Customers redeem them as store credit at checkout โ€” on all page types including WooCommerce Blocks, FunnelKit, and CartFlows.

In plain terms: For every dollar your wholesale customers spend, they earn points. When they have enough, they use the points to get money off their next order. You can reward bigger spenders with more points per dollar, give bonuses for milestones, and even let sub-accounts earn points that benefit the whole company.

๐Ÿ›’ Purchase-Based Earning

Configurable points per $1 spent. Different earning rates per role โ€” Gold tier earns 2x, Silver earns 1.5x, standard earns 1x. Role multipliers are applied automatically.

๐ŸŽฏ Action-Based Earning

Award points for account registration, first order, sub-account approval. Welcome bonuses and one-time rewards handled separately from ongoing purchase earning.

๐Ÿ† Milestone Rewards

Bonus points when customers hit thresholds: 10th order, $10,000 cumulative spend, or 1,000 total points earned. Unlimited milestones, each tracked per user.

๐Ÿ‘ฅ Sub-Account Sharing

When a sub-account places an order, the parent account earns a configurable percentage of those points. Encourages teams to centralise purchasing.

๐Ÿ’ฐ Redeem at Checkout

Redemption widget shown on cart, checkout, WooCommerce Blocks, FunnelKit, and CartFlows checkouts. Customers choose how many points to apply. Converts to a cart discount at a configurable rate.

โฐ Point Expiry

Optional expiry period per point batch. Customers receive reminder emails before expiry. Expired points are deducted via the daily cleanup routine.

๐Ÿšซ Redemption Controls

Set minimum balance before redemption is available. Set maximum redemption percentage of cart. Block redemption when sale items or B2B discounts are in cart. All configurable independently.

๐Ÿ“ฑ Checkout Blocks Support

Points widget renders correctly on WooCommerce Cart and Checkout Blocks, not just the classic shortcode checkout. Also supports FunnelKit and CartFlows via universal wp_footer injection.

How to Set Up Points & Rewards

How Points Are Earned

Earning Points #

From purchases

Points are awarded after an order reaches the configured status (default: "completed"). The earnlable total is calculated from the order subtotal. You can optionally include tax and shipping in the earnable total, or exclude sale items from earning.

From account actions

These are one-time awards configured in Settings โ†’ Points & Rewards โ†’ Account Bonuses:

From milestones

Milestone triggers check after every point award event:

Each milestone is awarded once per customer. Awarded milestones are tracked per user so they can't be earned twice.

Sub-account earning

When a sub-account places an order, their points are calculated normally. If "Parent Earns from Sub" is enabled, the parent account also receives a percentage of those points as a separate transaction. Both transactions appear in the respective account's points history.

How Points Are Redeemed

Redeeming at Checkout #

A redemption widget appears on cart and checkout pages. It shows the customer's current balance (in points and equivalent currency value), and lets them enter how many points to apply as a discount. The discount updates the cart total in real time.

Where the widget appears

Redemption restrictions

You can configure these restrictions independently:

Real Examples

Example Setups #

โญ 1 point per $1, 100 points = $1 off

The simplest setup. A customer spending $500 earns 500 points = $5 off a future order.

Earn rate: 1pt/$1 Redeem: 100pts=$1
Effective reward rate: 1% back on every order. This is a common baseline for B2B loyalty programmes.

๐Ÿ† Auto-upgrade to Gold when 1,000 points reached

A customer reaches 1,000 lifetime points and is automatically promoted to your Gold wholesale tier.

Points: Milestone trigger Hook: woob2b_points_awarded User Roles
Result: The role change triggers the Gold discount rule automatically. No admin action needed โ€” the hook does it programmatically.

๐ŸŽ„ Double points for Christmas week

For one week only, every order earns 2ร— points.

Hook: woob2b_points_to_award
Result: The filter checks the current date. Between Dec 18โ€“25, it returns $points * 2. Customers see "2ร— points week" in the earn banner on the cart page.

๐Ÿ‘ฅ Company earns from all team orders

A company has 8 purchasing agents. Each agent earns their own points, AND the company account earns 50% of every agent's points too.

Sub-Accounts Points (parent share: 50%)
Result: 8 agents ordering $500/month each = $4,000/month total โ†’ 4,000 points for the company + 4,000 split among agents. Company reaches milestone tiers much faster.

Key Settings

SettingWhat it doesDefault
Points Per $1 SpentBase earning rate. All customers earn this rate unless a role multiplier overrides it.1
Redemption RatePoints required to redeem $1 store credit.100
Min Points to RedeemMinimum balance before the redemption widget appears at checkout.0
Max Redeem PercentageMaximum percentage of the cart total that can be covered by points redemption.100%
Point Expiry DaysDays after earning before points expire. 0 = never.0
Sub-Accounts Earn PointsWhether sub-accounts earn points on their own orders.On
Parent Earns from SubIf on, parent account earns a percentage of every sub-account's points.Off
Parent Earn PercentagePercentage of sub-account points the parent receives (e.g. 50).100%
Allow with CouponsLet points and coupon codes be used on the same order.On
Allow with Sale ItemsLet points be redeemed when sale items are in the cart.On

By default, points are earned on the order subtotal only (excluding tax and shipping). You can enable "Earn on Tax" and "Earn on Shipping" separately in Settings โ†’ Points & Rewards โ†’ Earning. You can also exclude sale-priced items from earning if you don't want to reward discounted purchases.

Points are a separate system from Company Credit. They're redeemed as a cart discount (fee line), not deducted from a credit balance. If a customer uses both Company Credit and points on the same order, the points discount reduces the cart total before the remaining amount is charged to their credit account.

Yes. The redemption widget is injected into Blocks-based checkouts via the woocommerce_blocks_enqueue_cart_block_scripts_after hook. A universal fallback also runs on wp_footer to catch FunnelKit, CartFlows, and other custom checkout implementations. The widget won't show on the order-received (thank-you) page.

Use the woob2b_points_awarded action hook. It fires every time points are added to any user's balance, with parameters for user ID, points amount, reason string, and order ID. Use woob2b_points_to_award (filter) to modify the number of points before they're awarded โ€” e.g. to apply a time-limited 2ร— bonus. See the Hooks reference for full code examples.