{"id":283877,"date":"2026-04-26T16:38:39","date_gmt":"2026-04-26T16:38:39","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/neogrow-loyalty-points-photo-reviews-ugc-for-woocommerce\/"},"modified":"2026-08-30T06:23:14","modified_gmt":"2026-08-30T06:23:14","slug":"neogrow-loyalty","status":"publish","type":"plugin","link":"https:\/\/lin.wordpress.org\/plugins\/neogrow-loyalty\/","author":13929224,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.1","stable_tag":"1.2.1","tested":"7.1","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"NeoGrow: Loyalty Points, Photo Reviews & UGC for WooCommerce","header_author":"MT Pamir","header_description":"Turn your store into a retention engine. Reward customers with points for purchases and photo reviews, redeemable for discounts at checkout.","assets_banners_color":"141129","last_updated":"2026-08-30 06:23:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/neogrow-loyalty\/","header_author_uri":"https:\/\/profiles.wordpress.org\/mtpamir\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":449,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mtpamir","date":"2026-04-26 16:38:15","revision":3515874},"1.0.1":{"tag":"1.0.1","author":"mtpamir","date":"2026-05-06 08:17:42","revision":3524070},"1.0.2":{"tag":"1.0.2","author":"mtpamir","date":"2026-05-06 08:17:42","revision":3524070},"1.0.3":{"tag":"1.0.3","author":"mtpamir","date":"2026-05-19 13:21:42","revision":3537386},"1.1.0":{"tag":"1.1.0","author":"mtpamir","date":"2026-08-18 08:24:56","revision":3652280},"1.2.0":{"tag":"1.2.0","author":"mtpamir","date":"2026-08-25 09:44:16","revision":3665016},"1.2.1":{"tag":"1.2.1","author":"mtpamir","date":"2026-08-30 06:23:14","revision":3672096}},"upgrade_notice":{"1.2.0":"<p>Two corrections change how many points new orders award. Points are now calculated on the order subtotal, as documented, so tax and shipping no longer earn. Multi-currency stores were also calculating in the wrong currency. Balances are untouched. NeoGrow has moved to Marketing &gt; NeoGrow.<\/p>","1.1.0":"<p>Important security and billing fix. Review photo uploads now require a logged-in user, and points are no longer over-deducted when more points are redeemed than the cart is worth. Update as soon as possible.<\/p>","1.0.1":"<ul>\n<li>New: Added 500 bonus points for admin first-install. Improved WooCommerce Blocks (Cart\/Checkout) compatibility.<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3515874,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3515874,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.gif":{"filename":"banner-1544x500.gif","revision":3515874,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.gif":{"filename":"banner-772x250.gif","revision":3515874,"resolution":"772x250","location":"assets","locale":"","width":800,"height":259}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.1.0","1.2.0","1.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3515874,"resolution":"1","location":"assets","locale":"","width":1200,"height":675},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3515874,"resolution":"10","location":"assets","locale":"","width":1070,"height":731},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3515874,"resolution":"11","location":"assets","locale":"","width":1836,"height":1037},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3515874,"resolution":"12","location":"assets","locale":"","width":1876,"height":1063},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3515874,"resolution":"13","location":"assets","locale":"","width":1894,"height":1038},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3515874,"resolution":"14","location":"assets","locale":"","width":1746,"height":960},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3515874,"resolution":"2","location":"assets","locale":"","width":1688,"height":1029},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3515874,"resolution":"3","location":"assets","locale":"","width":1690,"height":1030},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3515874,"resolution":"4","location":"assets","locale":"","width":1693,"height":1033},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3515874,"resolution":"5","location":"assets","locale":"","width":1200,"height":675},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3515874,"resolution":"6","location":"assets","locale":"","width":1675,"height":981},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3515874,"resolution":"7","location":"assets","locale":"","width":1515,"height":861},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3515874,"resolution":"8","location":"assets","locale":"","width":1200,"height":675},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3515874,"resolution":"9","location":"assets","locale":"","width":1727,"height":911}},"screenshots":{"1":"<strong>Growth Dashboard<\/strong> - Visualize your points economy and retention trends.","2":"<strong>Setup Wizard<\/strong> - 2-minute onboarding to get your program live.","3":"<strong>Point Value Settings<\/strong> - Define your earning and redemption rates.","4":"<strong>Review Reward Rules<\/strong> - Incentivize photos with higher point rewards.","5":"<strong>Branding &amp; Design<\/strong> - Match the plugin's UI to your store's colors.","6":"<strong>Admin Settings<\/strong> - Fine-tune your loyalty program configuration and global rules.","7":"<strong>Manual Points Adjustment<\/strong> - Easily add or subtract points with log notes.","8":"<strong>Global Transaction Log<\/strong> - Full audit trail of every point movement.","9":"<strong>Product Page Nudge<\/strong> - Display potential earnings to drive conversion.","10":"<strong>Frictionless Review Form<\/strong> - Integrated \"Upload Photo\" button in your theme.","11":"<strong>Visual Social Proof<\/strong> - Customer photos displayed neatly below reviews.","12":"<strong>Photo Lightbox Overlay<\/strong> - High-resolution gallery display for UGC.","13":"<strong>Customer Points Hub<\/strong> - Points balance and history in \"My Account\".","14":"<strong>Checkout Redemption<\/strong> - AJAX-powered redemption form for instant discounts."}},"plugin_section":[],"plugin_tags":[29663,149759,73290,14449,286],"plugin_category":[45],"plugin_contributors":[245346],"plugin_business_model":[],"class_list":["post-283877","plugin","type-plugin","status-publish","hentry","plugin_tags-loyalty-program","plugin_tags-photo-reviews","plugin_tags-points-and-rewards","plugin_tags-ugc","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-mtpamir","plugin_committers-mtpamir"],"banners":{"banner":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/banner-772x250.gif?rev=3515874","banner_2x":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/banner-1544x500.gif?rev=3515874","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/icon-128x128.gif?rev=3515874","icon_2x":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/icon-256x256.gif?rev=3515874","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-1.jpg?rev=3515874","caption":"<strong>Growth Dashboard<\/strong> - Visualize your points economy and retention trends."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-2.png?rev=3515874","caption":"<strong>Setup Wizard<\/strong> - 2-minute onboarding to get your program live."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-3.png?rev=3515874","caption":"<strong>Point Value Settings<\/strong> - Define your earning and redemption rates."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-4.png?rev=3515874","caption":"<strong>Review Reward Rules<\/strong> - Incentivize photos with higher point rewards."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-5.jpg?rev=3515874","caption":"<strong>Branding &amp; Design<\/strong> - Match the plugin's UI to your store's colors."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-6.jpg?rev=3515874","caption":"<strong>Admin Settings<\/strong> - Fine-tune your loyalty program configuration and global rules."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-7.png?rev=3515874","caption":"<strong>Manual Points Adjustment<\/strong> - Easily add or subtract points with log notes."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-8.jpg?rev=3515874","caption":"<strong>Global Transaction Log<\/strong> - Full audit trail of every point movement."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-9.png?rev=3515874","caption":"<strong>Product Page Nudge<\/strong> - Display potential earnings to drive conversion."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-10.png?rev=3515874","caption":"<strong>Frictionless Review Form<\/strong> - Integrated \"Upload Photo\" button in your theme."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-11.png?rev=3515874","caption":"<strong>Visual Social Proof<\/strong> - Customer photos displayed neatly below reviews."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-12.png?rev=3515874","caption":"<strong>Photo Lightbox Overlay<\/strong> - High-resolution gallery display for UGC."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-13.png?rev=3515874","caption":"<strong>Customer Points Hub<\/strong> - Points balance and history in \"My Account\"."},{"src":"https:\/\/ps.w.org\/neogrow-loyalty\/assets\/screenshot-14.png?rev=3515874","caption":"<strong>Checkout Redemption<\/strong> - AJAX-powered redemption form for instant discounts."}],"raw_content":"<!--section=description-->\n<p><strong>NeoGrow helps a WooCommerce store sell more without cutting its prices.<\/strong><\/p>\n\n<p>It does that with the two things that actually move revenue: the reviews that convince a stranger to place a first order, and the loyalty points that bring that customer back for a second one. One plugin owns both, on your own store, for free.<\/p>\n\n<p>Picture a shopper comparing your product with a cheaper one somewhere else. The cheaper page has no reviews. Yours has forty, several with photographs. Most people pay the difference, because forty strangers with nothing to gain are more persuasive than any product description you could write.<\/p>\n\n<p>That is the whole idea. Your price can be undercut tomorrow morning. Your reputation cannot be copied at all.<\/p>\n\n<h3>What it does for your revenue<\/h3>\n\n<p><strong>1. It gets you the reviews that do the selling.<\/strong>\nCustomers will happily photograph what they bought \u2014 they just need a reason to bother. NeoGrow pays them in points for a review, and pays more for one with a photo. Published research from Northwestern University's Spiegel Research Center found a product showing five reviews was 270% more likely to be purchased than the same product showing none, and that the lift was larger on higher-priced products than on cheap ones. Reviews are worth more to you the more you charge.<\/p>\n\n<p><strong>2. It gets you the second order.<\/strong>\nRoughly a quarter of first-time customers ever come back on their own. A points balance waiting in the basket is a concrete reason to return, and the second order is the one that matters: once a customer has ordered twice, the odds of a third rise sharply. Points are shown on the product page before the sale, and spent right in the basket \u2014 the customer enters how many to use and the discount comes off the subtotal \u2014 because a reward nobody spends buys you nothing.<\/p>\n\n<p><strong>3. It stops you competing on price.<\/strong>\nDiscounting takes margin off every order, permanently, and any competitor can match it. A library of real reviews takes effort once per product and cannot be copied. NeoGrow is how you build that library on purpose rather than hoping for it.<\/p>\n\n<p><strong>4. It costs nothing to run, at any size.<\/strong>\nHosted review and loyalty platforms charge by review requests sent, contacts stored, or minutes of video kept \u2014 so a good year raises your bill. NeoGrow is free and unlimited. Ten customers or ten thousand, the price is the same.<\/p>\n\n<p><em>More on the research behind this, with sources: <a href=\"https:\/\/neoplugin.com\/blog\/why-product-reviews-matter-more-than-price-in-woocommerce\">Why product reviews matter more than price in WooCommerce<\/a>.<\/em><\/p>\n\n<h3>Why NeoGrow rather than a monthly subscription<\/h3>\n\n<p><strong>Nothing sits between the review and the reward.<\/strong>\nElsewhere this takes two plugins wired together: one collects reviews, the other hands out points and watches for them. That join is fragile, and when it quietly breaks you find out from a customer who was promised points and never got them. NeoGrow does both jobs itself, so there is no join to break.<\/p>\n\n<p><strong>You keep everything if you stop.<\/strong>\nReviews, photos and every point balance sit in your own database. There is no account to create and no company holding a copy, so there is no month where cancelling a subscription empties your product pages. A hosted platform cannot offer this, because holding the data is what it is.<\/p>\n\n<p><strong>Growing does not cost you more.<\/strong>\nUnlimited reviews, unlimited photo uploads, unlimited points, no per-contact pricing and no licence key. Software running on your own store has nothing to meter.<\/p>\n\n<p><strong>It gives away what you meant to give away.<\/strong>\nPoints are earned on the order subtotal, so tax and postage never inflate what you hand out. On a multi-currency store the order converts through the exchange rate that order actually used, so you are not overpaying customers in one country and underpaying them in another. Each of those is pinned by tests \u2014 and each is a bill you would otherwise pay quietly for years.<\/p>\n\n<p><strong>Built for AI-first commerce \u2014 coming soon.<\/strong>\nSearch is shifting toward answer engines that read structured data rather than pages. NeoGrow already owns the review content that matters for this; what turns it into machine-readable <code>Review<\/code> and <code>AggregateRating<\/code> markup is <a href=\"https:\/\/neoplugin.com\/product\/neoseo\">NeoSEO<\/a>, a separate free plugin in development. NeoGrow does not require it and works fully without it \u2014 the two simply cover different halves of the same job.<\/p>\n\n<p>https:\/\/youtu.be\/Oq2QNXUuZS4<\/p>\n\n<h3>Core Features<\/h3>\n\n<p><strong>1. Loyalty Points Engine \u2014 wins the second order<\/strong>\nGive customers a balance worth coming back for, and make it trivial to spend.\n* <strong>Points for Purchases:<\/strong> Award points based on the amount spent (e.g., Earn 1 Point for every $1 spent).\n* <strong>Point Redemption:<\/strong> Customers can redeem their points for discounts directly at the Checkout or Cart page.\n* <strong>Automated Expiry (FIFO):<\/strong> Points expire 6 months after they are earned, oldest spent first. Choosing your own window, or switching expiry off, is part of NeoGrow Pro.\n* <strong>My Account Integration:<\/strong> Customers can track their live balance and full Transaction History inside their account dashboard.\n* <strong>Correct on Multi-Currency Stores:<\/strong> Points are always calculated against your store's base currency, so the same basket earns the same points whatever currency the customer paid in, and redemption discounts are shown in the currency they are browsing. WooPayments, CURCY and FOX are supported with no configuration; other switchers connect through two documented filters. If a switcher is converting prices and NeoGrow cannot read its rate, it tells you rather than calculating quietly with the wrong one.\n* <strong>HPOS Ready:<\/strong> Fully compatible with WooCommerce High-Performance Order Storage for maximum speed.<\/p>\n\n<p><strong>2. Photo Reviews \u2014 wins the first order<\/strong>\nThe proof that convinces the next shopper, collected automatically and paid for in points rather than cash.\n* <strong>Incentivized Uploads:<\/strong> Configure bonus points for photo reviews vs standard text reviews.\n* <strong>Visual Social Proof:<\/strong> Display customer photos in a beautiful, native lightbox overlay on product pages.\n* <strong>Seamless Moderation:<\/strong> Approve or reject reviews directly from the standard WordPress\/WooCommerce comments queue.\n* <strong>Frictionless Form:<\/strong> A clean \"Upload Photo\" button is automatically injected into your theme's existing review form.<\/p>\n\n<p><strong>3. Analytics &amp; Branding \u2014 shows you what it is earning<\/strong>\n* <strong>Growth Dashboard:<\/strong> Real-time analytics showing Points Issued, Points Redeemed, and UGC performance trends.\n* <strong>Branding Settings:<\/strong> Customize the core color palette (Primary &amp; Success colors) to match your store's identity.\n* <strong>Audit Trail:<\/strong> A global Points Log keeps a permanent record of every point movement (expiry, earn, spend, or manual adjustment).<\/p>\n\n<h3>Documentation<\/h3>\n\n<p>For detailed setup guides, shortcode lists, and advanced configuration, please visit our official documentation:\n<a href=\"https:\/\/neoplugin.com\/docs\/\">Documentation<\/a><\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service during normal operation. Your store data, points ledger and review photos never leave your server.<\/p>\n\n<p>There is exactly one optional exception:<\/p>\n\n<p><strong>Deactivation feedback survey (neoplugin.com)<\/strong><\/p>\n\n<p>When you deactivate this plugin from the Plugins screen, a short survey asks why. It is entirely optional \u2014 \"Skip &amp; Deactivate\" and \"Cancel\" send nothing, and selecting \"It's only temporary \/ troubleshooting\" sends nothing.<\/p>\n\n<p>If you choose to submit the survey, your answer is sent from your server to <code>https:\/\/neoplugin.com\/neo-deactivation\/receiver.php<\/code>. The request is made by your site, not by your browser.<\/p>\n\n<ul>\n<li><strong>Always sent when you submit:<\/strong> the plugin slug, the plugin version, the reason you selected, and any free-text comment you typed.<\/li>\n<li><strong>Only sent if you tick the consent box<\/strong> (unticked by default): your site URL, WordPress version, PHP version, WooCommerce version, whether HPOS is enabled, your active theme name, the folder names of your active plugins, your site locale, and the number of days the plugin has been installed.<\/li>\n<\/ul>\n\n<p>No personal data about your customers, no order data and no points data are ever transmitted.<\/p>\n\n<p>This service is provided by NeoPlugin. Terms: https:\/\/neoplugin.com\/terms\/ \u2014 Privacy policy: https:\/\/neoplugin.com\/privacy-policy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/neogrow-loyalty<\/code> directory, or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin. You will be redirected to the <strong>Setup Wizard<\/strong>.<\/li>\n<li>Follow the 2-minute wizard to set your point values and review rewards.<\/li>\n<li>Navigate to <strong>Marketing &gt; NeoGrow<\/strong> to fine-tune your configuration or design.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20actually%20increase%20my%20sales%3F\"><h3>Will this actually increase my sales?<\/h3><\/dt>\n<dd><p>It works on the two moments where sales are won or lost. The first is a stranger deciding whether to trust you: research from Northwestern University's Spiegel Research Center found a product showing five reviews was 270% more likely to be purchased than the same product showing none, and NeoGrow's job is to get those reviews written by making it worth a customer's while. The second is whether that customer ever comes back \u2014 most do not, unless they have a reason. A points balance waiting in their basket is a reason.<\/p>\n\n<p>Nothing here is magic, and no plugin can promise a number. What it can do is make the two things that reliably drive revenue happen on purpose rather than by luck.<\/p><\/dd>\n<dt id=\"won%27t%20giving%20away%20points%20just%20cost%20me%20money%3F\"><h3>Won't giving away points just cost me money?<\/h3><\/dt>\n<dd><p>It is a real cost, and the right question to ask. Three things keep it in your favour. You set the earn rate yourself, so you decide what a point is worth before a single one is issued. Points are calculated on the order subtotal, so you never pay out on tax or postage. And a point only becomes a discount when the customer returns to spend it \u2014 which means the cost lands on an order you would not otherwise have had.<\/p><\/dd>\n<dt id=\"how%20many%20reviews%20do%20i%20need%20before%20it%20makes%20a%20difference%3F\"><h3>How many reviews do I need before it makes a difference?<\/h3><\/dt>\n<dd><p>Fewer than most people expect. The measured conversion benefit largely arrives with the first five reviews on a product, so the urgent gap to close is five rather than five hundred. Confidence keeps climbing after that, so treat five as the starting line.<\/p><\/dd>\n<dt id=\"won%27t%20a%20bad%20review%20hurt%20my%20sales%3F\"><h3>Won't a bad review hurt my sales?<\/h3><\/dt>\n<dd><p>Less than a spotless page does. Purchase likelihood peaks around 4.0 to 4.7 stars and falls as a rating nears a perfect 5.0, because shoppers read flawless as edited. NeoGrow rewards a customer for writing a review, never for the rating they give, so you are never in the position of having paid for five stars.<\/p><\/dd>\n<dt id=\"where%20is%20the%20neogrow%20menu%3F\"><h3>Where is the NeoGrow menu?<\/h3><\/dt>\n<dd><p>NeoGrow lives under <strong>Marketing &gt; NeoGrow<\/strong>, alongside WooCommerce's own marketing tools. If the WooCommerce Marketing menu is disabled on your site, it appears under <strong>WooCommerce &gt; NeoGrow<\/strong> instead. Direct links to <code>admin.php?page=neogrow<\/code> keep working either way.<\/p><\/dd>\n<dt id=\"how%20does%20neogrow%20affect%20my%20site%20speed%3F\"><h3>How does NeoGrow affect my site speed?<\/h3><\/dt>\n<dd><p>NeoGrow is built for scale. It uses an optimized custom database table (wp_neogrow_points) to handle point calculations, so even with thousands of active customers your checkout remains snappy and your server resources stay low.<\/p><\/dd>\n<dt id=\"does%20neogrow%20work%20with%20the%20cart%20and%20checkout%20blocks%3F\"><h3>Does NeoGrow work with the Cart and Checkout blocks?<\/h3><\/dt>\n<dd><p>Yes. The redemption panel appears automatically in both the block-based Cart and Checkout and the classic shortcode versions, with no setup needed. Points are applied through the WooCommerce Store API, so the order totals update live without a page reload.<\/p>\n\n<p>The [neogrow_cart_redemption] shortcode is still available if you want to place the form somewhere else, such as a custom landing page.<\/p><\/dd>\n<dt id=\"why%20is%20the%20redemption%20form%20hidden%20for%20some%20users%3F\"><h3>Why is the redemption form hidden for some users?<\/h3><\/dt>\n<dd><p>To maintain a clean and high-converting checkout experience, NeoGrow intelligently hides the redemption form if:<\/p>\n\n<ul>\n<li>The user is a Guest (not logged in).<\/li>\n<li>The user has a 0 point balance.\nWe believe in showing users only the actions they can actually take.<\/li>\n<\/ul><\/dd>\n<dt id=\"can%20i%20customize%20the%20look%20of%20the%20%22redeem%22%20form%3F\"><h3>Can I customize the look of the \"Redeem\" form?<\/h3><\/dt>\n<dd><p>Absolutely. NeoGrow is designed to inherit your theme's styling for buttons and inputs automatically. If you need more granular control, the form is wrapped in unique CSS classes (.neogrow-redemption-wrap), allowing you to apply custom styles without editing core files.<\/p><\/dd>\n<dt id=\"points%20weren%27t%20awarded%20after%20a%20purchase%21\"><h3>Points weren't awarded after a purchase!<\/h3><\/dt>\n<dd><p>Please verify three things:<\/p>\n\n<ul>\n<li>Is the Order Status set to Completed? (Points are issued upon successful completion).<\/li>\n<li>Was the user logged in during checkout? (Guest checkouts cannot track point history).<\/li>\n<li>Have you saved your settings? Ensure you\u2019ve clicked \"Save\" in the NeoGrow dashboard at least once to initialize the engine.<\/li>\n<\/ul><\/dd>\n<dt id=\"images%20aren%27t%20uploading%20to%20reviews%21\"><h3>Images aren't uploading to reviews!<\/h3><\/dt>\n<dd><p>Ensure your <code>\/wp-content\/uploads\/<\/code> directory is writable. Also, check that the image size doesn't exceed your server's maximum upload limit.<\/p><\/dd>\n<dt id=\"why%20don%27t%20my%20dashboard%20stats%20update%20immediately%3F\"><h3>Why don't my dashboard stats update immediately?<\/h3><\/dt>\n<dd><p>To ensure high performance, NeoGrow caches dashboard statistics for <strong>one hour<\/strong>. Your live points data is safe; the analytics just take a moment to refresh.<\/p><\/dd>\n<dt id=\"does%20neogrow%20count%20my%20past%20reviews%20or%20orders%3F\"><h3>Does NeoGrow count my past reviews or orders?<\/h3><\/dt>\n<dd><p>No. NeoGrow starts tracking from the moment it is activated. It is not retroactive. You can use the \"Manual Adjustment\" feature to reward long-time customers if needed.<\/p><\/dd>\n<dt id=\"are%20shipping%2Ftaxes%20included%20in%20points%3F\"><h3>Are Shipping\/Taxes included in points?<\/h3><\/dt>\n<dd><p>No. Points are calculated on the order <strong>subtotal<\/strong> \u2014 the value of the products themselves \u2014 so tax, shipping and fees never earn points. Sale prices are already reflected in the subtotal. Coupon discounts are not, so a coupon does not reduce what a customer earns; the <code>neogrow_earn_base_amount<\/code> filter lets you change that if you would rather it did.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20refund%20an%20order%3F\"><h3>What happens if I refund an order?<\/h3><\/dt>\n<dd><p>Points are not adjusted automatically. Go to <strong>Users &gt; Edit User<\/strong> to add or remove points by hand, with a reason recorded in the Points Log. Automatic adjustment on refund and cancellation is available in NeoGrow Pro.<\/p><\/dd>\n<dt id=\"do%20points%20expire%3F\"><h3>Do points expire?<\/h3><\/dt>\n<dd><p>Yes. Points expire 6 months after they were earned. NeoGrow uses a <strong>FIFO (First-In, First-Out)<\/strong> system, so the oldest points are always spent first. Setting your own expiry window, or turning expiry off entirely, is available in NeoGrow Pro, a separate add-on.<\/p><\/dd>\n<dt id=\"can%20i%20reward%20customers%20for%20their%20birthdays%3F\"><h3>Can I reward customers for their birthdays?<\/h3><\/dt>\n<dd><p>NeoGrow is designed to work seamlessly with <strong><a href=\"https:\/\/wordpress.org\/plugins\/birthday-bash\/\">NeoLite Birthday Bash<\/a><\/strong>. While NeoGrow handles the points engine, Birthday Bash automates the 'Happy Birthday' rewards, creating a complete retention loop for your store.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20my%20theme%3F\"><h3>Is it compatible with my Theme?<\/h3><\/dt>\n<dd><p>Yes. NeoGrow hooks into standard WooCommerce locations and works seamlessly with any well-coded WooCommerce-compatible theme.<\/p><\/dd>\n<dt id=\"still%20have%20questions%3F\"><h3>Still have questions?<\/h3><\/dt>\n<dd><p>Our engineers are here to help! Please open a ticket in the WordPress.org support forum, and we\u2019ll help you get NeoGrow running perfectly on your store.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix: On a variable product the \"Earn X points with this item!\" message showed the range for the whole product and never changed, so a product priced $20 to $200 still read \"Earn 20 - 200 points\" after the $200 option had been chosen. The message now updates to the points that option actually earns, and returns to the range when the selection is cleared. This works with any variation swatch plugin, because it follows WooCommerce's own variation form rather than integrating with a particular one.<\/li>\n<li>New: The order confirmation page now tells the customer about their points \u2014 \"You will earn 40 points once this order is complete\" before you mark the order complete, and \"You earned 40 points on this order\" afterwards. Previously the product page promised points and nothing ever confirmed them.<\/li>\n<li>New: The order emails WooCommerce already sends now carry the same line, so a customer whose order you complete days later is actually told when their points arrive, along with their new balance. The completed-order email also invites them to review what they bought, quoting what a review is worth. This adds a paragraph to your existing emails \u2014 NeoGrow does not send any email of its own.<\/li>\n<li>Both are shown only to logged-in customers, never on guest orders (which cannot earn), never on orders that are cancelled, failed or refunded, and never in the copies sent to you as the shop admin.<\/li>\n<li>Fix: A customer's points balance is no longer written into the page. If you use a page caching plugin and it was set to cache pages for logged-in visitors, a cached page carrying the <code>[neogrow_points_balance]<\/code> or <code>[neogrow_points]<\/code> shortcode could show one customer another customer's balance. The number is now fetched for each shopper after the page loads, so the cached page contains nobody's balance. Nothing to configure. Your My Account page was never affected, because WooCommerce already tells caches not to store it.<\/li>\n<li>New: A Site Health check under Tools &gt; Site Health reports whether your points balances are safe from your page cache, and names the caching plugin it found.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Fix: Points are now calculated on the order <strong>subtotal<\/strong>, as the documentation has always stated. Earlier versions used the order total, so tax, shipping and fees earned points too. On a store charging tax or postage this reduces what new orders award \u2014 a $50 order with $10 postage now earns 50 points rather than 60. Points already awarded are not changed. Use the <code>neogrow_earn_base_amount<\/code> filter to award on the order total instead, if that is what you want.<\/li>\n<li>Fix: Correct point earning and redemption on multi-currency stores. Points were previously calculated on the order total in the customer's selected currency while the earn rate is configured in the store's base currency, so a store selling in more than one currency awarded too many or too few points by the exchange rate. Orders are now converted back to the base currency (using the exchange rate recorded on the order where available) before points are calculated. Points already awarded by earlier versions are not changed.<\/li>\n<li>Fix: The redemption discount is now converted into the customer's selected currency before it is applied to the cart, so the discount shown and charged matches the rest of the cart instead of being a base-currency figure on a converted total.<\/li>\n<li>Fix: The redemption cap, the product page \"Earn X points\" message and the My Account earn-rate text now convert between the selected and base currency, so the numbers quoted match the points actually awarded.<\/li>\n<li>New: If a currency switcher is converting your prices and NeoGrow cannot read the rate it is using, an admin notice now says so, rather than letting points be silently miscalculated. It names the currency, is dismissible, and disappears on its own once the rate can be read.<\/li>\n<li>New: Native support for three currency switchers, with no configuration needed: the multi-currency built into <strong>WooPayments<\/strong>, <strong>CURCY (Multi Currency for WooCommerce)<\/strong> and <strong>FOX \u2013 Currency Switcher Professional<\/strong> (formerly WOOCS). Other switchers can integrate through the new <code>neogrow_currency_rate<\/code> and <code>neogrow_order_exchange_rate<\/code> filters; with no switcher active, behaviour is unchanged.<\/li>\n<li>Changed: NeoGrow now lives under <strong>Marketing &gt; NeoGrow<\/strong> (or WooCommerce &gt; NeoGrow when the Marketing menu is disabled), following the WooCommerce navigation guidelines, instead of adding its own top-level menu. All existing links and bookmarks to the page keep working.<\/li>\n<li>New: The Plugins screen now offers both a Dashboard and a Settings link for NeoGrow.<\/li>\n<li>Changed: The read-only \"Points Expiry (Months)\" row has been removed from the settings screen. Point expiry is unchanged \u2014 points still expire after 6 months on a FIFO basis; the plugin simply no longer displays a setting that could not be edited. The NeoGrow Pro add-on provides the configurable expiry window.<\/li>\n<li>Changed: Reworded parts of the plugin description and FAQ.<\/li>\n<li>Compatibility: Tested up to WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Native support for the WooCommerce Cart and Checkout blocks. The redemption panel now appears automatically in both blocks and updates order totals live through the Store API. The old workaround of pasting a shortcode into a Shortcode block is no longer needed, and the notice asking you to do so has been removed.<\/li>\n<li>New: In the Cart and Checkout blocks the redemption panel now sits directly above the \"Add coupons\" row, so points are applied alongside coupons and before shipping, tax and the order total are worked out.<\/li>\n<li>New: The panel now states the discount your points are worth, for example \"You are using 200 points for a $2.00 discount\", formatted in your store's currency.<\/li>\n<li>New: Two filters for add-ons, neogrow_review_media_ids and neogrow_review_media_html, allowing the media shown with a review to be extended or replaced.<\/li>\n<li>New: A documented developer API of hooks and filters, plus the NeoGrow\\API\\Points class, so add-ons can extend earning, redemption, reviews, expiry and the admin screens. See the plugin's HookDocs reference.<\/li>\n<li>New: You can rename \"points\" to anything you like from a single filter.<\/li>\n<li>Security: Review photo uploads now require a logged-in user and are restricted to product reviews. The temporary upload permission granted during an upload is scoped to the review author instead of being granted site-wide.<\/li>\n<li>Fix: Points are no longer over-deducted when the redeemed amount exceeds the cart value. The points debited now always match the discount actually granted, and the balance is re-checked at the moment of purchase.<\/li>\n<li>Fix: Resolved a fatal error on PHP 7.4 caused by a PHP 8.0-only function on the settings screen.<\/li>\n<li>Fix: Resolved a fatal error when cart totals are calculated without a customer session (Store API, cron and WP-CLI).<\/li>\n<li>Fix: The points balance cache now uses a dedicated cache group, preventing collisions with other plugins.<\/li>\n<li>Fix: Applying no points, or fewer than a required minimum, no longer reports \"Applied\" on the classic cart and then quietly leaves the discount off. Both are now refused with an explanation, matching how the Cart and Checkout blocks already behaved.<\/li>\n<li>Fix: Database updates now run on any request rather than only inside wp-admin, so stores administered entirely over WP-CLI or a headless front end are no longer left on an older database version.<\/li>\n<li>Tweak: The redemption form now shows a message when the requested points cannot be applied, and caps the input at the redeemable amount.<\/li>\n<li>Tweak: Removed the 500-point seed previously granted to the administrator who activated the plugin. Existing balances are unaffected.<\/li>\n<li>Tweak: Database tables are now versioned so that future schema changes reach existing installations, and uninstalling now cleans up review photos, review meta and per-site data on multisite.<\/li>\n<li>Performance: The daily expiry job is now batched instead of loading every customer at once, and the review photo lookup no longer runs one query per review on product pages.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Enhancement: Dynamic Admin Colors. settings page now adapts dynamically to match the active WordPress user's selected \"Administration Color Scheme\".<\/li>\n<li>UI: Implemented neo-unified-table striped layouts for both the Loyalty &amp; Rewards Settings page and Design Customization page.<\/li>\n<li>Compatibility: Fully tested and declared compatible with WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>New: Dynamic strategy preview in settings (Real-time ROI calculation).<\/li>\n<li>Enhancement: Added decimal support for points-per-dollar ratios.<\/li>\n<li>Stability: Improved input sanitization to prevent calculation errors.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: Resolved undefined variable warnings in Frontend Assets.<\/li>\n<li>New: Added FAQ to documentation.<\/li>\n<li>Tweak: Optimized asset loading logic.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added 500 bonus points for admin users upon first-time installation.<\/li>\n<li>Improved WooCommerce Blocks compatibility (Cart and Checkout support).<\/li>\n<li>Added Official Documentation links in the Guide &amp; Help dashboard.<\/li>\n<li>Fixed minor UI layout issues in the settings panel.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial Release.<\/li>\n<li>Loyalty Points Engine (FIFO Expiry).<\/li>\n<li>Viral Photo Reviews &amp; Lightbox Display.<\/li>\n<li>Full HPOS (High-Performance Order Storage) Compatibility.<\/li>\n<li>Custom Database Table architecture.<\/li>\n<li>Integrated Setup Wizard.<\/li>\n<\/ul>","raw_excerpt":"Turn first-time buyers into repeat customers. Reward purchases and photo reviews with points they spend at checkout. Free, with nothing metered.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/283877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=283877"}],"author":[{"embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mtpamir"}],"wp:attachment":[{"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=283877"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=283877"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=283877"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=283877"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=283877"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=283877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}