{"id":73562,"date":"2025-07-03T06:46:24","date_gmt":"2025-07-03T06:46:24","guid":{"rendered":"https:\/\/www.hashmicro.com\/blog\/?p=73562"},"modified":"2025-12-03T02:27:04","modified_gmt":"2025-12-03T02:27:04","slug":"loyalty-points","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/","title":{"rendered":"Loyalty Point: What It Is and How It Works"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Are you struggling to maximize the benefits of your loyalty points? Inefficient tracking and manual reward processes may be quietly reducing customer engagement and retention. Without the right system in place, businesses risk delayed rewards, missed opportunities, and impersonal experiences.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Loyalty programs are more than just a way to offer discounts; they&#8217;re powerful tools to deepen customer relationships and encourage repeat purchases. With the help of automation and data-driven insights, you can deliver personalized rewards, enhance customer satisfaction, and foster long-term growth.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Optimizing your loyalty program might be the strategic move your business needs. Curious how digital solutions can enhance engagement and boost loyalty? Let&#8217;s dive in!<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div> -->\r\n\r\n<!-- <div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Table of Content<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n\r\n\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<!-- START script lama -->\r\n<!-- <script>\r\n\/\/ \tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/ \t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\/\/ \t\tdropdownFixedTop.addEventListener('click', function() {\r\n\/\/ \t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\/\/ \t\t\tdropdownContent.classList.toggle('show');\r\n\/\/ \t\t});\r\n\r\n\/\/ \t\twindow.addEventListener('click', function(event) {\r\n\/\/ \t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\/\/ \t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\/\/ \t\t\t\tlistTocTop.classList.remove('show');\r\n\/\/ \t\t\t}\r\n\/\/ \t\t});\r\n\/\/ \t});\r\n\t\r\n\/\/ \tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\/\/ \tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n\/\/     var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n\/\/     window.addEventListener('scroll', function() {\r\n\/\/         if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(false);\r\n\/\/             triggered = true;\r\n\/\/         } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(true);\r\n\/\/             triggered = false;\r\n\/\/         }\r\n\/\/     });\r\n\r\n\/\/     function isCompletelyScrolledPast(element) {\r\n\/\/         var elementTop = element.getBoundingClientRect().top;\r\n\/\/         var elementBottom = element.getBoundingClientRect().bottom;\r\n\/\/         return elementTop < 0 && elementBottom < 0;\r\n\/\/     }\r\n\r\n\/\/     function showSectionDropdownFixedTop(show) {\r\n\/\/ \t\tif (show) {\r\n\/\/ \t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\/\/ \t\t}\r\n\/\/     }\r\n<\/script> -->\r\n<!-- <script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!--  <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\r\n        Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\t\r\n        Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=free-product-tour\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/Free-Product-Tour-resized.webp\" alt=\"Free Demo\"><\/a><\/span><\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><a href=\"#loyalty\">Loyalty points<\/a> are a strategic incentive system that rewards customers for their purchases or interactions with a brand. They make customers feel valued.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Businesses can adopt <a href=\"#alternative\">alternative approaches<\/a> to create a more effective loyalty point system with cost-based, competitor-based, and customer-focused methods.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.hashmicro.com\/pos-system\"><span style=\"font-weight: 400;\">HashMicro&#8217;s POS Software<\/span><\/a><span style=\"font-weight: 400;\"> simplifies loyalty point management with automated tracking, personalized rewards, and tier-based programs to boost customer lifetime value and retention.<\/span><\/li>\n<\/ul>\n<p><span id=\"loyalty\"><\/span><span style=\"font-weight: 400;\"><style>\r\n.button-cta-custom {\r\n    background-color: #8a0e19;\r\n    color: #fff !important;\r\n    -webkit-transition: all .3s ease;\r\n    transition: all .3s ease;\r\n    padding: 8px 24px;\r\n    display: inline-block;\r\n    border-radius: 8px;\r\n    font-size: 16px;\r\n    font-weight: bold;\r\n}\r\n.button-cta-custom:hover{\r\n\tbackground-color:#991b26\t\t\r\n}\r\n<\/style>\r\n<a class=\"button-cta-custom\" href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=cta-button\" target=\"_blank\">Book a Demo Now!<\/a><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>What are Loyalty Points?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Loyalty points are a strategic approach used by businesses to reward customers for their consistent support. Through this system, customers accumulate points based on their transactions or engagement with a brand, fostering a sense of appreciation and encouraging repeat visits.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">These points can later be exchanged for a variety of benefits such as discounts, complimentary items, or special deals. By offering loyalty points, businesses not only enhance customer satisfaction but also build stronger, long-term relationships that drive retention and increase overall brand value.<\/span><\/p>\n<h2><b>How Do Loyalty Points Work?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Loyalty points serve as an organised incentive system, allowing customers to accumulate loyalty rewards through their ongoing interactions with a business, whether it&#8217;s through making purchases, referring friends, or engaging with promotional activities.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This system typically unfolds in three key phases:<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Accumulation<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Customers can earn loyalty points through various activities that demonstrate their engagement with a brand. These points are commonly accumulated in the following ways:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Making Purchases:<\/b><span style=\"font-weight: 400;\"> For each Singapore dollar spent, customers earn a set number of points (e.g., $1 = 1 point), encouraging continued shopping.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Account Registration:<\/b><span style=\"font-weight: 400;\"> New users are often rewarded with bonus points simply for signing up or creating a profile.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Referral Program:<\/b><span style=\"font-weight: 400;\"> Referring a friend who completes a purchase can earn the original customer extra points as a thank-you for spreading the word.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Social Media Interactions:<\/b><span style=\"font-weight: 400;\"> Following, liking, or sharing brand content on social platforms may result in additional points.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Providing Feedback or Reviews:<\/b><span style=\"font-weight: 400;\"> Writing product reviews or participating in customer surveys can also earn you points.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Exclusive Offers &amp; Campaigns:<\/b><span style=\"font-weight: 400;\"> During special events such as birthdays or festive promotions, brands may offer time-limited bonus points to boost participation.<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400;\">2. Redemption<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">After accumulating a certain number of points, customers can exchange them for a variety of appealing rewards. To maintain a healthy balance between customer satisfaction and business profitability, companies usually establish clear redemption guidelines.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Popular ways to redeem loyalty points include:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Discounts on future purchases:<\/b><span style=\"font-weight: 400;\"> For example, customers may use 500 points to get S$5 off their next order.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Complementary products or services:<\/b><span style=\"font-weight: 400;\"> Points can be traded for selected items or service offerings.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Exclusive member privileges:<\/b><span style=\"font-weight: 400;\"> Access to VIP-only events, early product launches, or private sales is often reserved for loyal members.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Gift cards:<\/b><span style=\"font-weight: 400;\"> Customers may redeem points for gift cards, either from the store itself or partnered retailers.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Experiential rewards:<\/b><span style=\"font-weight: 400;\"> Some programs offer unique experiences, such as travel upgrades, dining packages, or event access.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Charitable donations:<\/b><span style=\"font-weight: 400;\"> In some cases, customers can choose to convert their points into donations to support charitable causes.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">For loyalty programs to remain effective, the redemption process should be transparent and straightforward. Overly complicated steps or limited reward choices can discourage customer participation and diminish program value.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Expiration<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Loyalty points often include expiration policies to motivate customers to redeem them within a specific timeframe while helping businesses manage their financial obligations.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, if these rules aren&#8217;t communicated or properly managed, expired points can lead to customer dissatisfaction and weaken brand loyalty.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Common types of expiration include:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Time-based expiration:<\/b><span style=\"font-weight: 400;\"> Points are valid for a predetermined period, such as 12 months, after being earned.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Expiration due to inactivity:<\/b><span style=\"font-weight: 400;\"> If a customer hasn&#8217;t made any transactions or logged in for a particular duration, their points may become invalid.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>No expiration policy:<\/b><span style=\"font-weight: 400;\"> Some premium or customer-focused brands allow points to remain valid indefinitely, provided the account is active and in good standing.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2><b>How to Calculate the Value of Loyalty Points Effectively<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-73563\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively.webp\" alt=\"How to Calculate the Value of Loyalty Points Effectively\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/How-to-Calculate-the-Value-of-Loyalty-Points-Effectively-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Ass<\/span><span style=\"font-weight: 400;\">igning value to loyalty points follows a precise calculation. The worth of each point is determined based on the rewards structure you offer and how much customers need to spend to earn those rewards.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For instance, if your program offers 5 points for every <\/span><b>S$1<\/b><span style=\"font-weight: 400;\"> spent and a <\/span><b>S$5 discount<\/b><span style=\"font-weight: 400;\"> requires 500 points, that means a customer would need to pay <\/span><b>S$100<\/b><span style=\"font-weight: 400;\"> to earn enough points. To find the value of a single point, divide the reward amount (S$5) by the required number of points (500). It gives you a point value of <\/span><b>S$0.01<\/b><span style=\"font-weight: 400;\">, or one cent.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this setup, you&#8217;re effectively returning <\/span><b>5% of each purchase<\/b><span style=\"font-weight: 400;\"> to the customer in value (500 points\/S$100).<\/span><\/p>\n<p><b>Pro Tip:<\/b><span style=\"font-weight: 400;\"> To maintain the long-term viability of your loyalty program, consider capping the return rate at 5%. A 1 point = 1 cent ratio is widely accepted and easily understood by most customers.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While using a simple spend-to-earn ratio is the most straightforward way to determine point value, it&#8217;s not the only method. There are alternative approaches businesses can take to create a more strategic and effective loyalty point system:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Cost-based method<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">It involves calculating the cost-per-point (CPP) by dividing the expense of the reward by the total number of points needed to redeem it. Once you know how much each point costs your business, you can adjust the point value to ensure your program remains financially sustainable.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Competitor-based method<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Aligning your loyalty point value with industry standards can help you stay competitive. However, if you have strong insights from customer research, introducing a fresh point structure that stands out from competitors may capture more attention.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Customer-focused method<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If customers aren&#8217;t engaging with your program despite a seemingly reasonable value system, it may be time to listen to their feedback. Re-evaluating and enhancing the point value also could improve participation and satisfaction.<\/span><\/p>\n<h2><b>Best Practices for Setting Loyalty Programs<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Before you jump into creating a loyalty program for your store, it&#8217;s essential to take a step back and consider a few key strategies that can help you get the most out of your efforts.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To ensure your program is both appealing and practical, we&#8217;ve compiled some helpful insights to guide you in structuring rewards, engaging your audience, and choosing the right tools. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">These tips will help you build a loyalty system that not only attracts customers but also keeps them coming back.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Align reward with brand values and customer desires<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A loyalty program won&#8217;t foster true customer loyalty if the rewards don&#8217;t reflect your brand&#8217;s values or appeal to what your customers care about. That&#8217;s why it&#8217;s essential to design a rewards system that resonates with both your business identity and your audience&#8217;s preferences.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, a local Singaporean skincare brand that offers 1000 points to customers who return empty product containers for recycling, even if those containers are from other brands. In return, customers can redeem those points for S$10 off their next purchase.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This approach not only supports sustainability but also encourages repeat purchases while aligning with eco-conscious values.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Explore diverse reward options<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">To make your loyalty program stand out and leave a lasting impression, consider incorporating diverse rewards that go beyond basic price cuts. Instead of sticking solely to discounts, try offering unique experiences, such as invitations to exclusive workshops featuring local Singaporean brands.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can also personalize rewards by analyzing customers&#8217; past purchases. For instance, if a customer previously bought a skincare product, offer them a complimentary item that pairs well with it.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Implement tiered reward structures<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">To increase your Customer Lifetime Value (CLV), adopting a tiered loyalty program can be an effective strategy. By assigning more attractive and exclusive perks at each tier level, you motivate customers to reach the next level.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, in Singapore, you could offer higher-tier members perks like priority access to National Day sales, exclusive invites to local product launches, or complimentary vouchers from popular Singaporean caf\u00e9s.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Optimize reward redemption processes\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Boosting your Customer Lifetime Value (CLV) can be more achievable by implementing a tiered loyalty program. This approach rewards customers with increasingly valuable and exclusive perks as they move up each level.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, in the Singaporean market, you might offer upper-tier members early access to seasonal shopping events like the Great Singapore Sale, VIP passes to homegrown brand launches, or even complimentary vouchers for well-loved local spots like Toast Box.<\/span><\/p>\n<h2><b>Simplify Loyalty Points Management with HashMicro&#8217;s POS Software<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-73565\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System.webp\" alt=\"Simplify Loyalty Points Management with HashMicro\u2019s POS Software\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/HashMicrol-POS-System-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/pos-system\"><span style=\"font-weight: 400;\">HashMicro&#8217;s POS Software<\/span><\/a><span style=\"font-weight: 400;\"> offers a comprehensive solution for managing loyalty points with accuracy and ease. It enables businesses to track and manage customer rewards across every transaction seamlessly. It ensures that each interaction contributes to stronger customer engagement and long-term loyalty.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The system comes in multiple formats, including General POS, Retail POS, and Restaurant POS. These features empower businesses to offer personalized incentives, monitor spending behaviour, and reward loyal customers effectively.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One of the standout elements of HashMicro&#8217;s POS solution is the Membership and <a href=\"https:\/\/www.hashmicro.com\/blog\/loyalty-program-software\/\">loyalty program software<\/a>, which supports point accumulation, tier-based reward programs, and automated redemption. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">It simplifies an end-to-end approach that helps increase CLV while streamlining loyalty program management. Here are the key features<\/span><span style=\"font-weight: 400;\">\u00a0of HashMicro&#8217;s POS software:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Membership tracking:<\/b><span style=\"font-weight: 400;\"> Create detailed customer profiles, monitor purchase behaviour, and segment users for targeted rewards and promotions.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Integrated point-based system:<\/b><span style=\"font-weight: 400;\"> Easily configure loyalty rules, digital vouchers, and tier upgrades, with automatic point collection and redemption at checkout.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Real-time stock &amp; sales sync:<\/b><span style=\"font-weight: 400;\"> Points can be adjusted in real time based on purchases, ensuring up-to-date reward calculations.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Flexible promotions:<\/b><span style=\"font-weight: 400;\"> Set up custom reward campaigns, time-limited offers, and exclusive member discounts to boost loyalty engagement.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Transaction &amp; customer insights:<\/b><span style=\"font-weight: 400;\"> Gain access to comprehensive reports on point usage, top customers, and reward redemption trends.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>System integration:<\/b><span style=\"font-weight: 400;\"> Seamlessly connects with CRM, inventory, and accounting systems to streamline business operations and improve customer experience.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">With this robust and versatile <\/span><a href=\"https:\/\/www.hashmicro.com\/blog\/pos-software\/\"><span style=\"font-weight: 400;\">POS software<\/span><\/a><span style=\"font-weight: 400;\">, businesses can easily implement and manage loyalty programs that foster repeat business, enhance customer satisfaction, and drive sustainable growth.<\/span><\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Selecting the right POS software in Singapore is crucial for businesses aiming to build stronger customer relationships through effective loyalty point management. An innovative POS system can help companies to boost retention, encourage repeat purchases, and ensure program transparency.<\/span><\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/pos-system\"><span style=\"font-weight: 400;\">HashMicro&#8217;s POS Software<\/span><\/a><span style=\"font-weight: 400;\"> offers an integrated solution designed to simplify and automate loyalty point tracking. With real-time data syncing and automated redemption features, businesses can seamlessly manage their customer loyalty programs while gaining insights into buying behaviour.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To support digital transformation, eligible companies can apply for up to 70% funding through the NTUC <\/span><a href=\"https:\/\/www.hashmicro.com\/ctc-grants\"><span style=\"font-weight: 400;\">CTC Grant<\/span><\/a><span style=\"font-weight: 400;\"> when adopting innovative solutions like HashMicro.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Request a <\/span><a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\"><span style=\"font-weight: 400;\">free demo <\/span><\/a><span style=\"font-weight: 400;\">today and see how HashMicro&#8217;s POS Software can elevate your loyalty program and drive customer engagement effortlessly.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[wpco<\/span><span style=\"font-weight: 400;\">de id=&#8221;43347&#8243; catimg=&#8221;POS&#8221;]<\/span><\/p>\n<h2><strong>Frequently Asked Questions<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is the point of loyalty?<\/strong><\/summary>\n<p>Loyalty programs offer rewards, discounts, or other special incentives and are designed as a reward for a customer&#8217;s repeat business.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Why are loyalty points valid? <\/strong><\/summary>\n<p>Businesses use customer loyalty programs to foster repeat business and boost customer lifetime value. Organizations can offer discounts, early access to new products, and other loyalty rewards to their customer base in exchange for frequent purchases.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What&#8217;s the point of being royal?<\/strong><\/summary>\n<p>Relationships with loyalty are stronger because both people can be themselves and share what they&#8217;re experiencing without fear that the other person will abandon them. It is true for romantic, work, family, and social relationships.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Are you struggling to maximize the benefits of your loyalty points? Inefficient tracking and manual reward processes may be quietly reducing customer engagement and retention. Without the right system in place, businesses risk delayed rewards, missed opportunities, and impersonal experiences. Loyalty programs are more than just a way to offer discounts; they&#8217;re powerful tools to [&hellip;]<\/p>\n","protected":false},"author":201,"featured_media":73566,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7],"tags":[],"class_list":{"0":"post-73562","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-pos-general"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Loyalty Point: What It Is and How It Works<\/title>\n<meta name=\"description\" content=\"Discover how loyalty points work, why they matter, and how businesses use them to boost customer retention and long-term engagement.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Loyalty Point: What It Is and How It Works\" \/>\n<meta property=\"og:description\" content=\"Discover how loyalty points work, why they matter, and how businesses use them to boost customer retention and long-term engagement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\" \/>\n<meta property=\"og:site_name\" content=\"BusinessTech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/hashmicro\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-03T06:46:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-03T02:27:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Lily Chen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lily Chen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\"},\"author\":{\"name\":\"Lily Chen\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/3507d5a5a492d17dc19f5a6d1e156149\"},\"headline\":\"Loyalty Point: What It Is and How It Works\",\"datePublished\":\"2025-07-03T06:46:24+00:00\",\"dateModified\":\"2025-12-03T02:27:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\"},\"wordCount\":2009,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp\",\"articleSection\":[\"POS\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\",\"name\":\"Loyalty Point: What It Is and How It Works\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp\",\"datePublished\":\"2025-07-03T06:46:24+00:00\",\"dateModified\":\"2025-12-03T02:27:04+00:00\",\"description\":\"Discover how loyalty points work, why they matter, and how businesses use them to boost customer retention and long-term engagement.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp\",\"width\":1200,\"height\":675,\"caption\":\"Loyalty Point: What It Is and How It Works\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Loyalty Point: What It Is and How It Works\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"name\":\"BusinessTech\",\"description\":\"Business Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\",\"name\":\"HashMicro\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"width\":334,\"height\":51,\"caption\":\"HashMicro\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/web.facebook.com\/hashmicro\/\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/3507d5a5a492d17dc19f5a6d1e156149\",\"name\":\"Lily Chen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/01\/cropped-5-96x96.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/01\/cropped-5-96x96.png\",\"caption\":\"Lily Chen\"},\"description\":\"Lily Chen writes compelling articles about point-of-sale systems, tailored for retail and service businesses. She ensures her content is both informative and engaging, helping readers choose and implement effective POS solutions. Her SEO-friendly writing style ensures the articles perform well online.\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/author\/lily-chen\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Loyalty Point: What It Is and How It Works","description":"Discover how loyalty points work, why they matter, and how businesses use them to boost customer retention and long-term engagement.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/","og_locale":"en_US","og_type":"article","og_title":"Loyalty Point: What It Is and How It Works","og_description":"Discover how loyalty points work, why they matter, and how businesses use them to boost customer retention and long-term engagement.","og_url":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/","og_site_name":"BusinessTech","article_publisher":"https:\/\/web.facebook.com\/hashmicro\/","article_published_time":"2025-07-03T06:46:24+00:00","article_modified_time":"2025-12-03T02:27:04+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp","type":"image\/webp"}],"author":"Lily Chen","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Written by":"Lily Chen","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/"},"author":{"name":"Lily Chen","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/3507d5a5a492d17dc19f5a6d1e156149"},"headline":"Loyalty Point: What It Is and How It Works","datePublished":"2025-07-03T06:46:24+00:00","dateModified":"2025-12-03T02:27:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/"},"wordCount":2009,"publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp","articleSection":["POS"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/","url":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/","name":"Loyalty Point: What It Is and How It Works","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp","datePublished":"2025-07-03T06:46:24+00:00","dateModified":"2025-12-03T02:27:04+00:00","description":"Discover how loyalty points work, why they matter, and how businesses use them to boost customer retention and long-term engagement.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/blog\/loyalty-points\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#primaryimage","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/Loyalty-Point-Value_-How-It-Works-and-Why-It-Matters-HashMicro.webp","width":1200,"height":675,"caption":"Loyalty Point: What It Is and How It Works"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/blog\/loyalty-points\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Loyalty Point: What It Is and How It Works"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/blog\/#website","url":"https:\/\/www.hashmicro.com\/blog\/","name":"BusinessTech","description":"Business Management Blog","publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/blog\/#organization","name":"HashMicro","url":"https:\/\/www.hashmicro.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","width":334,"height":51,"caption":"HashMicro"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/hashmicro\/","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/3507d5a5a492d17dc19f5a6d1e156149","name":"Lily Chen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/01\/cropped-5-96x96.png","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/01\/cropped-5-96x96.png","caption":"Lily Chen"},"description":"Lily Chen writes compelling articles about point-of-sale systems, tailored for retail and service businesses. She ensures her content is both informative and engaging, helping readers choose and implement effective POS solutions. Her SEO-friendly writing style ensures the articles perform well online.","url":"https:\/\/www.hashmicro.com\/blog\/author\/lily-chen\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/73562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/users\/201"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/comments?post=73562"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/73562\/revisions"}],"predecessor-version":[{"id":76868,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/73562\/revisions\/76868"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media\/73566"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media?parent=73562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/categories?post=73562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/tags?post=73562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}