{"id":87,"date":"2026-06-11T14:55:19","date_gmt":"2026-06-11T14:55:19","guid":{"rendered":"https:\/\/www.lockpro.io\/blog\/?page_id=87"},"modified":"2026-06-11T14:55:19","modified_gmt":"2026-06-11T14:55:19","slug":"free-gift-threshold-calculator","status":"publish","type":"page","link":"https:\/\/www.lockpro.io\/blog\/free-gift-threshold-calculator\/","title":{"rendered":"Free Gift Threshold Calculator"},"content":{"rendered":"\n<!-- ============================================================\n  Free Gift Threshold Calculator \u2014 Blogs by LockPro\n  Paste this ENTIRE block into a WordPress \"Custom HTML\" block.\n  Self-contained: no external scripts, no dependencies.\n  All styles are scoped under #lp-gt to avoid theme conflicts.\n============================================================ -->\n<div id=\"lp-gt\">\n  <style>\n    #lp-gt{--gt-ink:#1a2332;--gt-sub:#5b6878;--gt-line:#e3e7ee;--gt-bg:#f7f9fc;--gt-acc:#1f6f5c;--gt-acc-soft:#e6f2ee;--gt-blue:#3b5bdb;--gt-bad:#c23b3b;--gt-bad-soft:#fbeaea;\n      font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n      color:var(--gt-ink);max-width:680px;margin:2rem auto;border:1px solid var(--gt-line);border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 1px 3px rgba(16,24,40,.06)}\n    #lp-gt *{box-sizing:border-box;margin:0;padding:0}\n    #lp-gt .gt-head{padding:20px 24px 16px;border-bottom:1px solid var(--gt-line)}\n    #lp-gt .gt-head h3{font-size:1.15rem;font-weight:700;letter-spacing:-.01em}\n    #lp-gt .gt-head p{font-size:.85rem;color:var(--gt-sub);margin-top:4px}\n    #lp-gt .gt-body{padding:20px 24px}\n    #lp-gt label{display:block;font-size:.78rem;font-weight:600;color:var(--gt-sub);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}\n    #lp-gt .gt-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}\n    @media(max-width:560px){#lp-gt .gt-grid{grid-template-columns:1fr 1fr}}\n    #lp-gt .gt-field{position:relative}\n    #lp-gt .gt-field .gt-sym{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--gt-sub);font-size:.95rem;pointer-events:none}\n    #lp-gt .gt-field .gt-sym.r{left:auto;right:12px}\n    #lp-gt input[type=number]{width:100%;padding:11px 12px;font-size:1rem;border:1px solid var(--gt-line);border-radius:8px;background:var(--gt-bg);color:var(--gt-ink);-moz-appearance:textfield}\n    #lp-gt .gt-field.sym-l input{padding-left:28px}\n    #lp-gt .gt-field.sym-r input{padding-right:30px}\n    #lp-gt input[type=number]::-webkit-outer-spin-button,#lp-gt input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}\n    #lp-gt input[type=number]:focus{outline:2px solid var(--gt-acc);outline-offset:1px;border-color:var(--gt-acc);background:#fff}\n    \/* hero answer *\/\n    #lp-gt .gt-answer{margin-top:20px;background:var(--gt-acc-soft);border:1px solid var(--gt-acc);border-radius:12px;padding:20px;text-align:center}\n    #lp-gt .gt-answer .cap{font-size:.78rem;font-weight:700;color:var(--gt-acc);text-transform:uppercase;letter-spacing:.05em}\n    #lp-gt .gt-answer .big{font-size:2.2rem;font-weight:800;letter-spacing:-.03em;color:var(--gt-acc);font-variant-numeric:tabular-nums;margin:4px 0 2px}\n    #lp-gt .gt-answer .why{font-size:.84rem;color:var(--gt-sub);max-width:440px;margin:6px auto 0;line-height:1.45}\n    \/* gift vs discount *\/\n    #lp-gt .gt-vs{margin-top:20px;background:var(--gt-bg);border:1px solid var(--gt-line);border-radius:10px;padding:16px}\n    #lp-gt .gt-vs .cap{font-size:.78rem;font-weight:600;color:var(--gt-sub);text-transform:uppercase;letter-spacing:.04em;margin-bottom:14px}\n    #lp-gt .gt-vs-row{display:grid;grid-template-columns:120px 1fr 80px;gap:10px;align-items:center;margin-bottom:12px}\n    @media(max-width:560px){#lp-gt .gt-vs-row{grid-template-columns:96px 1fr 72px}}\n    #lp-gt .gt-vs-row .lbl{font-size:.82rem;font-weight:700}\n    #lp-gt .gt-vs-row .lbl small{display:block;font-weight:400;color:var(--gt-sub);font-size:.72rem}\n    #lp-gt .gt-vs-row .track{background:#e9edf3;border-radius:6px;height:26px;overflow:hidden}\n    #lp-gt .gt-vs-row .fill{height:100%;border-radius:6px;transition:width .3s ease;min-width:2px}\n    #lp-gt .gt-vs-row.gift .fill{background:var(--gt-acc)}\n    #lp-gt .gt-vs-row.disc .fill{background:var(--gt-blue)}\n    #lp-gt .gt-vs-row .val{font-size:.9rem;font-weight:800;text-align:right;font-variant-numeric:tabular-nums}\n    #lp-gt .gt-vs-verdict{font-size:.84rem;margin-top:4px;padding:10px 12px;border-radius:8px;background:#fff;border:1px solid var(--gt-line);line-height:1.45}\n    #lp-gt .gt-vs-verdict b{color:var(--gt-acc)}\n    @media(prefers-reduced-motion:reduce){#lp-gt .gt-vs-row .fill{transition:none}}\n    \/* monthly *\/\n    #lp-gt .gt-month{margin-top:16px;display:none;border:1px solid var(--gt-line);border-radius:10px;padding:14px 16px;font-size:.88rem;line-height:1.5}\n    #lp-gt .gt-month b{font-variant-numeric:tabular-nums}\n    #lp-gt .gt-month .pos{color:var(--gt-acc)}\n    #lp-gt .gt-month .neg2{color:var(--gt-bad)}\n    #lp-gt .gt-warn{margin-top:14px;font-size:.82rem;background:var(--gt-bad-soft);border:1px solid #efc1c1;color:var(--gt-bad);border-radius:8px;padding:10px 12px;display:none}\n    #lp-gt .gt-note{margin-top:14px;font-size:.72rem;color:var(--gt-sub);line-height:1.5}\n    \/* footer *\/\n    #lp-gt .gt-foot{padding:14px 24px;background:var(--gt-bg);border-top:1px solid var(--gt-line);display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}\n    #lp-gt .gt-foot a{font-size:.84rem;font-weight:700;color:#fff;background:var(--gt-acc);padding:9px 16px;border-radius:8px;text-decoration:none;white-space:nowrap}\n    #lp-gt .gt-foot a:hover{background:#185a4b}\n  <\/style>\n\n  <div class=\"gt-head\">\n    <h3>Free Gift Threshold Calculator<\/h3>\n    <p>Find the cart value where your free gift should unlock \u2014 and see how much more profit a gift makes vs. a discount.<\/p>\n  <\/div>\n\n  <div class=\"gt-body\">\n    <div class=\"gt-grid\">\n      <div>\n        <label for=\"gt-aov\">Average order value<\/label>\n        <div class=\"gt-field sym-l\"><span class=\"gt-sym\">$<\/span>\n          <input type=\"number\" id=\"gt-aov\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" value=\"42\">\n        <\/div>\n      <\/div>\n      <div>\n        <label for=\"gt-margin\">Profit margin<\/label>\n        <div class=\"gt-field sym-r\"><span class=\"gt-sym r\">%<\/span>\n          <input type=\"number\" id=\"gt-margin\" inputmode=\"decimal\" min=\"1\" max=\"95\" step=\"1\" value=\"40\">\n        <\/div>\n      <\/div>\n      <div>\n        <label for=\"gt-gift\">Gift cost to you<\/label>\n        <div class=\"gt-field sym-l\"><span class=\"gt-sym\">$<\/span>\n          <input type=\"number\" id=\"gt-gift\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" value=\"5\">\n        <\/div>\n      <\/div>\n      <div>\n        <label for=\"gt-orders\">Orders \/ month <span style=\"text-transform:none;font-weight:400\">(optional)<\/span><\/label>\n        <div class=\"gt-field\">\n          <input type=\"number\" id=\"gt-orders\" inputmode=\"numeric\" min=\"0\" step=\"1\" placeholder=\"e.g. 300\">\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"gt-answer\">\n      <div class=\"cap\">Set your free-gift threshold at<\/div>\n      <div class=\"big\" id=\"gt-threshold\">$55<\/div>\n      <div class=\"why\" id=\"gt-why\">About 30% above your average order \u2014 close enough that shoppers stretch to reach it, high enough that you&#8217;re not gifting orders you&#8217;d get anyway.<\/div>\n    <\/div>\n\n    <div class=\"gt-vs\">\n      <div class=\"cap\" id=\"gt-vs-cap\">Profit on a $55 order: free gift vs. 15% discount<\/div>\n      <div class=\"gt-vs-row gift\">\n        <span class=\"lbl\">Free gift<small id=\"gt-gift-lbl\">$5.00 gift<\/small><\/span>\n        <div class=\"track\"><div class=\"fill\" id=\"gt-bar-gift\" style=\"width:80%\"><\/div><\/div>\n        <span class=\"val\" id=\"gt-val-gift\">$17.00<\/span>\n      <\/div>\n      <div class=\"gt-vs-row disc\">\n        <span class=\"lbl\">Discount<small>15% off<\/small><\/span>\n        <div class=\"track\"><div class=\"fill\" id=\"gt-bar-disc\" style=\"width:50%\"><\/div><\/div>\n        <span class=\"val\" id=\"gt-val-disc\">$13.75<\/span>\n      <\/div>\n      <div class=\"gt-vs-verdict\" id=\"gt-verdict\"><\/div>\n    <\/div>\n\n    <div class=\"gt-month\" id=\"gt-month\"><\/div>\n    <div class=\"gt-warn\" id=\"gt-warn\" role=\"alert\"><\/div>\n\n    <p class=\"gt-note\">Assumptions: threshold set ~30% above AOV; roughly 1 in 4 shoppers stretch their cart to reach a visible gift threshold; discount comparison uses 15% off the same order. Your real numbers will vary \u2014 use this as a starting point and adjust after 2\u20134 weeks of data.<\/p>\n  <\/div>\n\n  <div class=\"gt-foot\">\n    <a href=\"https:\/\/apps.shopify.com\/gift-pro-free-gifts-auto-add-to-cart?utm_source=blog&#038;utm_medium=tool&#038;utm_campaign=gift-threshold\" rel=\"noopener\" target=\"_blank\">Set this up with GiftPro \u2014 free<\/a>\n  <\/div>\n\n  <script>\n  (function(){\n    var $=function(id){return document.getElementById(id)};\n    var elAov=$('gt-aov'),elMargin=$('gt-margin'),elGift=$('gt-gift'),elOrders=$('gt-orders');\n    var fmt=function(n){return '$'+(isFinite(n)?n:0).toLocaleString('en-US',{minimumFractionDigits:2,maximumFractionDigits:2})};\n    var fmt0=function(n){return '$'+Math.round(isFinite(n)?n:0).toLocaleString('en-US')};\n    var STRETCH=1.3, ADOPT=0.25, DISC=0.15;\n\n    function calc(){\n      var aov=parseFloat(elAov.value)||0;\n      var m=(parseFloat(elMargin.value)||0)\/100;\n      var gift=parseFloat(elGift.value)||0;\n      var orders=parseInt(elOrders.value,10)||0;\n\n      \/\/ threshold: ~30% above AOV, rounded to a friendly number\n      var rawT=aov*STRETCH;\n      var T=rawT>=20?Math.round(rawT\/5)*5:Math.round(rawT);\n      if(T<=aov){T=Math.ceil(aov)+5}\n      $('gt-threshold').textContent=fmt0(T);\n      $('gt-why').textContent='About 30% above your $'+Math.round(aov)+' average order \\u2014 close enough that shoppers stretch to reach it, high enough that you\\u2019re not gifting orders you\\u2019d get anyway.';\n\n      \/\/ gift vs discount on an order of value T\n      var pGift=T*m-gift;\n      var pDisc=T*m-T*DISC;\n      $('gt-vs-cap').textContent='Profit on a '+fmt0(T)+' order: free gift vs. 15% discount';\n      $('gt-gift-lbl').textContent=fmt(gift)+' gift';\n      $('gt-val-gift').textContent=fmt(pGift);\n      $('gt-val-disc').textContent=fmt(pDisc);\n      var maxP=Math.max(pGift,pDisc,0.01);\n      $('gt-bar-gift').style.width=Math.max(pGift\/maxP*100,2)+'%';\n      $('gt-bar-disc').style.width=Math.max(pDisc\/maxP*100,2)+'%';\n\n      var v=$('gt-verdict');\n      if(pGift>pDisc){\n        var diff=pGift-pDisc, pct=pDisc>0?Math.round(diff\/pDisc*100):0;\n        v.innerHTML='The free gift makes you <b>'+fmt(diff)+' more profit per order<\/b>'+(pct>0&&pct<10000?' ('+pct+'% more than discounting)':'')+'. A '+fmt(gift)+' gift costs you '+fmt(gift)+' flat \\u2014 a 15% discount on this order costs you '+fmt(T*DISC)+'.';\n      }else{\n        v.innerHTML='At this gift cost, a discount actually wins by '+fmt(pDisc-pGift)+' per order. Try a cheaper gift \\u2014 your gift should cost less than '+fmt(T*DISC)+' to beat a 15% discount.';\n      }\n\n      \/\/ monthly projection\n      var month=$('gt-month');\n      if(orders>0&&aov>0){\n        var stretched=Math.round(orders*ADOPT);\n        var extraPerOrder=(T-aov)*m-gift;\n        var monthly=stretched*extraPerOrder;\n        var cls=monthly>=0?'pos':'neg2';\n        month.style.display='block';\n        month.innerHTML='If ~'+stretched+' of your '+orders+' monthly orders stretch to reach the gift, each adds <b>'+fmt(T-aov)+'<\/b> in revenue and costs you a '+fmt(gift)+' gift \\u2014 roughly <b class=\"'+cls+'\">'+(monthly>=0?'+':'\\u2212')+fmt(Math.abs(monthly)).slice(1)+'<\/b> extra profit per month. <b class=\"'+cls+'\">'+(monthly>=0?fmt0(monthly):'\\u2212'+fmt0(Math.abs(monthly)))+'\/month<\/b>.';\n      }else{month.style.display='none'}\n\n      \/\/ warning: gift too expensive\n      var w=$('gt-warn'),msg='';\n      var extraProfit=(T-aov)*m;\n      if(gift>0&&aov>0&&gift>=extraProfit){msg='Your gift ('+fmt(gift)+') costs more than the profit from the cart stretch ('+fmt(extraProfit)+'). Pick a cheaper gift or raise the threshold \\u2014 otherwise every gifted order loses money on the stretch.'}\n      if(m<=0){msg='Enter a profit margin above 0% to get useful results.'}\n      w.style.display=msg?'block':'none';w.textContent=msg;\n    }\n\n    [elAov,elMargin,elGift,elOrders].forEach(function(el){el.addEventListener('input',calc)});\n    calc();\n  })();\n  <\/script>\n<\/div>\n<!-- ================= end Free Gift Threshold Calculator ================= -->\n\n","protected":false},"excerpt":{"rendered":"<p>Free Gift Threshold Calculator Find the cart value where your free gift should unlock \u2014 and see how much more profit a gift makes vs. a discount. Average order value $ Profit margin % Gift cost to you $ Orders \/ month (optional) Set your free-gift threshold at $55 About 30% above your average order&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-87","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/pages\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":1,"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/pages\/87\/revisions"}],"predecessor-version":[{"id":88,"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/pages\/87\/revisions\/88"}],"wp:attachment":[{"href":"https:\/\/www.lockpro.io\/blog\/wp-json\/wp\/v2\/media?parent=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}