{"id":62211,"date":"2024-09-05T01:48:18","date_gmt":"2024-09-05T01:48:18","guid":{"rendered":"https:\/\/www.hashmicro.com\/blog\/?p=62211"},"modified":"2025-03-14T08:43:29","modified_gmt":"2025-03-14T08:43:29","slug":"procurement-kpi","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/","title":{"rendered":"Everything You Need to Know about Procurement KPI"},"content":{"rendered":"<p>Having a procurement process isn\u2019t enough\u2014you need to measure its performance with procurement KPI. The right KPIs (Key Performance Indicators) are crucial for improvement, as what you don\u2019t measure, you can\u2019t fix.<\/p>\n<p>Without clear visibility, your procurement could be running inefficiently, missing opportunities, and costing you more than it should. However, with thousands of KPIs to choose from, selecting the wrong ones can lead to measuring things that don\u2019t align with your objectives.<\/p>\n<p>Many companies end up off track simply by focusing on the wrong metrics. The good news is, catching these mistakes early allows you to course-correct by reevaluating your key performance indicators (KPIs).<\/p>\n<p>But how do you choose the right KPIs for your procurement team?<\/p>\n<p>This article will guide you through the essential KPIs that directly impact your procurement performance, helping you focus on what truly matters to drive efficiency, cost savings, and strategic growth.<\/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\">Measuring procurement KPIs helps improve efficiency, cost savings, and strategic growth.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Choosing the right KPIs ensures alignment with business goals and avoids focusing on irrelevant metrics.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Tracking KPIs like cost development, supplier performance, and contract compliance leads to better decision-making and negotiation power.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system\">HashMicro&#8217;s procurement software<\/a> automates processes and helps businesses achieve their KPI targets efficiently.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><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><!-- <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<\/span><\/p>\n<h2><b>What are Procurement KPIs?<\/b><\/h2>\n<p>Procurement KPIs are metrics used to evaluate different parts of the procurement process. They help businesses manage spending, quality, time, and costs more effectively. These KPIs usually focus on three main areas: cost, suppliers, and operations.<\/p>\n<p>Monitoring these helps improve procurement efficiency and cut related expenses. Using these KPIs when communicating with management also provides a clear way to show progress and gain support when needed.<\/p>\n<p>Furthermore, procurement KPIs also ensure that businesses stay on track with their process goals, procurement strategies, and broader business objectives.<\/p>\n<h2><b>Why Measure the Efficiency of Procurement Processes?<\/b><\/h2>\n<p>In order to improve your procurement processes, your procurement team needs to set up measurable goals. Measuring the efficiency of a procurement process is crucial, especially since procurement plays a vital role in maintaining the supply chain during economic downturns.<\/p>\n<p>While cost savings are a clear objective of procurement performance, it extends beyond just that. By assessing procurement performance, organizations can uncover answers to key questions such as:<\/p>\n<ul>\n<li aria-level=\"1\">What areas need improvement?<\/li>\n<li aria-level=\"1\">How do we stack up against other organizations?<\/li>\n<li aria-level=\"1\">Are we progressing or falling behind?<\/li>\n<\/ul>\n<p>The answers to these questions will make or break your procurement processes, revealing gaps that need attention and opportunities for growth. With the right KPIs in place, you can ensure that your procurement strategy aligns with your business goals.<\/p>\n<h2><b>Benefits of Tracking Procurement KPIs<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-62203\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-1024x576.webp\" alt=\"performance measurement tool\" width=\"696\" height=\"392\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool-1068x601.webp 1068w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/performance-measurement-tool.webp 1200w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Tracking procurement KPIs brings important benefits that greatly improve the efficiency and strategic focus of an organization&#8217;s purchasing activities. Below are 7 notable benefits of tracking procurement KPIs:<\/p>\n<ol>\n<li aria-level=\"1\"><b>Better Visibility and Efficiency:<\/b> Centralizing data offers a real-time view of procurement, helping stakeholders monitor KPIs and quickly resolve issues. This transparency boosts accountability and decision-making.<\/li>\n<li aria-level=\"1\"><b>Cost Savings Opportunities<\/b>: The visibility provided by tracking procurement KPIs gives teams the information needed to make cost-effective decisions, particularly in sourcing. By evaluating supplier performance and identifying inefficiencies like delays, procurement can reduce costs.<\/li>\n<li aria-level=\"1\"><b>Stronger Negotiation<\/b>: Data-backed insights give procurement teams the upper hand in negotiations. Knowing a supplier\u2019s performance history allows for better positioning during contract discussions, leading to improved terms and discounts. This is a great example of how data can be leveraged for tangible benefits.<\/li>\n<li aria-level=\"1\"><b>Better Supplier Relationships<\/b>: Transparency gained from clear procurement KPIs not only benefits the internal team but also fosters trust with suppliers. Data-driven conversations make negotiations smoother and more collaborative.<\/li>\n<li aria-level=\"1\"><b>Faster Cycle Times<\/b>: With reliable data and solid supplier relationships, the purchasing process becomes faster and more efficient. This is particularly true when procurement teams already have a strong network of partners. Shortening cycle times can also lead to cost savings<\/li>\n<li aria-level=\"1\"><b>Course Correction<\/b>: Regular tracking of KPIs allows teams to evaluate the effectiveness of their strategies and make adjustments as needed. This helps ensure that procurement stays on the right track and continuously improves.<\/li>\n<li aria-level=\"1\"><b>Demonstrated Value<\/b>: When procurement teams use KPIs effectively, they can show their contribution to the organization\u2019s success measurably. This can lead to better budget allocation and more recognition for the department\u2019s efforts.<\/li>\n<\/ol>\n<p>These benefits can be gained more rapidly and consistently by using <a href=\"https:\/\/www.hashmicro.com\/blog\/procurement-software\/\">procurement software<\/a>. Along with a solid team and procedure, this software will be a huge advantage to face any challenges a business might face. To see what other benefits a procurement system can bring to your team, you can click on the free demo banner below.<\/p>\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>\n<h2><b>How to Choose the Right Procurement KPIs<\/b><\/h2>\n<p>Choosing the right procurement KPIs is essential to ensure your efforts align with business goals and drive meaningful improvements. By selecting relevant KPIs, you can accurately measure performance and optimize processes.<\/p>\n<p>Below are 4 key steps to help you choose the right procurement KPIs:<\/p>\n<h3><b>1. Focus on key metrics<\/b><\/h3>\n<p>Pick one or two metrics that directly support each of your procurement goals.<\/p>\n<p>Even though many moving parts are key to procurement performance, it\u2019s neither practical nor efficient to track everything happening internally. Some measures simply aren&#8217;t important enough, and tracking too many KPIs creates extra work and confusion.<\/p>\n<p>The key is to select one or two KPIs for each goal that will best help you achieve them.<\/p>\n<h3><b>2. Evaluate the Quality of Your KPIs<\/b><\/h3>\n<p>Ensure the selected KPIs meet the standards of a good KPI.<\/p>\n<p>Check that your KPIs hit the mark by asking these key questions:<\/p>\n<ul>\n<li aria-level=\"1\">Can you easily measure the KPI?<\/li>\n<li aria-level=\"1\">Is it simple to measure accurately and on time?<\/li>\n<li aria-level=\"1\">Does it align with the company\u2019s overall goals and strategy?<\/li>\n<li aria-level=\"1\">Can the KPI help drive change without becoming unmanageable?<\/li>\n<li aria-level=\"1\">Does it cover the broad scope of procurement?<\/li>\n<li aria-level=\"1\">Will the KPI stand the test of time?<\/li>\n<\/ul>\n<p>If the answer to many of these questions is &#8220;no,&#8221; it might be time to reconsider the KPI you\u2019ve chosen.<\/p>\n<h3><b>3. Assign Accountability for Success<\/b><\/h3>\n<p>Assign responsibility for each KPI to the right teams or individuals.<\/p>\n<p>KPIs are great for tracking progress, but they\u2019re most effective when someone is accountable for monitoring and reporting them.<\/p>\n<p>Assigning responsibility increases the likelihood of success because the person or team responsible will be more motivated to make sure the KPI meets its target rather than accepting poor performance.<\/p>\n<h3><b>4. Monitor and Share Results<\/b><\/h3>\n<p>Monitor and report your KPIs.<\/p>\n<p>Finally, it\u2019s important to regularly review your KPIs, whether monthly, quarterly, or on another schedule.<\/p>\n<p>Regular tracking makes it easier to spot when something is off or exceeding expectations and understand what might have caused those changes.<\/p>\n<p>It\u2019s also vital to make sure everyone is on the same page. Since many KPIs and goals are connected, share your findings with all the relevant teams.<\/p>\n<h2><b>KPIs Every Procurement Team Should Measure<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-62205\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-1024x576.webp\" alt=\"procurement objectives\" width=\"696\" height=\"392\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives-1068x601.webp 1068w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-objectives.webp 1200w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Measuring the right procurement KPIs is crucial to track performance and identify areas for improvement. By focusing on these essential KPIs, your team can drive efficiency, cost savings, and strategic growth. Below are the key KPIs every procurement team should be monitoring:<\/p>\n<h3><b>1. KPIs Related to Cost and Savings<\/b><\/h3>\n<p><b>a) Cost Development<\/b><b><br \/>\n<\/b>This tracks how procurement costs change over time, providing insights into the effectiveness of savings initiatives. It&#8217;s crucial to monitor whether expenses are growing or shrinking.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage change in costs over a specific period<\/li>\n<li aria-level=\"1\">Impact of savings strategies on total procurement costs<\/li>\n<\/ul>\n<p><b>b) Savings<\/b><b><br \/>\n<\/b>Measures actual savings achieved year-over-year, taking factors like inflation and rising operational costs into account. This helps identify genuine savings efforts.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Year-over-year percentage savings<\/li>\n<li aria-level=\"1\">Difference between forecasted costs and actual spend<\/li>\n<\/ul>\n<p><b>c) Cost Reduction<\/b><b><br \/>\n<\/b>Cost reduction measures the difference between what you&#8217;re paying now and what you paid previously, encouraging better deals and streamlined processes. It\u2019s key for keeping expenses under control.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">The difference between the current price and the last price paid<\/li>\n<li aria-level=\"1\">Percentage reduction in procurement costs through negotiation or process improvements<\/li>\n<\/ul>\n<p><b>d) Cost Avoidance<\/b><b><br \/>\n<\/b>Cost avoidance focuses on preventing future expenses, such as signing long-term contracts to avoid price hikes or investing in cost-saving technologies. It&#8217;s often seen as a &#8220;soft saving&#8221; compared to cost reduction.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Number of contracts signed to lock in lower prices<\/li>\n<li aria-level=\"1\">Estimated future savings from technology investments<\/li>\n<\/ul>\n<p><b>e) Purchase Price Variance (PPV)<\/b><b><br \/>\n<\/b>PPV tracks the difference between what you actually paid for a product and what was budgeted. A negative PPV means you&#8217;re saving, while a positive PPV indicates overspending.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">The variance between actual and budgeted prices<\/li>\n<li aria-level=\"1\">The total variance multiplied by the number of units purchased<\/li>\n<\/ul>\n<h3><b>2. KPIs Related to Spend<\/b><\/h3>\n<p><b>a) Spend Under Management (SUM)<\/b><b><br \/>\n<\/b>SUM measures the percentage of the company\u2019s total expenses that the procurement team manages. A higher SUM indicates better cost control and forecasting, while a low SUM suggests unmanaged spending and missed savings opportunities.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage of total spend managed by procurement<\/li>\n<li aria-level=\"1\">Increase in SUM year-over-year<\/li>\n<\/ul>\n<p><b>b) Maverick Spend<\/b><b><br \/>\n<\/b>Maverick spend refers to purchases made outside of approved procurement processes, leading to higher costs and reduced compliance. Reducing maverick spend is key for maintaining procurement control.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage of supplier invoices without a purchase order<\/li>\n<li aria-level=\"1\">Ratio of maverick spend to total spend<\/li>\n<\/ul>\n<p><b>c) Contribution to Total Spend<\/b><b><br \/>\n<\/b>This procurement KPI tracks the contribution of items, categories, or suppliers to total spending. It helps identify where procurement can consolidate suppliers to reduce costs.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage of total spend allocated to a specific item, category, or supplier<\/li>\n<li aria-level=\"1\">Number of suppliers contributing to 80% of total spend<\/li>\n<\/ul>\n<h3><b>3. KPIs Related to Contracts<\/b><\/h3>\n<p><b>a) Contract Prices and Compliance<\/b><b><br \/>\n<\/b>Ensuring compliance with contract prices is crucial for maintaining procurement control. This KPI ensures that all purchases stick to the agreed-upon terms and prices.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage of spend adhering to contract pricing<\/li>\n<li aria-level=\"1\">Number of purchases made off-contract<\/li>\n<\/ul>\n<p><b>b) Contract Loyalty<\/b><b><br \/>\n<\/b>Contract loyalty measures how much of the company\u2019s total spend is covered by formal contracts. This is important for ensuring procurement policies are followed and costs are kept under control.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Ratio of spend through contracts versus total spend<\/li>\n<li aria-level=\"1\">Percentage of contract coverage<\/li>\n<\/ul>\n<p><b>c) Contract Coverage<\/b><b><br \/>\n<\/b>This procurement KPI tracks how much of the company\u2019s total purchases are covered by contracts, ensuring that negotiated terms are followed and cost control measures are in place.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Dollar value of purchases made under contract<\/li>\n<li aria-level=\"1\">Percentage of total spend covered by contracts<\/li>\n<\/ul>\n<h3><b>4. KPIs Related to Suppliers<\/b><\/h3>\n<p><b>a) Number of Suppliers and Supplier Spend<\/b><b><br \/>\n<\/b>Tracking supplier numbers and spend helps ensure that most of the company\u2019s spending is concentrated with the most valuable suppliers. Ideally, 80% of the spend should go to 20% of the suppliers.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage of spend allocated to the top 20% of suppliers<\/li>\n<li aria-level=\"1\">Percentage of spending with sustainable suppliers<\/li>\n<\/ul>\n<p><b>b) Supplier Quality Performance<\/b><b><br \/>\n<\/b>Monitoring the quality of supplier performance helps maintain high standards in terms of price, delivery, and service. This KPI ensures that suppliers are meeting expectations and fostering strong relationships.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Percentage of on-time deliveries versus total deliveries<\/li>\n<li aria-level=\"1\">Ratio of quality-related complaints to total orders<\/li>\n<\/ul>\n<p><b>c) Procured Suppliers<\/b><b><br \/>\n<\/b>This procurement KPI tracks how much of the company\u2019s total spend goes to suppliers who have been vetted through the procurement process. It ensures compliance and quality in supplier selection.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Ratio of spend with approved suppliers versus total spend<\/li>\n<li aria-level=\"1\">Percentage of suppliers audited or assessed each year<\/li>\n<\/ul>\n<h3><b>5. KPIs Related to Competition<\/b><\/h3>\n<p><b>a) Total Procurement ROI<\/b><b><br \/>\n<\/b>This procurement KPI measures how much procurement efforts have reduced costs, including cost avoidance, compared to the department\u2019s operating expenses. A good ROI indicates that procurement is financially contributing to the company\u2019s overall goals.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Ratio of cost reductions to procurement department expenses<\/li>\n<li aria-level=\"1\">Year-over-year improvements in procurement efficiency<\/li>\n<\/ul>\n<h3><b>6. KPIs Related to Processes<\/b><\/h3>\n<p><b>a) Procurement Process Efficiency<\/b><b><br \/>\n<\/b>This KPI tracks how efficient the procurement process is, from initial negotiation to contract signing. It highlights areas for improvement, like reducing the time spent on each step of the process.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Number of procurement processes completed per negotiator<\/li>\n<li aria-level=\"1\">Average time spent per process step<\/li>\n<\/ul>\n<h3><b>7. KPIs Related to Customer Satisfaction<\/b><\/h3>\n<p><b>a) Customer Satisfaction<\/b><b><br \/>\n<\/b>This procurement KPI gauges how satisfied suppliers, employees, and partners are with the procurement process, often through surveys. High satisfaction indicates smooth operations and strong relationships.<\/p>\n<p><b>Metrics to note:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Survey results on supplier and employee satisfaction<\/li>\n<li aria-level=\"1\">Number of complaints or issues compared to total procurement activities<\/li>\n<\/ul>\n<p>Managing all the KPIs at once can be confusing. Hence, procurement teams can leverage tools that can compile the entire workload of the procurement team into one tidy platform, such as a <a href=\"https:\/\/www.hashmicro.com\/blog\/procurement-meaning-and-why-it-is-important-in-business\/\">procurement ERP<\/a> system. This system can automate, record, and optimize each process efficiently.<\/p>\n<h2><b>Effortlessly Enhance KPIs with HashMicro Procurement Software<\/b><\/h2>\n<p>To maximize the impact of procurement KPIs, the right tools are essential. Imagine a system that effortlessly tracks KPIs while optimizing your entire procurement process. That\u2019s exactly what HashMicro <a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system\">procurement management software<\/a> offers.<\/p>\n<p>HashMicro offers these features to help you:<\/p>\n<ul>\n<li aria-level=\"1\"><b>Automatic Vendor Rating<\/b>: Instantly know how reliable your vendors are! This feature tracks KPIs like punctuality, pricing, and service quality, providing real-time insights for smarter, automated decisions\u2014no guesswork needed.<\/li>\n<li aria-level=\"1\"><b>Periodic Vendor Rating Review<\/b>: Keep your finger on the pulse of vendor performance with regular reviews, automatically updating crucial KPIs. This feature ensures you\u2019re always in the loop, so you can easily track, improve, and maintain top-tier supplier relationships.<\/li>\n<li aria-level=\"1\"><b>KPI Target per Purchaser<\/b>: Set clear goals for your team and track their success with ease. Whether it&#8217;s cost savings or negotiations, this feature aligns performance with business goals effortlessly.<\/li>\n<li aria-level=\"1\"><b>Cost Savings Tracking and Reporting<\/b>: Want to know exactly how much you\u2019re saving? This feature automatically tracks cost savings, comparing real spend to budget, and delivers accurate reports. It\u2019s a game-changer for measuring procurement efficiency and maximizing your budget.<\/li>\n<li aria-level=\"1\"><b>Budget Tracking &amp; Limit per Purchase<\/b>: Stay on top of your spending with precision! This feature ensures every purchase stays within budget, making it easy to control costs and meet KPIs focused on budget compliance and smart spending.<\/li>\n<\/ul>\n<p>HashMicro automates every step of the procurement process, from supplier onboarding to contract and invoice management. This automation reduces manual effort, provides real-time insights, and ensures smooth, stress-free operations.<\/p>\n<p>Beyond boosting efficiency, automation saves time, cuts costs, and helps achieve KPI targets faster. With HashMicro, your procurement process becomes more productive, cost-effective, and error-free, giving your business a competitive edge.<\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p>A well-structured <a href=\"https:\/\/www.hashmicro.com\/blog\/erp-system-procurement\/\">procurement system<\/a> is key to improving performance and achieving your KPI targets. Automation plays a vital role in reducing manual errors, improving supplier collaboration, and providing better visibility into the procurement process.<\/p>\n<p>By automating critical tasks and integrating them with other business operations, you gain more control, transparency, and efficiency in tracking your procurement KPIs.<\/p>\n<p>To take your procurement performance to the next level, HashMicro\u2019s Procurement Software offers a comprehensive solution. With features like automated vendor management, contract tracking, and real-time cost-saving analysis, HashMicro helps you streamline processes and control spending.<\/p>\n<p>Transform your procurement process and easily achieve your KPI goals\u2014schedule a <a href=\"https:\/\/hashmicro.com\/free-product-tour\">free demo<\/a> with HashMicro today!<\/p>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Procurement.webp\" alt=\"Procurement\"><\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Having a procurement process isn\u2019t enough\u2014you need to measure its performance with procurement KPI. The right KPIs (Key Performance Indicators) are crucial for improvement, as what you don\u2019t measure, you can\u2019t fix. Without clear visibility, your procurement could be running inefficiently, missing opportunities, and costing you more than it should. However, with thousands of KPIs [&hellip;]<\/p>\n","protected":false},"author":206,"featured_media":62204,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1128],"tags":[],"class_list":{"0":"post-62211","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-procurement"},"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>Everything You Need to Know about Procurement KPI<\/title>\n<meta name=\"description\" content=\"Measuring and tracking the right procurement KPI with the right technology improves efficiency, cost savings, and decision-making.\" \/>\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\/procurement-kpi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Everything You Need to Know about Procurement KPI\" \/>\n<meta property=\"og:description\" content=\"Measuring and tracking the right procurement KPI with the right technology improves efficiency, cost savings, and decision-making.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/\" \/>\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=\"2024-09-05T01:48:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-14T08:43:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.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=\"Nur Fi&#039;llia Nugrahani\" \/>\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=\"Nur Fi&#039;llia Nugrahani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/\"},\"author\":{\"name\":\"Nur Fi'llia Nugrahani\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/82334ae4c96d5887773cadf8bbe9e2fc\"},\"headline\":\"Everything You Need to Know about Procurement KPI\",\"datePublished\":\"2024-09-05T01:48:18+00:00\",\"dateModified\":\"2025-03-14T08:43:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/\"},\"wordCount\":2542,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/\",\"name\":\"Everything You Need to Know about Procurement KPI\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp\",\"datePublished\":\"2024-09-05T01:48:18+00:00\",\"dateModified\":\"2025-03-14T08:43:29+00:00\",\"description\":\"Measuring and tracking the right procurement KPI with the right technology improves efficiency, cost savings, and decision-making.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp\",\"width\":1200,\"height\":675,\"caption\":\"procurement kpi\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Everything You Need to Know about Procurement KPI\"}]},{\"@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\/82334ae4c96d5887773cadf8bbe9e2fc\",\"name\":\"Nur Fi'llia Nugrahani\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp\",\"caption\":\"Nur Fi'llia Nugrahani\"},\"description\":\"A content writer specializing in crafting insightful and thought-provoking articles about technology. With a passion for making complex topics accessible, she delivers engaging and informative content for a wide audience.\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/author\/fillia-nugrahanihashmicro-com-sg\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Everything You Need to Know about Procurement KPI","description":"Measuring and tracking the right procurement KPI with the right technology improves efficiency, cost savings, and decision-making.","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\/procurement-kpi\/","og_locale":"en_US","og_type":"article","og_title":"Everything You Need to Know about Procurement KPI","og_description":"Measuring and tracking the right procurement KPI with the right technology improves efficiency, cost savings, and decision-making.","og_url":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/","og_site_name":"BusinessTech","article_publisher":"https:\/\/web.facebook.com\/hashmicro\/","article_published_time":"2024-09-05T01:48:18+00:00","article_modified_time":"2025-03-14T08:43:29+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp","type":"image\/webp"}],"author":"Nur Fi'llia Nugrahani","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Written by":"Nur Fi'llia Nugrahani","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/"},"author":{"name":"Nur Fi'llia Nugrahani","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/82334ae4c96d5887773cadf8bbe9e2fc"},"headline":"Everything You Need to Know about Procurement KPI","datePublished":"2024-09-05T01:48:18+00:00","dateModified":"2025-03-14T08:43:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/"},"wordCount":2542,"publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp","articleSection":["Procurement"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/","url":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/","name":"Everything You Need to Know about Procurement KPI","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp","datePublished":"2024-09-05T01:48:18+00:00","dateModified":"2025-03-14T08:43:29+00:00","description":"Measuring and tracking the right procurement KPI with the right technology improves efficiency, cost savings, and decision-making.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#primaryimage","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/procurement-kpi.webp","width":1200,"height":675,"caption":"procurement kpi"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/blog\/procurement-kpi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Everything You Need to Know about Procurement KPI"}]},{"@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\/82334ae4c96d5887773cadf8bbe9e2fc","name":"Nur Fi'llia Nugrahani","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","caption":"Nur Fi'llia Nugrahani"},"description":"A content writer specializing in crafting insightful and thought-provoking articles about technology. With a passion for making complex topics accessible, she delivers engaging and informative content for a wide audience.","url":"https:\/\/www.hashmicro.com\/blog\/author\/fillia-nugrahanihashmicro-com-sg\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/62211","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\/206"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/comments?post=62211"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/62211\/revisions"}],"predecessor-version":[{"id":69870,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/62211\/revisions\/69870"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media\/62204"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media?parent=62211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/categories?post=62211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/tags?post=62211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}