{"id":19544,"date":"2026-06-02T08:27:22","date_gmt":"2026-06-02T08:27:22","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=19544"},"modified":"2026-06-02T08:27:22","modified_gmt":"2026-06-02T08:27:22","slug":"sales-pipeline-management-guide","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/","title":{"rendered":"Sales Pipeline: 7 Stages, Tips &#038; How to Build It in Malaysia (2026)"},"content":{"rendered":"<p>A lead can start from WhatsApp, continue on LinkedIn, and end with a quotation request in a separate spreadsheet. For many SME teams in Malaysia, this still feels manageable at first. But once prospects increase, follow-ups slip, deal status becomes unclear, and managers struggle to see which opportunities are actually ready to close.<\/p>\n<p>Scattered WhatsApp conversations, LinkedIn follow-ups, and separate spreadsheets can leave sales teams working with fragmented data. <a href=\"https:\/\/www.worldbank.org\/en\/country\/malaysia\/publication\/digitalizing-smes-to-boost-competitiveness\" target=\"_blank\" rel=\"noopener\">According to the World Bank Group<\/a>, Malaysian SMEs use digital tools for customer-facing activities, but adoption of end-to-end digital transactions remains limited. A clear sales pipeline helps connect prospect status, next steps, and revenue potential across owners, finance, and operations.<\/p>\n<p>If your pipeline still relies on spreadsheets, separate chats, or each sales rep\u2019s memory, small gaps can easily turn into missed opportunities. This guide explains how the 7 stages work, how to build a pipeline from scratch, and how Malaysian teams can improve visibility while <a href=\"https:\/\/www.hashmicro.com\/my\/sales-leads-management\">managing sales leads more clearly<\/a> across every stage.<\/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: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#What\">A sales pipeline<\/a> helps teams track active deals, plan next actions, and forecast revenue more clearly.<\/li>\n<li aria-level=\"1\">The <a href=\"#The\">7 sales pipeline stages<\/a> guide prospects from first contact to follow-up, so each deal has a clear path.<\/li>\n<li aria-level=\"1\">A healthy pipeline <a href=\"#Sales\">needs weekly reviews<\/a>, clear ownership, and reports to spot stuck deals before they affect targets.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- <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\">Content Lists<\/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<!-- TOC mobile -->\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<!-- TOC mobile -->\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}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\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<!-- START 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<!-- END ToC styling  -->\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<\/script>\r\n\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\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', '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\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\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;} \/\/ Biar ga nampilin Key Takeaways di ToC\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\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan 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\r\n\r\n\r\n\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<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n\n<p>CRM sales software helps teams track deals, follow-ups, conversations, and revenue forecasts in one place, so pipeline movement stays clearer across departments.<\/p>\n<p><span id=\"What\"><\/span><a href=\"https:\/\/www.hashmicro.com\/my\/sales-leads-management?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/crm_sales_definisi_en.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/crm_sales_definisi_en.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/crm_sales_definisi_en_m.webp\" alt=\"Sales_Definisi\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/p>\n<h2><strong>What Is a Sales Pipeline?<\/strong><\/h2>\n<p>A sales pipeline is a visual view of active deals arranged by stage, from first contact to closing. It helps sales teams see each prospect\u2019s status, decide the next action, and focus on deals that are most likely to move forward.<\/p>\n<p>For SME Malaysia, a clear pipeline prevents deals from getting lost in WhatsApp chats, spreadsheets, or scattered notes. It also helps managers spot near-closing deals, review sales rep performance, and forecast revenue for the next 30 to 60 days. Before building one, it helps to understand how a sales pipeline differs from a sales funnel.<\/p>\n<h2><strong>Sales Pipeline vs Sales Funnel vs Sales forecast: what are the differences?<\/strong><\/h2>\n<p>Sales pipeline and <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/sales-funnel\/\">sales funnel stages<\/a> are often discussed together, but they do not show the same thing. A pipeline tracks active deals from the sales team\u2019s view, while a funnel shows how leads move from awareness to conversion.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; table-layout: fixed; font-family: Arial, sans-serif;\">\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Aspect<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Sales Pipeline<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Sales Funnel<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Sales Forecast<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Perspective<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Sales rep and sales manager<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Marketing and growth team<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Finance, owner, or sales leader<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Focus<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Active deals and next actions<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Lead volume and conversion flow<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Expected revenue from open deals<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Visualisation<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Deal stages from prospecting to closing<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Funnel shape from broad awareness to purchase<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Revenue projection based on deal value and probability<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Main user<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Sales manager and sales team<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Marketing team<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">CFO, business owner, or sales director<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span id=\"The\"><\/span>Think of it this way. The pipeline is the sales rep\u2019s road map, the funnel is marketing\u2019s big-picture view, and the forecast is the financial projection built from both.<\/p>\n<h2><strong>The 7 Stages of a Sales Pipeline<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-19552\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1.webp\" alt=\"The 7 Stages of a Sales Pipeline\" width=\"800\" height=\"450\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1-747x420.webp 747w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/The-7-Stages-of-a-Sales-Pipeline-1-696x392.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/my\/blog\/sales-process\/\">A sales process<\/a> usually needs several steps before a deal can close, which is why a sales pipeline often has seven stages. For Malaysian businesses, the process often moves from WhatsApp or LinkedIn outreach to demo, proposal, approval, closing, and follow-up.<\/p>\n<h3><strong>Stage 1: Prospecting<\/strong><\/h3>\n<p>Prospecting is the stage where sales reps find potential buyers before a formal sales conversation starts. In Malaysia, this often happens through WhatsApp Business, LinkedIn, referrals, or industry events. The goal is to choose prospects that match your target industry, company size, and business need, not to add every contact into the pipeline. CRM helps record each prospect, source, response, and next follow-up.<\/p>\n<h3><strong>Stage 2: Lead Qualification<\/strong><\/h3>\n<p>Lead qualification helps sales teams decide which prospects are worth pursuing and <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-lead-management-software\/\">manage lead status and follow-up history<\/a> more clearly. A simple method is BANT, which checks budget, authority, need, and timeline. For Malaysian SMEs, authority matters because decisions often involve the owner, finance manager, or department head. If a prospect has no budget, clear need, or timeline, move them into nurture instead of crowding the pipeline.<\/p>\n<h3><strong>Stage 3: Meeting or Demo<\/strong><\/h3>\n<p>The meeting or demo stage shows how your solution fits the prospect\u2019s problem. In Malaysia, this can happen through Zoom, Google Meet, Microsoft Teams, or an in-person meeting for larger deals. Sales materials should match the buyer, such as English, Bahasa Malaysia, or Mandarin when needed. After the meeting, record the attendees, objections, next step, and follow-up plan in CRM.<\/p>\n<h3><strong>Stage 4: Proposal<\/strong><\/h3>\n<p>The proposal stage turns the discussion into a written offer with pricing, timeline, payment terms, and next steps. For Malaysian businesses, proposals should be customised by industry because F&amp;B, manufacturing, and trading companies have different needs. LHDN e-Invoice readiness should also be checked early to avoid billing delays later. CRM helps track proposal versions, sent dates, approval status, and follow-ups.<\/p>\n<h3><strong>Stage 5: Negotiation or Commitment<\/strong><\/h3>\n<p>Negotiation starts when the prospect is interested but still needs clarity before committing. In Malaysia, common concerns include budget timing, director approval, or still using Excel. Sales reps should respond by clarifying priorities, offering to present to decision makers, or showing the cost of manual work. CRM keeps each stakeholder\u2019s concern and commitment signal easier to track.<\/p>\n<h3><strong>Stage 6: Closing the Deal<\/strong><\/h3>\n<p>Closing happens when the prospect agrees to move forward, but admin steps still matter. The team must confirm purchase order, contract, payment terms, onboarding handover, and invoice details. In Malaysia, incomplete LHDN e-Invoice or billing information can slow down this stage. If the buyer is not ready, move the deal into nurture instead of letting it disappear.<\/p>\n<h3><strong>Stage 7: Retention and Follow-Up\u00a0<\/strong><\/h3>\n<p>Retention keeps the customer relationship active after closing. For Malaysian SMEs with small sales teams, follow-up is often missed because reps are busy chasing new leads. The first 30 days should include onboarding check-ins, support follow-ups, and value confirmation. <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/what-is-crm-system\/\">A CRM system helps<\/a> schedule reminders, store customer history, and alert the team before renewals, upsells, or referrals are forgotten.<\/p>\n<h2><strong>How to Build a Sales Pipeline for Malaysian SMEs<\/strong><\/h2>\n<p>Building a sales pipeline does not need to be complicated. For most Malaysian SMEs, the goal is simple: make every deal visible, assign the right next action, and stop serious prospects from getting lost between WhatsApp, Excel, and follow-up notes.<\/p>\n<h3><strong>1. Identify your buyers and place them in the right stage<\/strong><\/h3>\n<p>Start by listing who your buyers are and where they are in the buying journey. A prospect who only replied to a WhatsApp message should stay in early prospecting, while someone who has requested a demo can move to the meeting stage. This prevents the pipeline from looking healthier than it really is.<\/p>\n<h3><strong>2. Assign sales activities to your team<\/strong><\/h3>\n<p>Even in a small SME team with 1 to 5 sales reps, each activity needs clear ownership. Decide who handles prospecting, who follows up after demos, who prepares proposals, and which tools can <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/sales-force-automation\/\">automate repetitive sales tasks<\/a>. A CRM can help assign tasks, set reminders, and make sure every deal has an owner.<\/p>\n<h3><strong>3. Set your sales cycle length<\/strong><\/h3>\n<p>Estimate how long deals usually take from first contact to closing. As a practical Malaysia benchmark, B2B trading deals may take 2 to 4 weeks, software or SaaS deals often take 4 to 8 weeks, while custom manufacturing deals can take 8 to 16 weeks. If a deal takes much longer than your normal cycle, review whether it should stay active or move into nurture.<\/p>\n<h3><strong>4. Work backwards from your revenue target<\/strong><\/h3>\n<p>Set the number of deals your pipeline needs based on your monthly or quarterly revenue goal. For example, if your target is RM100,000 and your average deal value is RM10,000, you need at least 10 closed deals. If your win rate is 25%, your pipeline should contain around 40 qualified opportunities.<\/p>\n<h3><strong>5. Remove inactive deals regularly<\/strong><\/h3>\n<p>Pipeline cleanup is not about throwing away prospects. It helps keep forecasting realistic. For Malaysian SMEs, a deal can be marked inactive if there is no reply after 2 to 3 follow-ups, no clear timeline, or no movement for more than 30 days. Move these deals into nurture instead of leaving them inside the active pipeline.<\/p>\n<h3><strong>6. Define your pipeline metrics<\/strong><\/h3>\n<p><span id=\"Sales\"><\/span>Track only the metrics that help the team make better decisions. Start with win rate, average deal value, average sales cycle length, and conversion rate between stages. CRM reports make this easier because managers can see which stages are slowing down, which reps need support, and whether the pipeline is large enough to hit the next target.<\/p>\n<p><span data-sheets-root=\"1\"><style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            Building a sales pipeline for Malaysian SMEs should start with clear buyer stages, realistic sales cycle benchmarks, and measurable pipeline targets. A healthy pipeline also needs regular cleanup and simple metrics, so teams can focus on qualified deals instead of chasing every contact manually.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Victo Glend, Head of Digital Marketing Dept.<\/em>\r\n    <\/p>\r\n<\/div><\/span><\/p>\n<h2><strong>Sales Pipeline Management: How to Keep It Healthy<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-19558\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy.webp\" alt=\"Sales Pipeline Management How to Keep It Healthy\" width=\"800\" height=\"533\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy-300x200.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy-768x512.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy-630x420.webp 630w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy-150x100.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Sales-Pipeline-Management-How-to-Keep-It-Healthy-696x464.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>A sales pipeline is only useful when it stays updated. For Malaysian SMEs, pipeline management helps sales teams see which deals are moving, which ones are stuck, and which opportunities need action before revenue targets are affected.<\/p>\n<h3><strong>1. Review your pipeline every week<\/strong><\/h3>\n<p>Set a 30-minute weekly pipeline review with the sales team. Check which deals moved forward, which ones are stuck, and which follow-ups are overdue. For smaller SME teams, this rhythm is realistic because it keeps the pipeline clean without turning the review into a long meeting.<\/p>\n<h3><strong>2. Track every deal using CRM<\/strong><\/h3>\n<p>A healthy pipeline needs <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-sales-management-software\/\">tools to manage sales activities<\/a>, including deal value, stage, owner, follow-up date, and next action. Relying only on Excel or WhatsApp makes it easy for active deals to be missed, especially when several sales reps are handling different prospects at the same time.<\/p>\n<h3><strong>3. Keep sales, finance, and operations aligned<\/strong><\/h3>\n<p>Many deals in Malaysia slow down because sales, finance, and operations need different data from <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/erp-vs-crm\/\">ERP and CRM systems<\/a> to stay aligned on payment terms, delivery capacity, and approval steps. A healthy pipeline should show these blockers early. This helps the sales team avoid promising timelines or pricing that other departments cannot support.<\/p>\n<h3><strong>4. Create and read pipeline reports<\/strong><\/h3>\n<p>Pipeline reports should not only show how many deals are open. They should help managers see conversion rate, average deal value, sales cycle length, and expected revenue. If the report shows many deals stuck after proposal, the issue may be pricing clarity, slow approvals, or weak follow-up.<\/p>\n<h2><strong>Key Sales Pipeline Metrics to Track<\/strong><\/h2>\n<p>Sales pipeline metrics help sales managers understand whether the pipeline is healthy or only looks busy. For SME Malaysia, the goal is not to track every possible number, but to focus on metrics that show deal quality, revenue potential, and sales speed.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; table-layout: fixed; font-family: Arial, sans-serif;\">\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Metric<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Definition<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Formula<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ccc;\"><b>Benchmark Malaysia<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Number of Active Deals<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Total deals currently moving in the pipeline<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Count all open deals by stage<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">3 to 5 times monthly sales target coverage<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Average Deal Value<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Average revenue expected from each closed deal<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Total deal value divided by number of deals<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">RM5,000 to RM30,000 for SME B2B deals<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Win Rate<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Percentage of deals that become customers<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Closed won deals divided by total closed deals, then multiplied by 100<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">20% to 35% for SME B2B teams<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Average Sales Cycle Length<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Average time needed to close a deal<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Total days to close deals divided by number of closed deals<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">2 to 4 weeks for trading, 4 to 8 weeks for SaaS, 8 to 16 weeks for manufacturing<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ccc;\"><b>Pipeline Velocity<\/b><\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">How fast revenue moves through the pipeline<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Active deals multiplied by win rate and average deal value, then divided by sales cycle length<\/td>\n<td style=\"padding: 10px; border: 1px solid #ccc;\">Higher is better, compare monthly trends<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If the number of active deals is too low, the team may need stronger prospecting. If win rate falls below 20%, review lead quality, proposal clarity, or follow-up timing. A long sales cycle may mean too many approval layers, unclear pricing, or deals staying too long in negotiation.<\/p>\n<p>All these metrics can be tracked automatically using <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-crm-software-system\/\">CRM tools for Malaysian sales teams<\/a>, so teams do not need to calculate everything manually in Excel. This makes pipeline reviews faster, cleaner, and easier to act on.<\/p>\n<h2><strong>Common Sales Pipeline Challenges for Malaysian Businesses<\/strong><\/h2>\n<p>Malaysian businesses often manage deals in a market where approvals, communication habits, billing readiness, and language preferences vary by company type. For sales teams, the challenge is not always buyer interest, but whether every stakeholder, document, and follow-up is properly tracked.<\/p>\n<h3><strong>Multi-Approver Decision Making<\/strong><\/h3>\n<p>In Malaysia, B2B deals often need approval from the owner, finance manager, and department head, especially for SME or family-owned businesses. This can keep deals stuck in negotiation when the sales rep only speaks to one contact. To reduce delays, map all decision makers during qualification, invite key approvers to the demo, and track each stakeholder\u2019s concern in CRM.<\/p>\n<h3><strong>WhatsApp-Based Sales Without a Tracking System<\/strong><\/h3>\n<p>Many Malaysian sales reps use WhatsApp Personal or WhatsApp Business because it feels fast and familiar. The risk appears when deal history stays only inside one sales rep\u2019s phone, especially if that person resigns or misses a follow-up. Log every important WhatsApp interaction into CRM, or use CRM with WhatsApp Business API integration to connect conversations with the right deal.<\/p>\n<h3><strong>LHDN e-Invoice Impact on Proposal and Closing Stage<\/strong><\/h3>\n<p>LHDN e-Invoice can slow the pipeline when billing readiness is checked too late. If company details, tax information, or billing contacts are incomplete after approval, closing can be delayed. Sales teams should confirm e-Invoice readiness during the proposal stage and store billing details in CRM so sales and finance work from the same data.<\/p>\n<h3><strong>Multi-Language Pipeline Communication<\/strong><\/h3>\n<p>Malaysian buyers may prefer Bahasa Malaysia, English, Mandarin, or a mix of languages depending on company type. If proposal summaries, contracts, or follow-ups use the wrong language, deals can slow down during meeting or approval stages. Prepare bilingual or multilingual templates and tag each prospect\u2019s language preference in CRM to keep communication relevant.<\/p>\n<p>These challenges show why Malaysian SMEs often need more than Excel sheets and chat history to manage pipeline movement. A healthy pipeline should make every deal, stakeholder, billing detail, and follow-up visible before small delays turn into lost revenue.<\/p>\n<h2><strong>Conclusion\u00a0<\/strong><\/h2>\n<p>A structured sales pipeline is not just a way to organise deals. It helps sales teams see which opportunities are moving, which ones are stuck, and how much revenue can realistically be expected in the next few weeks.<\/p>\n<p>For Malaysian businesses, this matters even more as LHDN e-Invoice readiness, multi-approver decisions, and WhatsApp-based follow-ups can slow deals without proper tracking. This helps the sales team avoid promising timelines or pricing that other departments cannot support.<\/p>\n<p>Businesses that want a more predictable sales process can start by reviewing their current pipeline, cleaning inactive deals, and using CRM to track every stage more consistently. For deeper guidance, a <a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">free consultation<\/a> can help identify which pipeline gaps need to be fixed first.<\/p>\n<h2><strong>FAQ About Sales Pipeline<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is a sales pipeline in simple terms?<\/strong><\/summary>\n<p>A sales pipeline is a way to track potential customers as they move from first contact to closing. It helps sales teams know which deals need follow-up, which ones are ready to move forward, and which ones may need more attention before they become customers.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Why is a sales pipeline important for SMEs?<\/strong><\/summary>\n<p>A sales pipeline helps SMEs avoid missed follow-ups, unclear deal status, and unpredictable revenue. For small sales teams, it gives a clearer view of which prospects are active, which deals are stuck, and where the team should focus next.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How many stages should a sales pipeline have?<\/strong><\/summary>\n<p>A sales pipeline usually has 5 to 7 stages, depending on how complex the sales process is. A simple SME pipeline may start with prospecting, qualification, meeting, proposal, closing, and follow-up. The key is to keep the stages clear and easy for the team to update.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What is the difference between a lead and a deal in a sales pipeline?<\/strong><\/summary>\n<p>A lead is a potential customer who has shown interest but may not be ready to buy yet. A deal is a qualified opportunity with clearer buying intent, budget, or timeline. Moving every lead into the deal pipeline too early can make forecasting less accurate.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How often should a sales pipeline be reviewed?<\/strong><\/summary>\n<p>A sales pipeline should be reviewed at least once a week. For Malaysian SMEs, a 30-minute weekly review is usually enough to check stuck deals, overdue follow-ups, proposal status, and expected revenue for the next few weeks.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Can a sales pipeline be managed without CRM software?<\/strong><\/summary>\n<p>A sales pipeline can be managed with spreadsheets at the beginning, but it becomes harder as deal volume grows. CRM software helps track stages, follow-ups, customer conversations, and revenue forecasts in one place, reducing the risk of missed updates or scattered records.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is a sales pipeline in simple terms?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A sales pipeline is a way to track potential customers as they move from first contact to closing. It helps sales teams know which deals need follow-up, which ones are ready to move forward, and which ones may need more attention before they become customers.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Why is a sales pipeline important for SMEs?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A sales pipeline helps SMEs avoid missed follow-ups, unclear deal status, and unpredictable revenue. For small sales teams, it gives a clearer view of which prospects are active, which deals are stuck, and where the team should focus next.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How many stages should a sales pipeline have?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A sales pipeline usually has 5 to 7 stages, depending on how complex the sales process is. A simple SME pipeline may start with prospecting, qualification, meeting, proposal, closing, and follow-up. The key is to keep the stages clear and easy for the team to update.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What is the difference between a lead and a deal in a sales pipeline?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A lead is a potential customer who has shown interest but may not be ready to buy yet. A deal is a qualified opportunity with clearer buying intent, budget, or timeline. Moving every lead into the deal pipeline too early can make forecasting less accurate.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How often should a sales pipeline be reviewed?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A sales pipeline should be reviewed at least once a week. For Malaysian SMEs, a 30-minute weekly review is usually enough to check stuck deals, overdue follow-ups, proposal status, and expected revenue for the next few weeks.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Can a sales pipeline be managed without CRM software?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A sales pipeline can be managed with spreadsheets at the beginning, but it becomes harder as deal volume grows. CRM software helps track stages, follow-ups, customer conversations, and revenue forecasts in one place, reducing the risk of missed updates or scattered records.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A lead can start from WhatsApp, continue on LinkedIn, and end with a quotation request in a separate spreadsheet. For many SME teams in Malaysia, this still feels manageable at first. But once prospects increase, follow-ups slip, deal status becomes unclear, and managers struggle to see which opportunities are actually ready to close. Scattered WhatsApp [&hellip;]<\/p>\n","protected":false},"author":45,"featured_media":19550,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-19544","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-other"},"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>Sales Pipeline: 7 Stages &amp; Tips to Build It in Malaysia (2026)<\/title>\n<meta name=\"description\" content=\"Learn what a sales pipeline is, its 7 key stages, and how Malaysian SMEs can manage it with the right CRM. Complete guide for business owners.\" \/>\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\/my\/blog\/sales-pipeline-management-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sales Pipeline: 7 Stages, Tips &amp; How to Build It in Malaysia (2026)\" \/>\n<meta property=\"og:description\" content=\"Learn what a sales pipeline is, its 7 key stages, and how Malaysian SMEs can manage it with the right CRM. Complete guide for business owners.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-02T08:27:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Rizal Hakim\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rizal Hakim\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/\"},\"author\":{\"name\":\"Rizal Hakim\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/b93e3a2f47fcad867df2a5d15572adc7\"},\"headline\":\"Sales Pipeline: 7 Stages, Tips &#038; How to Build It in Malaysia (2026)\",\"datePublished\":\"2026-06-02T08:27:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/\"},\"wordCount\":2773,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp\",\"articleSection\":[\"Other\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/\",\"name\":\"Sales Pipeline: 7 Stages & Tips to Build It in Malaysia (2026)\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp\",\"datePublished\":\"2026-06-02T08:27:22+00:00\",\"description\":\"Learn what a sales pipeline is, its 7 key stages, and how Malaysian SMEs can manage it with the right CRM. Complete guide for business owners.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp\",\"width\":800,\"height\":450,\"caption\":\"sales pipeline management guide\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sales Pipeline: 7 Stages, Tips &#038; How to Build It in Malaysia (2026)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/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\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/b93e3a2f47fcad867df2a5d15572adc7\",\"name\":\"Rizal Hakim\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Rizal-Hakim-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Rizal-Hakim-96x96.webp\",\"caption\":\"Rizal Hakim\"},\"description\":\"Rizal Hakim focuses on how CRM systems support real sales and customer-facing workflows, not just data storage. In his role at HashMicro Malaysia, he works around lead management, pipeline tracking, follow-up routines, and customer interaction records, helping businesses understand how consistent CRM usage improves sales visibility, accountability, and long-term customer relationships.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/rizal-hakim\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Sales Pipeline: 7 Stages & Tips to Build It in Malaysia (2026)","description":"Learn what a sales pipeline is, its 7 key stages, and how Malaysian SMEs can manage it with the right CRM. Complete guide for business owners.","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\/my\/blog\/sales-pipeline-management-guide\/","og_locale":"en_US","og_type":"article","og_title":"Sales Pipeline: 7 Stages, Tips & How to Build It in Malaysia (2026)","og_description":"Learn what a sales pipeline is, its 7 key stages, and how Malaysian SMEs can manage it with the right CRM. Complete guide for business owners.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-06-02T08:27:22+00:00","og_image":[{"width":800,"height":450,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp","type":"image\/webp"}],"author":"Rizal Hakim","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rizal Hakim","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/"},"author":{"name":"Rizal Hakim","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/b93e3a2f47fcad867df2a5d15572adc7"},"headline":"Sales Pipeline: 7 Stages, Tips &#038; How to Build It in Malaysia (2026)","datePublished":"2026-06-02T08:27:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/"},"wordCount":2773,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp","articleSection":["Other"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/","name":"Sales Pipeline: 7 Stages & Tips to Build It in Malaysia (2026)","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp","datePublished":"2026-06-02T08:27:22+00:00","description":"Learn what a sales pipeline is, its 7 key stages, and how Malaysian SMEs can manage it with the right CRM. Complete guide for business owners.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/sales-pipeline-management-guide.webp","width":800,"height":450,"caption":"sales pipeline management guide"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/sales-pipeline-management-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Sales Pipeline: 7 Stages, Tips &#038; How to Build It in Malaysia (2026)"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/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\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/b93e3a2f47fcad867df2a5d15572adc7","name":"Rizal Hakim","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Rizal-Hakim-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Rizal-Hakim-96x96.webp","caption":"Rizal Hakim"},"description":"Rizal Hakim focuses on how CRM systems support real sales and customer-facing workflows, not just data storage. In his role at HashMicro Malaysia, he works around lead management, pipeline tracking, follow-up routines, and customer interaction records, helping businesses understand how consistent CRM usage improves sales visibility, accountability, and long-term customer relationships.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/rizal-hakim\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=19544"}],"version-history":[{"count":9,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19544\/revisions"}],"predecessor-version":[{"id":19641,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19544\/revisions\/19641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/19550"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=19544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=19544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=19544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}