{"id":58,"date":"2026-10-10T09:00:00","date_gmt":"2026-10-10T09:00:00","guid":{"rendered":"https:\/\/saletides.com\/blog\/?p=58"},"modified":"2026-10-16T14:37:25","modified_gmt":"2026-10-16T14:37:25","slug":"woocommerce-coupon-roi","status":"publish","type":"post","link":"https:\/\/saletides.com\/blog\/woocommerce-coupon-roi\/","title":{"rendered":"Which WooCommerce Coupons Actually Make You Money? How to Measure Discount ROI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Coupons always look like they work. Orders with the code go up, the campaign gets marked a success, and the code goes into the next newsletter. What the report rarely shows is how many of those customers would have bought anyway \u2014 at full price.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Discounts are one of the most powerful tools in WooCommerce and one of the easiest ways to lose margin without noticing. Here&#8217;s how to tell which is which.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Hidden Cost of a Coupon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A 20% code doesn&#8217;t cost you 20% of the orders it creates. It costs you 20% of every order it touches \u2014 including all the customers who were already on their way to checkout and simply searched for a code first. That&#8217;s why the question isn&#8217;t &#8220;how many orders used the coupon?&#8221; but &#8220;how many orders did the coupon create?&#8221;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Five Numbers That Show Whether a Coupon Pays Off<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Discount share of gross sales.<\/strong> Total discounts divided by gross sales. Track it monthly \u2014 if it creeps up while net sales stay flat, discounts are replacing full-price sales rather than adding to them.<\/li>\n\n\n<li><strong>Revenue collected per redemption.<\/strong> What customers actually paid on orders using the code, compared with your normal average order value.<\/li>\n\n\n<li><strong>New vs returning customers.<\/strong> A code meant to win new customers that&#8217;s mostly redeemed by existing ones is just a loyalty discount you didn&#8217;t plan to give.<\/li>\n\n\n<li><strong>Repeat rate of coupon-acquired customers.<\/strong> Do customers who arrived through the code ever buy again at full price? If not, the code bought orders, not customers.<\/li>\n\n\n<li><strong>Free orders.<\/strong> Orders fully paid with coupons or store credit are worth watching on their own \u2014 a sudden rise can point to a leaked code or a stacking loophole.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">A Quick Worked Example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Say a 20%-off code was used on 200 orders in a month, with an average order of \u00a360 before the discount. That&#8217;s \u00a32,400 given away. If 120 of those 200 customers were returning buyers who order every month anyway, roughly \u00a31,440 of the discount went to people who&#8217;d have paid full price. The code still might be worth it \u2014 but only if the other 80 customers come back, and that&#8217;s what the repeat-rate number tells you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Red Flags to Watch For<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A code appearing on coupon sites.<\/strong> A spike in redemptions you didn&#8217;t plan for, mostly from returning customers, usually means the code has leaked.<\/li>\n\n\n<li><strong>Discount share rising every month.<\/strong> Customers learn to wait for a code; full-price sales shrink.<\/li>\n\n\n<li><strong>Codes that never expire.<\/strong> Old launch and influencer codes keep circulating years later.<\/li>\n\n\n<li><strong>Stacking.<\/strong> Multiple codes on one order can turn a reasonable offer into a free product.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Making Discounts Work Harder<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Restrict acquisition codes to first orders and set usage limits per customer.<\/li>\n\n\n<li>Give every channel its own code so you can compare them honestly.<\/li>\n\n\n<li>Prefer threshold offers (&#8220;\u00a310 off over \u00a360&#8221;) or gifts with purchase over sitewide percentages.<\/li>\n\n\n<li>Set an expiry date on every code, even evergreen ones, and reissue if needed.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">See Every Coupon&#8217;s Real Impact in SaleTides<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The SaleTides Discounts report shows coupon discounts as a share of gross sales, discounted and free orders, and your top coupons with redemptions, discount given and revenue actually collected \u2014 with store credit and gift-card codes tracked separately. Combined with the customer and cohort reports, you can see whether a code brought in customers who stayed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/saletides.com\/woocommerce-sales-reports\">See SaleTides sales reports \u2192<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Key Takeaways<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Judge coupons by the orders they create, not the orders they touch<\/li>\n\n\n<li>Track discount share of gross sales every month<\/li>\n\n\n<li>Check whether coupon-acquired customers ever buy again at full price<\/li>\n\n\n<li>Watch for leaked codes, stacking and codes that never expire<\/li>\n\n\n<li>Give each channel its own code so you can compare them<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Every coupon looks successful in a sales report. Here&#8217;s how to tell the codes that win you customers from the ones that just give money away.<\/p>\n","protected":false},"author":1,"featured_media":59,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2],"tags":[30,31,27,6],"class_list":["post-58","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ecommerce-growth","category-woocommerce-analytics","tag-coupons","tag-discounts","tag-ecommerce-kpis","tag-woocommerce-analytics"],"_links":{"self":[{"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":1,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"predecessor-version":[{"id":66,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/posts\/58\/revisions\/66"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/media\/59"}],"wp:attachment":[{"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saletides.com\/blog\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}