{"id":179017,"date":"2025-12-04T09:31:21","date_gmt":"2025-12-04T02:31:21","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=179017"},"modified":"2026-01-14T15:58:36","modified_gmt":"2026-01-14T08:58:36","slug":"kpi-rekrutmen","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/","title":{"rendered":"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR"},"content":{"rendered":"<p>Dalam praktiknya, proses rekrutmen jarang berjalan singkat. Untuk posisi tertentu, perusahaan bisa membutuhkan beberapa minggu hingga lebih dari satu bulan sampai kandidat menerima penawaran, dan dampaknya sering baru terasa ketika kebutuhan tim mulai tertunda.<\/p>\n<p>KPI rekrutmen hadir sebagai salah satu <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-hrd\/\">bentuk KPI untuk HR perusahaan<\/a> sekaligus alat bantu untuk membaca proses tersebut secara lebih jujur. Melalui data seperti durasi perekrutan, biaya yang dikeluarkan, hingga respons kandidat terhadap penawaran kerja, tim HR dapat melihat pola yang sebelumnya luput dari perhatian.<\/p>\n<p>Dengan cara ini, evaluasi kinerja HR tidak lagi bergantung pada asumsi atau kebiasaan lama. Proses rekrutmen bisa dilihat apa adanya, lalu diperbaiki secara bertahap sesuai kebutuhan organisasi.<\/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 aria-level=\"1\"><a href=\"#a\">KPI rekrutmen membantu perusahaan<\/a> melihat seberapa efektif proses perekrutan berjalan, mulai dari efisiensi waktu, biaya, hingga kualitas kandidat yang diperoleh.<\/li>\n<li aria-level=\"1\">HR perlu memperhatikan <a href=\"#b\">aspek KPI rekrutmen utama<\/a> seperti kecepatan proses, efisiensi biaya, kualitas kandidat, serta efektivitas saluran perekrutan.<\/li>\n<li>Pemanfaatan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-rekrutmen-karyawan\/\">sistem yang mampu memantau KPI rekrutmen<\/a> secara terpusat membantu HR melihat performa proses hiring secara real-time.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\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\">Daftar Isi<\/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\/* 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\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<style>\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_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: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\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#list_toc_float li a{margin-bottom:0px}\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#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\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\n\/\/ document.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 = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\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 = 'Daftar Isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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\/\/ START new JS for ToC improvements\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 + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\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  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\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`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\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';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\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<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        } \r\n\t\t  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\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\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        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n <\/span><span data-sheets-root=\"1\">\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><\/span><\/p>\n<h2><strong>Bagaimana KPI Rekrutmen Digunakan dalam Aktivitas HR?<\/strong><\/h2>\n<p>Dalam proses rekrutmen, KPI berfungsi sebagai alat bantu untuk membaca apa yang sebenarnya terjadi di balik aktivitas hiring sehari-hari. Melalui metrik yang terukur, HR dapat melihat apakah proses perekrutan berjalan efisien atau justru tersendat di tahap tertentu, baik dari sisi waktu, biaya, maupun hasil rekrutmen.<\/p>\n<p>Penggunaan KPI juga membantu HR keluar dari penilaian yang bersifat asumtif. Data rekrutmen yang dikumpulkan secara konsisten memberi gambaran yang lebih objektif tentang kebutuhan bisnis dan performa tim rekrutmen, sehingga keputusan yang diambil tidak lagi sekadar berdasarkan kebiasaan, tetapi pada kondisi nyata di lapangan.<\/p>\n<h2><strong>Aspek KPI Rekrutmen yang Perlu Diperhatikan HR<\/strong><\/h2>\n<p>Perlu diingat bahwa tidak semua KPI rekrutmen perlu dipantau bersamaan. HR perlu memprioritaskan aspek yang paling relevan, seperti efisiensi waktu, biaya, dan kualitas kandidat, agar evaluasi tetap fokus dan berdampak.<\/p>\n<h3><strong>1. Melihat Kecepatan Rekrutmen dari Proses yang Berjalan<\/strong><\/h3>\n<p>Metrik kecepatan rekrutmen membantu HR melihat seberapa cepat posisi terisi tanpa mengorbankan kualitas. Efisiensi berarti meminimalkan hambatan di tiap tahapan seleksi, karena posisi yang terlalu lama kosong dapat memengaruhi beban kerja dan produktivitas tim.<\/p>\n<p>Mari kita bedah metrik waktu yang paling sering disalahartikan namun sangat vital perbedaannya:<\/p>\n<ul>\n<li>\n<h4><strong>Waktu yang dibutuhkan hingga posisi terisi<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Metrik ini melihat rentang waktu sejak lowongan disetujui hingga kandidat menerima tawaran kerja. Angka yang dihasilkan sering digunakan untuk membantu perencanaan tenaga kerja dan memperkirakan kapan kebutuhan tim dapat terpenuhi.<\/p>\n<p>Menurut laporan SHRM, jumlah hari dari kandidat melamar hingga menerima tawaran, rata-rata sekitar 24\u201344 hari, tergantung kondisi pasar dan jenis pekerjaan. Semakin lama durasinya, semakin besar potensi dampak ke operasional.<\/p>\n<ul>\n<li>\n<h4><strong>Durasi seleksi dari sisi kandidat<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Berbeda dari metrik sebelumnya, fokus di sini adalah pengalaman kandidat sejak melamar hingga menerima offering. Metrik ini memberi gambaran seberapa cepat tim rekrutmen memproses pelamar yang masuk. Proses yang terlalu panjang sering kali berujung pada kandidat mengundurkan diri.<\/p>\n<ul>\n<li>\n<h4><strong>Titik proses yang paling sering menghambat<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Alih-alih melihat rekrutmen secara keseluruhan, metrik ini digunakan untuk memecah proses ke tiap tahapan. Dari sini, HR bisa melihat apakah hambatan terjadi di screening awal, interview user, atau pengambilan keputusan akhir. Insight ini biasanya jadi dasar perbaikan proses.<\/p>\n<h3><strong>2. Fokus pada Pengelolaan Biaya Rekrutmen<\/strong><\/h3>\n<p>Metrik biaya rekrutmen membantu HR menilai efisiensi penggunaan anggaran dalam memperoleh talenta baru. Menurut <a href=\"https:\/\/www.shrm.org\/home\">SHRM<\/a>, rata-rata biaya perekrutan bisa sekitar USD 4.700 per karyawan. Hal tersebut membuat indikator seperti <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/cost-per-hire\/\">biaya pengeluaran untuk rekrutmen<\/a> menjadi acuan utama.<\/p>\n<ul>\n<li>\n<h4><strong>Cost per hire<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Metrik ini menghitung rata-rata biaya yang dikeluarkan untuk merekrut satu karyawan baru. Rumusnya adalah total biaya rekrutmen (internal + eksternal) dibagi jumlah karyawan yang direkrut. Komponen biaya mencakup iklan lowongan, biaya agensi, hingga gaji tim rekruter.<\/p>\n<ul>\n<li>\n<h4><strong>Sourcing channel cost<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Analisis ini melacak biaya yang dikeluarkan untuk setiap <em>platform<\/em> lowongan kerja atau agensi eksternal. Tujuannya adalah menentukan saluran mana yang memberikan <em>Return on Investment<\/em> (ROI) terbaik. Anda dapat menghentikan pengeluaran pada saluran yang tidak menghasilkan kandidat berkualitas.<\/p>\n<h3><strong>3. Menilai Kualitas Hasil Rekrutmen<\/strong><\/h3>\n<p>Metrik kualitas rekrutmen digunakan untuk menilai dampak jangka panjang dari proses hiring, terutama kontribusi dan retensi karyawan. Meski hasilnya tidak langsung terlihat, kualitas tetap dapat diukur melalui indikator kuantitatif yang relevan.<\/p>\n<p>Dalam sebagian organisasi, angka ini bisa mencapai <a href=\"https:\/\/info.workinstitute.com\/hubfs\/2020%20Retention%20Report\/Work%20Institutes%202020%20Retention%20Report.pdf\">\u00b117%<\/a>, dan bahkan sampai <a href=\"https:\/\/info.workinstitute.com\/hubfs\/2020%20Retention%20Report\/Work%20Institutes%202020%20Retention%20Report.pdf\">\u00b140%<\/a> dari turnover terjadi pada tahun pertama kerja, menandakan tantangan pada kecocokan pekerjaan atau onboarding.<\/p>\n<ul>\n<li>\n<h4><strong>Quality of hire (kualitas karyawan baru)<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Metrik ini mengukur kualitas karyawan baru dengan melihat kombinasi kinerja awal dan tingkat retensi. Dalam beberapa kasus, penilaian juga mencakup umpan balik dari atasan langsung. Nilai yang tinggi menunjukkan proses seleksi berhasil menemukan kandidat yang sesuai dengan kebutuhan tim.<\/p>\n<ul>\n<li>\n<h4><strong>First-year attrition rate (tingkat perputaran tahun pertama)<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Indikator ini menunjukkan persentase karyawan baru yang keluar sebelum satu tahun masa kerja. Angka yang tinggi sering menjadi sinyal adanya ketidaksesuaian dalam proses seleksi atau onboarding. Memantau metrik ini membantu HR mengurangi risiko rekrutmen ulang yang berulang.<\/p>\n<ul>\n<li>\n<h4><strong>Hiring manager satisfaction (kepuasan manajer perekrut)<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Metrik ini melihat sejauh mana manajer merasa kandidat yang direkrut sesuai dengan ekspektasi. Penilaiannya biasanya dilakukan melalui survei internal setelah proses rekrutmen selesai. Masukan ini penting untuk menyelaraskan kebutuhan user dengan proses rekrutmen ke depan.<\/p>\n<h3><strong>4. Membaca Efektivitas Saluran Rekrutmen<\/strong><\/h3>\n<p>Metrik funnel rekrutmen membantu HR memahami alur kandidat dari awal hingga akhir proses seleksi, termasuk efektivitas setiap sumber pelamar. Dengan data ini, HR dapat memfokuskan upaya pada saluran yang benar-benar menghasilkan kandidat berkualitas.<\/p>\n<ul>\n<li>\n<h4><strong>Source of hire (sumber perekrutan)<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Identifikasi asal saluran kandidat yang berhasil diterima sangat penting untuk alokasi <em>budget<\/em> iklan yang cerdas. Sumber bisa berasal dari LinkedIn, Job Portal, atau Referensi Karyawan. Data ini membantu Anda berinvestasi pada platform yang terbukti menghasilkan karyawan terbaik.<\/p>\n<ul>\n<li>\n<h4><strong>Applicant to interview ratio (rasio pelamar ke wawancara)<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Perbandingan jumlah pelamar yang masuk dengan yang lolos ke tahap wawancara menunjukkan kualitas penyaringan awal. Jika rasionya terlalu rendah, mungkin kriteria <em>job description<\/em> Anda kurang jelas atau terlalu ketat. Menurut studi dari SHRM, rasio yang sehat membantu efisiensi waktu pewawancara.<\/p>\n<ul>\n<li>\n<h4><strong>Offer acceptance rate (tingkat penerimaan tawaran)<\/strong><\/h4>\n<\/li>\n<\/ul>\n<p>Metrik ini menunjukkan seberapa banyak kandidat yang menerima tawaran dibandingkan dengan total offering yang diberikan. Angka yang rendah sering mengindikasikan adanya ketidaksesuaian ekspektasi, baik dari sisi kompensasi, peran, maupun daya tarik perusahaan.<\/p>\n<h2><span id=\"b\"><\/span><strong>Mengelola KPI Rekrutmen dengan Pendekatan yang Lebih Sistematis<\/strong><\/h2>\n<p>Pendekatan sistematis membantu HR mengelola KPI rekrutmen secara lebih konsisten dan mengurangi kesalahan akibat pencatatan manual. Otomatisasi data membuat proses evaluasi berjalan lebih efisien.<\/p>\n<p>Pelacakan KPI melalui sistem terintegrasi memungkinkan HR mendapatkan insight penting seperti <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/yield-ratio\/\">persentase kandidat yang lolos, <\/a>secara real-time tanpa rekap berulang. Dengan data yang tersaji lebih rapi, proses pengambilan keputusan pun menjadi lebih terarah.<\/p>\n<h3><strong>1. Otomatisasi screening CV<\/strong><\/h3>\n<p>Fitur <em>screening<\/em> otomatis membantu menyaring ribuan CV dalam hitungan detik berdasarkan kata kunci tertentu. Teknologi ini secara drastis menurunkan <em>Time to Hire<\/em> dengan mengeliminasi kandidat yang tidak memenuhi syarat administrasi. Tim HR bisa langsung fokus mewawancarai kandidat yang paling relevan.<\/p>\n<h3><strong>2. Portal lowongan terintegrasi<\/strong><\/h3>\n<p>Memiliki portal karir yang terintegrasi memungkinkan Anda melacak efektivitas setiap saluran lowongan dalam satu dasbor. Anda dapat melihat dari mana pelamar terbaik berasal secara <em>real-time<\/em>. Hal ini memudahkan keputusan alokasi anggaran iklan lowongan kerja.<\/p>\n<h3><strong>3. Tes psikologi &amp; kompetensi online<\/strong><\/h3>\n<p>Fitur tes terintegrasi sangat penting untuk menyaring kualitas kandidat secara objektif sebelum masuk ke tahap wawancara. Anda dapat menggunakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/cloud-hcm-software\/\" target=\"_blank\" rel=\"noopener\">rekomendasi cloud HCM software<\/a> yang memiliki modul tes psikometrik bawaan. Ini memastikan kandidat memiliki kompetensi teknis dan kepribadian yang sesuai.<\/p>\n<h3><strong>Studi Kasus Buma Perindahindo<\/strong><\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-184024 aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus.webp\" alt=\"Studi Kasus\" width=\"1024\" height=\"1536\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-200x300.webp 200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-683x1024.webp 683w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-768x1152.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-280x420.webp 280w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-150x225.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-300x450.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/Studi-Kasus-696x1044.webp 696w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Untuk menghadapi peningkatan kebutuhan tenaga kerja, Buma Perindahindo menata ulang proses rekrutmen dengan menetapkan KPI utama seperti durasi pengisian posisi, efektivitas sumber kandidat, dan pergerakan kandidat di tiap tahap seleksi.<\/p>\n<p>Pendekatan ini diterapkan selama sekitar 6 bulan dengan alur rekrutmen yang lebih terstruktur. Setiap tahap, mulai dari pembukaan lowongan hingga penawaran kerja, dipantau menggunakan indikator waktu dan rasio kandidat.<\/p>\n<p>Hasilnya, Buma Perindahindo mencatat penurunan waktu pengisian posisi sekitar 20\u201325% dan berkurangnya kandidat yang gugur di tahap akhir. Proses rekrutmen menjadi lebih konsisten dan keputusan dapat diambil berdasarkan data yang terpantau.<\/p>\n<h2><strong>Kesimpulan<\/strong><\/h2>\n<p>Pelacakan KPI rekrutmen membantu HR memahami proses perekrutan dari sisi kecepatan, biaya, dan kualitas kandidat. Dengan fokus pada metrik yang relevan, evaluasi rekrutmen dapat dilakukan secara lebih terarah dan konsisten.<\/p>\n<p>Pemanfaatan teknologi memudahkan pengumpulan serta pembacaan data, sehingga tim HR dapat lebih fokus pada pengambilan keputusan. Evaluasi yang dilakukan secara berkala juga membantu menjaga keselarasan strategi rekrutmen dengan kebutuhan bisnis.<\/p>\n<p>Untuk mendukung analisis yang lebih optimal, perusahaan dapat mempertimbangkan penggunaan sistem yang memantau KPI rekrutmen secara terstruktur. Konsultasi awal juga dapat membantu menentukan pendekatan yang paling sesuai dengan kebutuhan masing-masing organisasi.<\/p>\n<p data-start=\"446\" data-end=\"660\" data-is-last-node=\"\" data-is-only-node=\"\"><span data-sheets-root=\"1\"><\/span><\/p>\n<h2><strong>Pertanyaan Seputar KPI Rekrutmen<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa perbedaan utama antara Time to Fill dan Time to Hire?<\/strong><\/summary>\n<p>Time to Fill mengukur waktu dari pembukaan lowongan hingga posisi terisi, sedangkan Time to Hire mengukur waktu dari kandidat melamar hingga menerima tawaran.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Berapa standar cost per hire yang ideal di Indonesia?<\/strong><\/summary>\n<p>Biaya ini sangat bervariasi tergantung industri dan level jabatan, namun umumnya berkisar antara 1-3 kali gaji bulanan posisi tersebut.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Mengapa quality of hire dianggap sebagai metrik yang paling sulit diukur?<\/strong><\/summary>\n<p>Karena metrik ini bersifat subjektif dan membutuhkan waktu lama (biasanya setahun) untuk melihat performa dan retensi karyawan secara nyata.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah sistem HRIS bisa otomatis menghitung KPI rekrutmen?<\/strong><\/summary>\n<p>Ya, sistem HRIS modern seperti HashMicro dapat melacak dan menghitung KPI rekrutmen secara otomatis dan menyajikannya dalam dashboard real-time.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara meningkatkan offer acceptance rate yang rendah?<\/strong><\/summary>\n<p>Tinjau kembali paket kompensasi dan benefit Anda, serta pastikan proses penawaran dilakukan dengan cepat dan personal.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dalam praktiknya, proses rekrutmen jarang berjalan singkat. Untuk posisi tertentu, perusahaan bisa membutuhkan beberapa minggu hingga lebih dari satu bulan sampai kandidat menerima penawaran, dan dampaknya sering baru terasa ketika kebutuhan tim mulai tertunda. KPI rekrutmen hadir sebagai salah satu bentuk KPI untuk HR perusahaan sekaligus alat bantu untuk membaca proses tersebut secara lebih jujur. [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":179020,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-179017","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Temukan cara menghitung KPI rekrutmen dan strategi optimasi yang dapat membantu Anda menarik talenta terbaik di pasar kerja.\" \/>\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\/id\/blog\/kpi-rekrutmen\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR\" \/>\n<meta property=\"og:description\" content=\"Temukan cara menghitung KPI rekrutmen dan strategi optimasi yang dapat membantu Anda menarik talenta terbaik di pasar kerja.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T02:31:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-14T08:58:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.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=\"Reno Wicaksana\" \/>\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=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR\",\"datePublished\":\"2025-12-04T02:31:21+00:00\",\"dateModified\":\"2026-01-14T08:58:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/\"},\"wordCount\":1513,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/\",\"name\":\"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp\",\"datePublished\":\"2025-12-04T02:31:21+00:00\",\"dateModified\":\"2026-01-14T08:58:36+00:00\",\"description\":\"Temukan cara menghitung KPI rekrutmen dan strategi optimasi yang dapat membantu Anda menarik talenta terbaik di pasar kerja.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp\",\"width\":1200,\"height\":675,\"caption\":\"kpi rekrutmen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/hashmicro\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/william-w-88353a262\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR &#187; HashMicro Indonesia","description":"Temukan cara menghitung KPI rekrutmen dan strategi optimasi yang dapat membantu Anda menarik talenta terbaik di pasar kerja.","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\/id\/blog\/kpi-rekrutmen\/","og_locale":"id_ID","og_type":"article","og_title":"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR","og_description":"Temukan cara menghitung KPI rekrutmen dan strategi optimasi yang dapat membantu Anda menarik talenta terbaik di pasar kerja.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-12-04T02:31:21+00:00","article_modified_time":"2026-01-14T08:58:36+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"9 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR","datePublished":"2025-12-04T02:31:21+00:00","dateModified":"2026-01-14T08:58:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/"},"wordCount":1513,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/","name":"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp","datePublished":"2025-12-04T02:31:21+00:00","dateModified":"2026-01-14T08:58:36+00:00","description":"Temukan cara menghitung KPI rekrutmen dan strategi optimasi yang dapat membantu Anda menarik talenta terbaik di pasar kerja.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/12\/kpi-rekrutmen.webp","width":1200,"height":675,"caption":"kpi rekrutmen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/kpi-rekrutmen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"KPI Rekrutmen sebagai Alat Evaluasi Kinerja HR"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"kpi rekrutmen","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/179017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=179017"}],"version-history":[{"count":10,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/179017\/revisions"}],"predecessor-version":[{"id":184884,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/179017\/revisions\/184884"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/179020"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=179017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=179017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=179017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}