NewPROAdded an “Order Streak” way to earn, for rewarding customers who keep ordering to a regular schedule. Set the schedule under Earn > Order Streak – for example one order every week, or two orders every month – along with how many periods in a row a customer must keep it up before the bonus is awarded. Periods run from the order that started the streak rather than from the calendar, so a customer who starts on the 10th always has until the 10th of the next period. Miss a period and the streak ends, and their next order starts a new one. A minimum order value can be set so token orders cannot keep a streak alive, measured the same way as your “Points for Spending” earning rate. The bonus can be awarded once per customer, or paid out again every time an unbroken streak reaches the length you set. Reminder emails can be turned on to warn customers before a streak runs out: choose how many days before the period ends to send them, and the minimum streak a customer must have built up to be worth reminding, so first-time customers are not chased. A customer is emailed at most once per period, and never once they have already placed the orders that period needs. The reminder email is edited from the Email Notifications tab, and the streak works with level multipliers, conditional rules, points delay, and the reports breakdown like every other way to earn. On the rewards dashboard and in the floating rewards widget, customers get a progress bar showing how many periods they have banked, which one they are working on and what it still needs, which turns amber when the period is about to run out.
NewAdded a [spar_product_points] shortcode for placing the product points message by hand, for stores that want it somewhere the automatic placement does not reach. Drop it into any page builder shortcode widget or block on a product template. It uses the product being viewed, or a specific one with [spar_product_points product_id=”123″]. A matching “Manual placement” choice has been added to the “Product points display location” dropdown, which turns the automatic placement off so the shortcode is the only thing that renders the message.
NewThe “Reward Points” panel on the order edit screen now explains why an order has not earned points, instead of showing “Points not yet awarded” for every case. It names the actual reason: the order has no customer account assigned (the most common cause on orders created by hand in the admin, where the Customer field is left as Guest and there is nobody to credit the points to), the customer is banned from earning points, points were redeemed on the order, the order earns no points, or the order is simply waiting to reach the status that points are awarded on, which is now named in the panel. Each reason comes with a short note on what to do about it, and the “Grant points now” button reports the same reasons when it cannot award, rather than a generic failure message.
NewAdded a “Redeem a Reward” panel to the admin customer page (Points & Rewards > Customer Points > View Customer), for redeeming a reward on behalf of a customer, for example when taking an order over the phone. It runs exactly the same redemption the customer would run themselves: their points are deducted immediately, the voucher coupon is created and restricted to their email address, and the reward claimed email is sent, so the code can then be applied to a manually created order with the WooCommerce “Apply coupon” button. Rewards that add a product to the cart can still only be redeemed by the customer, because an admin request has no cart, so only voucher and custom rewards are offered here.
NewAdded an “Apply Points for Discount” section to the “Reward Points” panel on the WooCommerce order edit screen, for spending a customer’s points against an order you are building for them, for example one taken over the phone. It stays collapsed to its heading until you open it, and only appears when there is actually something to redeem: the order has to still be editable, and the customer has to have enough points for the order to be worth discounting. Entering an amount shows what it is worth as you type it, and applying it deducts the points and adds the discount to the order as the same discount line the checkout produces. The section refreshes as soon as you change the Customer field, so you are always looking at the balance of the customer the order is actually for. Removing the discount returns the points. Because the discount is the same line the checkout creates, refunding or cancelling the order returns the points exactly as it does for a redemption the customer made themselves, and the “Do not award ANY points on orders where points were redeemed at checkout” setting recognises it too.
NewPROAn order whose points are being held back by the “Points Delay” feature now says so on the order edit screen. The “Reward Points” panel shows how many points are waiting and the date they reach the customer’s balance, so a delayed award is no longer indistinguishable from one that failed: the order records the points as earned while the balance deliberately stays unchanged until the delay is up. Orders with more than one pending release show the combined total and how many parts it arrives in.
TweakRedesigned the “Reward Points” panel on the order edit screen. The customer the order belongs to is now shown with their avatar, name, email address and current balance, so it is obvious whose points any action on the panel affects. The potential, awarded and deducted totals are laid out as figures rather than run-on text, and the status message now takes its colour from what it means — red when something needs attention, green when points have been awarded, amber while an order is still waiting to reach the status that awards them — where previously every state, including outright failures, was shown in the same amber box.
FixThe product points message now appears on product pages built with a page builder or a block theme. Elementor, Divi, Bricks, Oxygen, Royal Elementor Addons and WordPress block themes build the product page out of their own widgets and blocks, and never run the WooCommerce hooks the message was attached to, so “Show points on product pages” appeared to do nothing on those stores. The message is now placed next to the add to cart button on such templates, respecting whether the chosen display location sits before or after it. Themes that use the standard WooCommerce product template are unaffected and keep using the exact display location chosen in the settings.
FixPoints redeemed at checkout are no longer lost on WooCommerce Subscriptions renewal orders. When a customer paid for a renewal manually, WooCommerce Subscriptions removed the points discount from the renewal cart before the order was created, but the points were still deducted — leaving the customer paying full price with their points spent. The discount is now kept on renewal checkouts and the points are deducted against it as normal.
FixPoints are never deducted unless the discount actually reaches the order. If anything removes the points discount before an order is created, the points now stay on the customer’s balance and a note is added to the order explaining what happened, instead of silently charging them.
FixA points discount applied when buying a subscription product is no longer included in the subscription’s recurring total, so it only ever comes off the order it was redeemed on rather than every future renewal.
FixThe points discount is now correctly recognised on stores using a translation of the plugin, where the discount line was previously not matched by name.
FixPoints redemption is now captured on the WooCommerce Checkout block at the point the order is placed, rather than relying on the customer reaching the order confirmation page.
FixThe settings page no longer triggers a fatal error (“Uncaught ValueError: Unknown format specifier”) on stores running the plugin in a translated language. Some of the bundled translations had lost the “%s” placeholder from their text — for example the Italian translation of “%s appear on the customer account page and rewards widget” — which made PHP fail as soon as the string was displayed and took the whole page down with it. The affected strings in the French, Italian, Japanese, Dutch, Polish, Brazilian Portuguese and Russian translations have been corrected, and a handful that could not be recovered now fall back to English.
FixAdded a safeguard so a faulty translation can no longer break a page. Every translated string is checked before it is used, and if its placeholders do not match the original text the English original is shown for that string instead. This also protects stores that use their own translations from WordPress.org, Loco Translate, WPML or similar tools.
FixThe discount value shown next to the points slider now always matches the discount applied to the cart. On stores that display prices including tax, the announced value and the cart line were worked out by two different calculations and could disagree by a cent — for example, redeeming 500 points at a rate of 120 points per 1.00 announced “5.00” but took 4.99 off the cart. The preview now follows the same steps WooCommerce takes when it taxes a discount, including on carts that mix more than one tax rate, so the value a customer is quoted is always the value they receive.
FixThe points discount preview in the FunnelKit side cart now includes tax on stores that display prices including tax, where it previously showed the value before tax was applied.
FixAn order is no longer recorded as having awarded points when the points were actually refused. If the points could not be credited, for example because the customer is banned from earning, the order was still stamped with the awarded amount, so the order edit screen reported “Points Awarded” while the balance had not changed, and the order could never be put right because both the automatic award and the “Grant points now” button treat that stamp as proof the points were given. The order is now only marked as awarded when the balance actually changed, so affected orders can be granted afterwards once the cause is fixed. Points held back by the PRO points delay feature are unaffected and are still recorded as awarded.
FixThe “Completed status” setting under Earn > Place an Order no longer hides a status that has gone missing. If the status chosen there came from a plugin that is no longer active, the dropdown quietly fell back to displaying “Completed” while still storing the missing status, so no order could ever reach it and points were never awarded automatically, with nothing on screen to explain why. The saved status is now kept in the list and labelled “(status no longer registered)”, with a warning that a valid status needs to be chosen, and the order edit screen reports the same problem.
FixThe “Potential Points” figure on the order edit screen now matches the points the order will actually earn. It was worked out from the order’s spend alone, so it left out the “Maximum points per order” and “Maximum percentage of total” limits, the customer’s level multiplier, fixed points tiers and any conditional rules: on a store that caps orders at 100 points, a 300.00 order announced 300 points on the panel and then awarded 100, with nothing to explain the difference. The figure now comes from the same calculation the award itself uses, so what the panel promises is what the customer receives. The “Modify” editor still works on the underlying amount, which is the figure those limits are then applied to, and a first order bonus is still added on top rather than being capped along with the order points. The pending points shown on a customer’s profile are calculated the same way, where they previously left the per-order limits out.
FixOrders created by hand in the admin no longer end up fixed at 0 points. The “Modify” field in the “Reward Points” panel was part of the order form, so every “Create” or “Update” click quietly saved the figure on display as a custom points amount for the order. On the “Add New Order” screen that figure is 0, because the panel is drawn before any products have been added, so the order was fixed at 0, awarded nothing when it was completed, and the panel reported “No points earned for this order”. Saving an existing order froze the displayed figure in the same way, so products added afterwards no longer counted, and on a first-time customer the frozen figure included the first order bonus, which was then awarded a second time. A custom amount is now only saved when it has actually been entered in the “Modify” editor, which also now opens on the figure it replaces rather than the total including the first order bonus, and the potential points follow the order’s items otherwise. Orders that already carry a custom amount now show it as “Custom”, with a “Reset” button that returns them to the automatic calculation, and a custom amount of 0 is reported in plain terms rather than as an order that earns nothing, so affected orders can be put right and granted with “Grant points now”.
NewAdded WooCommerce Subscriptions support with a dedicated “Subscriptions” settings tab that appears when WooCommerce Subscriptions is active. Points are now reliably awarded on subscription renewal orders — previously, renewals only earned points when the award timing was set to “completed” and were silently skipped on the default timing. Because renewal orders are created in the background and never reach the “thank you” page, a dedicated award timing option controls when renewal points are granted: matching your “Place an Order” timing (default), when the renewal payment completes, or when the renewal order is completed. Renewal earnings are labelled separately in the points activity log, and refunded or cancelled renewals deduct points as normal.
NewPROAdded a “Renewal earning rate” option to the Subscriptions settings, to award renewal orders a percentage of the regular points (e.g. 50%) or a fixed number of points per renewal, instead of the full regular rate.
NewAdded “Include sign-up fees in points calculations” and “Exclude subscription products from earning points” options for initial subscription purchases. Both are applied consistently across order awards, cart/checkout previews, and product page points messages.
NewAdded a “Count renewal orders toward the Bonus after X Orders milestone” option, so automatic subscription renewals can be excluded from order-count bonuses (the “Bonus after X Orders” earning method itself is a PRO feature).
NewAdded a “Points Value Prefix” option under the Points Label settings tab, letting you show a symbol before every points amount (for example a “$” so 100 points display as “$100”). The prefix is applied everywhere points are shown to customers, including the rewards dashboard, floating rewards widget, product pages, cart, checkout and thank you pages, the Claim Rewards page, points history and customer emails.
NewAdded a “Points Icon” option under the Points Label settings tab to show a small icon next to points values. Choose from the bundled icons (coin, dollar, star, gem, trophy or gift) or upload your own image from the WordPress media library, and choose whether the icon appears only on prominent amounts (balances and product/cart totals) or on every points value shown to customers.
NewPROThe “Use different multipliers per earn type” option under Levels & Badges now includes every way to earn, including the “Product Offers & Bonuses”, “Daily Prize Wheel” and any developer-registered “Custom Ways to Earn”, so each can have its own multiplier.
NewPROThe “Cart: Coupon Applied” conditional rule condition can now be left blank to match ANY applied coupon, instead of requiring specific coupon codes. This makes it easy to reduce or disable points whenever a customer uses any discount voucher (for example, pair it with the “Hide/Disable” action to award no order points on any coupon order). Entering one or more codes still targets only those coupons as before.
NewPROThe “Cart: Coupon Applied” conditional rule condition now includes “Coupon Types” checkboxes, letting you choose which coupon types count for the condition: “Regular WooCommerce Coupons”, “Points Voucher Coupons” (including Prize Wheel vouchers) and “Points Referral Coupons”. All types are enabled by default, so existing rules are unchanged.
NewPROAdded a “Color” column to the Prize Wheel prizes settings, allowing each prize’s panel colour on the wheel to be customised. Colours default to the wheel’s existing palette, so existing wheels are unchanged.
NewPROAdded “Exclude products from points redemption” and “Exclude product categories from points redemption” options under Rewards > Advanced Settings. The value of any matching cart items is removed from the cart total used to cap the points discount at checkout, so points can no longer be redeemed against those products (for example, items in a Sale category). Works alongside the existing “Maximum cart percentage for points redemption” limit, and is enforced on both the redemption slider and server-side.
NewPROAdded a “Minimum cart total required to redeem points” option under Rewards > Points Discount on Checkout > Advanced Settings. Customers cannot pay with points until the cart reaches this amount. When the cart is below the minimum, the redemption slider and “Add Discount to Cart” button are disabled and an explanatory note is shown beneath the tool on the cart and checkout. The requirement is enforced server-side too, so an already-applied discount is automatically removed if the cart later drops below the minimum (for example, after removing items). Works alongside the existing “Maximum cart percentage for points redemption” limit. Set to 0 for no minimum.
NewRedesigned the admin “Reports & Analytics” page. Added a date range dropdown with quick presets (All time, Last 7/30/90 days, Last 12 months, or a custom range), a new “Points Trend” chart showing points earned vs redeemed over time (daily for shorter ranges, monthly for longer ones), and a new “Points Redeemed Per Method” section breaking down where points are being spent or deducted (reward redemptions, order refunds/cancellations, points expiry, admin adjustments, referral clawbacks and prize wheel spin purchases). The “Points Earned Per Method” boxes now also show how many times each method was awarded, and the stat boxes are laid out in a tidier grid of up to five per row.
NewAdded new metrics to the “Reports & Analytics” overview: “Redemption Rate” (the share of earned points that have been redeemed in the selected range), “Points Liability” (the monetary value of all points currently in circulation, calculated from your points redemption rate), “Avg Earned / Customer” (average points earned per active customer in the range) and “Outstanding Vouchers” (claimed reward vouchers that have not been used or expired yet, including the combined value of fixed-amount vouchers).
NewAdded an “Export CSV” button to the “Customer Points” admin page, allowing every customer’s points balance and lifetime earned total to be downloaded as a CSV file.
NewAdded an “Export CSV” button to the “Points Activity Log” admin page, allowing the points activity log to be downloaded as a CSV file. The download respects any filters currently applied to the log (date range, customer, action text, points range and type).
NewAdded an “Import / Export Settings” section to the plugin settings page, opened with the small link at the very bottom of the settings page. “Export Settings” downloads every plugin setting as a JSON file, for backups or for copying your configuration to another site, and “Import Settings” restores a previously exported file. Imported values pass through the same validation and sanitisation as a normal settings save, and any settings not present in an imported file (for example an older export from a previous version) keep their current values rather than being reset.
NewAdded anti-fraud controls to the referral system under Earn > Referral System. “Only award referral points for new customers” limits the referral bonus to a referred customer’s first order, so their repeat orders no longer keep rewarding the referrer. “Maximum referral bonuses per referrer per day” caps how many referral bonuses one customer can earn each day (set to 0 for no limit). An optional “Block referral points when the order IP matches the referrer” check skips the bonus when a referred order is placed from the same IP address as one of the referrer’s own recent orders. All three are disabled by default so existing behaviour is unchanged.
NewPROExpired reward voucher coupons are now automatically deleted on a daily schedule when “Auto Delete Expired” is enabled, instead of only being removed when the Reward Vouchers admin page is opened.
TweakThe “Potential Points” in the admin order meta box, the customer detail page pending points, and the order “thank you” page projections now use the same final points calculation as the actual award, so level multipliers, earning caps, conditional rules and subscription renewal rates are all reflected consistently before points are granted.
TweakSplit the “General Settings” tab in the plugin settings into three dedicated tabs for easier navigation: “Points Label” (rewards/points labels, value prefix and points icon), “Product Pages” (points messages on product pages and category/shop listings) and “Terms and Conditions”. The “Settings” buttons for the voucher expiry and auto-delete features on the PRO Features tab now also open the “Points Expiry” tab where those settings live.
TweakPROMoved the plugin’s scheduled background tasks — delayed points, points inactivity expiry, birthday bonuses, guest reminder emails and expired coupon/voucher cleanup — from WordPress cron (WP-Cron) to Action Scheduler, which is bundled with WooCommerce. This makes these tasks more reliable and lets you monitor them under WooCommerce > Status > Scheduled Actions. Existing scheduled events are migrated automatically when you update, the plugin falls back to WP-Cron if Action Scheduler is ever unavailable, and all scheduled tasks are cleared cleanly when the plugin is deactivated.
TweakPROPoints inactivity expiry and guest reminder emails now process customers in batches that continue until finished, instead of handling everyone in a single run, preventing timeouts or memory issues on stores with very large customer bases.
TweakPROThe floating rewards widget no longer loads the Font Awesome icon library on every page of your site. The widget button’s icon is now rendered as a lightweight inline SVG, and the icon library is only loaded when a customer opens the widget, removing a large render-blocking stylesheet and font download for faster page loads.
FixPROThe “Bonus after X Orders” milestone now detects WooCommerce High-Performance Order Storage correctly. Previously, stores still using legacy (posts) order storage on modern WooCommerce counted orders from the empty HPOS table, so the milestone could never be reached.
FixPROThe level points multiplier (and any per-earn-type multipliers) is now correctly applied to all bonus ways to earn. Previously it was only applied to order-based earning, so daily login, login streak, birthday, signup, review, first order, bonus after X orders, referral and social sharing points ignored the level multiplier.
FixPROThe birthday date entered on the rewards dashboard is no longer shifted back a day (e.g. saved as October 7th but shown as October 6th) on stores whose timezone is behind UTC. The date is now stored and displayed exactly as entered, regardless of the site timezone.
FixHardened all points balance changes against concurrent requests. Balances are now updated atomically at the database level, and reward redemptions, order point awards/deductions, checkout points discounts, prize wheel spins, spin purchases and social share rewards are serialised, so double-clicks or simultaneous requests can no longer double-spend or double-award points. Manual balance edits on a user’s profile page are now also recorded in the Points Activity Log.
FixPoints redeemed as a discount at checkout are now re-checked against the customer’s current balance both when the discount is applied and when the order is placed. Previously, if the balance no longer covered the points (for example after redeeming those same points for another reward first), the order could still keep the full points discount without the points actually being deducted. The discount is now automatically removed when the points are no longer available, and the checkout deduction refuses rather than reducing to zero, so points can never be spent twice.
FixHardened the referral points award and refund deduction against concurrent requests, so simultaneous order status changes or refund events can no longer award or deduct referral points twice for the same order.
FixStrengthened self-referral blocking so it also matches a referred order’s billing email against the referrer’s account and billing email. Previously only the logged-in account was checked, so a customer could bypass it by logging out or checking out as a guest with their own email.
FixPROThe “Usage Limitation” option for referral gift coupons is now enforced. Previously gift coupons were always created with unlimited uses regardless of the setting; each referred customer’s coupon is now limited to a single use (per email address or per user account) unless “Unlimited uses” is selected. The limit also applies to gift coupons created before this update.
FixCorrected the referrer’s “successful referrals” count being increased more than once for a single coupon-based referral (and when a referred order was later refunded).
FixThe checkout/cart rewards box points summary tooltip now shows on the cart page too, not just the checkout page. Previously the summary breakdown was only built on the checkout page, so the tooltip never appeared on the cart even when “Show points summary” was enabled.
FixPRODelayed points are no longer capped at 25 releases per hour. Due points are now released in continuing batches until the backlog is cleared, so stores that award a large volume of delayed points no longer build up an ever-growing queue of unreleased points.
FixPROOpening the “Reward Vouchers” or “Referral Gift Coupons” admin pages with “Auto Delete Expired” enabled could delete vouchers or coupons that had not actually expired yet, because their expiry date was misread. Expiry dates are now read correctly, so only genuinely expired vouchers and coupons are removed.
FixPROThe “View Products” button on the “Write a Review” card of the rewards dashboard did nothing when clicked on some sites. The dashboard’s scripts and stylesheets were being served with a fixed version number that never changed between plugin updates, so browsers, CDNs and caching plugins kept serving an older cached copy from before the button existed. Every plugin script and stylesheet is now versioned with the plugin version, so updated files are always picked up straight after an update — this also fixes any other feature that appeared to be missing or unresponsive because an outdated file was still cached.
FixPROThe list of products inside the “Products to Review” popup lost its list formatting on the My Account rewards dashboard (it was unaffected on pages using the rewards shortcode). The popup’s screen reader labelling was also being stripped out. The dashboard’s HTML filtering now allows list markup and accessibility attributes through, so the popup displays correctly and is announced properly by assistive technology.
NewPROAdded “Product Offers & Bonuses”, a new way to earn that awards bonus points for purchasing specific products, product bundles or product categories. Each rule has its own points value, minimum quantity, earning frequency (once/daily/weekly/monthly/unlimited), lifetime award cap and tracking mode (met within a single order, or accumulated across orders over time). Rules can also have an active start/end date and time with an optional live countdown timer, a “Special Offer” box on matching product pages, and appear on the rewards dashboard with product images (rotating between images for bundles), product links and an add-to-cart button.
NewPROAdded “Custom Ways to Earn”, a developer API to register your own ways to earn points entirely from code with spar_register_custom_earn_way(). Each way supports points, earning frequency (once/daily/weekly/monthly/unlimited), a lifetime cap per user, role restrictions, an active start/end date and time, and an optional live countdown, dashboard card and button. Registered ways appear read-only in the “Ways to Earn” settings (where their rules are shown and their display order can be dragged), and points are awarded from your code via spar_award_custom_earn_way() or the spar_custom_earn_trigger action, with a spar_custom_earn_points filter to adjust the points on the fly.
NewAdded an “Apply tax reduction to redeemed points” option under “Include tax in points preview” in the Points Discount on Checkout settings. When enabled, points redemptions are applied as a taxable discount fee so tax services such as Avalara can reduce the taxable order amount. This option is only shown on stores where an Avalara/AvaTax integration is detected, and defaults to enabled on those stores. A “Points redemption tax class” selector also appears when this option is enabled, allowing the fee to use the default or a custom WooCommerce tax class.
NewPROAdded a “Limit per product” option to the “Write a Review” way to earn, controlling how many reviews per product can earn points for each customer.