About this plugin
RewardCrate is a free cart goal bar for WooCommerce. It shows shoppers
how far they are from the next reward, such as free shipping, a free gift or a
discount, and suggests the products that close that exact gap, with a
one-click add button right inside the bar. When a goal is reached, the reward
applies by itself.
Everything runs on your own WordPress site. There is no SaaS, no account to
create, no API key and no per-order fee.
Why store owners choose RewardCrate
- More than a free shipping bar. Set as many goals as you like, each with
its own reward: free shipping, a free gift product, or a percentage or fixed
discount. One progress bar shows every goal as a marker.
- Suggestions that fit the gap. A shopper $16 away from free shipping sees
in-stock products priced to get them there, not random best sellers, and
adds one without leaving the cart.
- Rewards that apply themselves. The gift drops into the cart at $0, the
discount applies with no coupon code to share, and shipping turns free at
checkout.
- Works with your cart. Classic and block cart and checkout, the
Mini-Cart block, a sticky bar, a shortcode and a block.
- Shows what it earned. A Stats tab counts orders per goal, revenue from
suggested products and what the rewards cost you.
Perfect for
- Stores that want shoppers to reach the free shipping minimum.
- Raising average order value without a blanket sitewide discount.
- Gift-with-purchase promotions: “Spend $75, get a free sampler”.
- Tiered offers: free shipping at $50, a gift at $75, 10% off at $120.
- Moving accessories and add-ons that complete a bigger purchase.
How it works
- Open WooCommerce > RewardCrate and add your goals: the cart amount
that unlocks each one, its label and its reward.
- Choose where the bar shows: cart, checkout, Mini-Cart, a sticky bar on
every page, or anywhere you place the block or the [rewardcrate_goal]
shortcode.
- Shoppers see their progress, the next reward and the products that close
the gap. The bar updates live as the cart changes.
- A reached goal pays out by itself: free shipping at checkout, the gift line
at $0, or the discount, labelled with your goal’s name.
- Check the Stats tab to see orders per goal, suggestion revenue, reward cost
and average order value.
Goals and rewards
- Unlimited goals, each unlocking free shipping, a free gift or a discount.
- Pause a goal without deleting it, or duplicate one to build the next rung.
- Free shipping: make the cheapest paid rate free, or follow the minimum
of your shipping zone’s own Free shipping method.
- Free gift: any simple product or variation, added automatically at $0
with its quantity locked. A shopper who removes the gift is not given it
again for that goal.
- Discount: a percentage or fixed amount, applied automatically and shown
under your goal’s name. Nothing to type, nothing to leak.
- Goals are measured on the cart subtotal before discounts, so an unlocked
discount never pushes the cart back below its own goal.
- Decide whether goal discounts combine with coupons marked “Individual use
only”.
Gap-filler suggestions
- Products priced from the gap up to a ceiling you set, so suggestions
actually unlock the next goal.
- Your pinned products first, then cross-sells and products from the same
categories as the cart, then best sellers.
- Exclude products or whole categories. Out-of-stock, hidden and
already-in-cart products are never suggested.
- One-click add from the bar in classic and block carts; variable products
link to their page unless exactly one variation fits.
- Fast on large catalogues: it reads WooCommerce’s product lookup table and
caches the results.
Display
- Cart and checkout (classic and block), the Mini-Cart block drawer, product
pages (shown even before anything is in the cart), a dismissible sticky bar
at the top or bottom of the screen, a block for any page, and a shortcode.
- Three bar styles (Card, Minimal and Bold), an optional striped fill, and a
reward icon on each goal’s marker: truck, gift, tag, percent, star, heart,
crown or bolt.
- Eight ready-made colour palettes, or your own colours, including a fill for
when every goal is reached and the border, with a contrast check so the
message stays readable.
- Corner roundness, bar thickness, text size, rounded or square bar ends,
left or centred text, full or narrow width, and whether goal labels and
amounts show under the bar.
- Sticky bar on every screen size, desktop only or phones only, after a delay
you choose, and kept off the pages you pick.
- Your own suggestions heading and Add button text, and a Custom CSS box for
anything else.
- A celebration when a goal unlocks: confetti or a badge, never animated for
visitors who prefer reduced motion.
- Your own messages for an empty cart, progress, each unlock and the end,
with a live preview of the real bar. Messages can name the amount still
needed, the goal’s own amount and its reward.
- Keyboard and screen reader friendly, and translation ready.
Built for modern WooCommerce
- High-Performance Order Storage (HPOS) and the Cart and Checkout blocks.
- No custom database tables and no external requests.
- Loads its scripts only on pages that show the bar.
Source code and build
The JavaScript in the build/ folder is compiled from the plugin’s own
human-readable source, which ships inside the plugin:
- build/admin.js from resources/js/admin/index.tsx (the settings screen)
- build/widget.js from resources/js/widget.ts (the bar in classic carts, the mini-cart widget and the sticky bar)
- build/blocks.js from resources/js/blocks/cart-goal.tsx (the bar in the Cart and Checkout blocks)
- build/blocks-editor.js from resources/js/blocks/editor.tsx (the Cart goal block in the editor)
- build/goal-bar-editor.js from resources/js/blocks/goal-bar-editor.tsx (the standalone goal bar block in the editor)
- build/coupon-labels.js from resources/js/blocks/coupon-labels.ts (goal discount labels in the Cart and Checkout blocks)
Block metadata lives in resources/blocks/ and styles in resources/css/.
No third-party library is bundled: WordPress and WooCommerce packages are
loaded from the site at runtime.
js 20 or newer, then run npm install
and npm run build in the plugin folder. The build uses @wordpress/scripts
js.