{"id":19122,"date":"2026-05-08T04:07:57","date_gmt":"2026-05-08T04:07:57","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=19122"},"modified":"2026-05-08T04:07:57","modified_gmt":"2026-05-08T04:07:57","slug":"push-vs-pull-supply-chain","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/","title":{"rendered":"Push vs Pull Supply Chain: Strategic Guide to Operations"},"content":{"rendered":"<p>How you move goods from production to the buyer determines your profit and market standing. The core choice is between push and pull supply chains. Since customers now expect custom options and fast delivery, understanding these models is a requirement for anyone building a competitive business.<\/p>\n<p>Global disruptions have proven that old, rigid systems are high-risk. Aligning with <a href=\"https:\/\/www.nimp2030.gov.my\/index.php\/pages\/view\/317#tab_475_49\" target=\"_blank\" rel=\"noopener\">Malaysia\u2019s NIMP 2030&#8217;s<\/a> is a must for businesses to protect their operations in Malaysia. This guide explains push and pull mechanics and shows how digital tech helps companies merge both into effective hybrid strategies.<\/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: 20px; border: none;\">\n<h3 style=\"margin-bottom: 15px; margin-top: 0;\"><span style=\"background-color: #8a0e19; color: #ffffff; padding: 5px 10px; border-radius: 3px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul style=\"margin-bottom: 0; padding-left: 20px; color: #333; line-height: 1.6;\">\n<li style=\"font-weight: 400; margin-bottom: 10px;\" aria-level=\"1\"><a style=\"color: #8a0e19; font-weight: bold; text-decoration: none;\" href=\"#1\">Push Supply Chain <\/a>A forecast-driven model where products are manufactured and distributed in anticipation of future customer demand. While <a style=\"color: #8a0e19; font-weight: bold; text-decoration: none;\" href=\"#2\">Pull Supply Chain<\/a> is A demand-driven model where production and movement are triggered only by actual, real-time customer orders.<\/li>\n<li aria-level=\"1\">Discover the <a style=\"color: #8a0e19; font-weight: bold; text-decoration: none;\" href=\"#2\">Advantages and Disadvantages<\/a> of Push &amp; Pull Supply Chain<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a style=\"color: #8a0e19; font-weight: bold; text-decoration: none;\" href=\"#4\">Hybrid Strategy<\/a> is An optimized approach that utilizes a decoupling point to balance manufacturing efficiency with customer-specific requirements.<\/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\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n<!-- END ToC styling  -->\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\r\n\/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n<\/span><\/p>\n<h2><strong><span id=\"1\">What is a Push Strategy in Supply Chain?<\/span><\/strong><\/h2>\n<p data-path-to-node=\"0\">A push strategy (Make-to-Stock) operates entirely on demand forecasting. Manufacturers produce, store, and distribute goods based on historical sales data and projected market trends before any actual customer orders are placed.<\/p>\n<p data-path-to-node=\"1\">This model relies on <b data-path-to-node=\"1\" data-index-in-node=\"21\"><a class=\"ng-star-inserted\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/demand-planning\/\" target=\"_blank\" rel=\"noopener\" data-hveid=\"0\" data-ved=\"0CAAQ_4QMahgKEwiU1Kmz3p6UAxUAAAAAHQAAAAAQ3wU\">demand planning<\/a><\/b> to predict market needs. By studying sales history and trends, companies set their schedules and material levels. It is a strategy designed for stability and high-volume consistency.<\/p>\n<h2><strong><span id=\"2\">What is a Pull Strategy in Supply Chain?<\/span><\/strong><\/h2>\n<p data-path-to-node=\"1\">A pull strategy (Make-to-Order) operates on actual, confirmed customer demand. Production and inventory movement are triggered strictly by incoming sales rather than theoretical forecasts.<\/p>\n<p data-path-to-node=\"2\">This model is rooted in Lean and the Toyota Production System to cut waste. It uses <b data-path-to-node=\"2\" data-index-in-node=\"84\"><a class=\"ng-star-inserted\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/jit-inventory\/\" target=\"_blank\" rel=\"noopener\" data-hveid=\"0\" data-ved=\"0CAAQ_4QMahgKEwiU1Kmz3p6UAxUAAAAAHQAAAAAQ8wU\">JIT inventory<\/a><\/b> and Kanban signals to keep stock levels minimal. This setup makes a business responsive to real market shifts instead of theoretical guesses.<\/p>\n<h2><strong>Push vs Pull Supply Chain: Key Differences<\/strong><\/h2>\n<p>To make informed strategic decisions, organizations must understand how these models diverge across several critical operational dimensions that impact the entire value chain:<\/p>\n<h3>Inventory Management<\/h3>\n<ul>\n<li>In a push system, inventory is treated as a strategic asset used to guarantee high service levels and immediate availability.<\/li>\n<li>In a pull system, inventory is often viewed as a liability or waste, kept to the absolute minimum necessary to fulfill active orders.<\/li>\n<\/ul>\n<h3>Production Scheduling<\/h3>\n<ul>\n<li>Push systems prioritize capacity utilization, high machine uptime, and economies of scale with stable, long-term schedules.<\/li>\n<li>Pull systems prioritize responsiveness and flexibility, with dynamic schedules that change daily based on incoming orders.<\/li>\n<\/ul>\n<h3>Information Flow<\/h3>\n<ul>\n<li>In a push model, information flows primarily downstream (from management forecasts to factory operations).<\/li>\n<li>In a pull model, information must flow upstream with zero latency (from customer orders back to raw material suppliers).<\/li>\n<\/ul>\n<h3>Risk Management<\/h3>\n<ul>\n<li>The primary risk in push is demand volatility, which leads to excess stock and markdowns.<\/li>\n<li>The primary risk in pull is supply volatility, where a single broken link in the supply chain can lead to immediate production halts and lost sales.<\/li>\n<\/ul>\n<h2><strong><span id=\"3\">The Advantages and Disadvantages of Push &amp; Pull Supply Chain<\/span><\/strong><\/h2>\n<p>Deciding between push and pull models requires a look at their specific trade-offs. While one strategy relies on bulk efficiency, the other focuses on market reaction. This comparison helps clarify which approach suits your operational needs by highlighting the strengths and risks of each.<\/p>\n<div class=\"hm-decision-matrix\">\n<div style=\"width: 100%; overflow-x: auto; margin: 0 0 30px 0; box-shadow: 0 2px 10px rgba(0,0,0,0.1); border-radius: 8px;\">\n<table style=\"width: 100%; min-width: 980px; border-collapse: collapse; table-layout: fixed; font-family: 'Segoe UI', Arial, sans-serif; font-size: 14px; color: #333;\">\n<thead>\n<tr>\n<td style=\"background-color: #8a0e19; color: #ffffff; padding: 15px; text-align: center; border: 1px solid #ddd;\" width=\"20%\"><b>Aspect<\/b><\/td>\n<td style=\"background-color: #8a0e19; color: #ffffff; padding: 15px; text-align: center; border: 1px solid #ddd;\" width=\"40%\"><b>Push Supply Chain (Forecast-Driven)<\/b><\/td>\n<td style=\"background-color: #8a0e19; color: #ffffff; padding: 15px; text-align: center; border: 1px solid #ddd;\" width=\"40%\"><b>Pull Supply Chain (Demand-Driven)<\/b><\/td>\n<\/tr>\n<\/thead>\n<tbody style=\"vertical-align: top;\"><!-- Core Advantages --><\/p>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 15px; background-color: #fefefe;\"><strong>Key Advantages<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">Optimized through <b>economies of scale<\/b>, immediate product availability on shelves, and high operational stability for labor and machinery.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">Dramatic reduction in <b>inventory costs<\/b>, support for mass customization, and superior quality control through small-batch production.<\/td>\n<\/tr>\n<p><!-- Primary Risks --><\/p>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"border: 1px solid #ddd; padding: 15px;\"><strong>Strategic Risks<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">High risk of <b>obsolescence<\/b> and dead stock if forecasts are wrong; highly susceptible to the <b>bullwhip effect<\/b>.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">Extreme susceptibility to <b>supply chain disruptions<\/b>; any single failure in the network can halt the entire fulfillment process.<\/td>\n<\/tr>\n<p><!-- Cost Structure --><\/p>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 15px; background-color: #fefefe;\"><strong>Cost Implications<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">Lower per-unit cost (COGS) through bulk manufacturing but carries <b>high warehouse and capital expenses<\/b>.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">Higher per-unit manufacturing costs and loss of shipping discounts, but <b>minimal working capital<\/b> is tied up in stock.<\/td>\n<\/tr>\n<p><!-- Customer Experience --><\/p>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"border: 1px solid #ddd; padding: 15px;\"><strong>Lead Times<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\"><b>Near-zero lead times<\/b> for customers as finished goods are pre-positioned in distribution centers or retail stores.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\"><b>Extended lead times<\/b>; customers must wait for the manufacturing and shipping window after the order is placed.<\/td>\n<\/tr>\n<p><!-- Best For --><\/p>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 15px; background-color: #fefefe;\"><strong>Ideal Industry<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">Standardized products with <b>predictable demand<\/b> and high-volume, low-variety requirements.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 15px;\">High-variability markets, <b>personalized\/luxury goods<\/b>, and industries with short product lifecycles.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2><strong>Push vs Pull Supply Chain Examples in Real Business<\/strong><\/h2>\n<p>The optimal choice is often dictated by product characteristics. For example, the <strong>Push Model<\/strong> remains the gold standard in the Consumer Packaged Goods (CPG) industry. Products like bottled water, detergents, or basic groceries have stable, predictable demand patterns, requiring massive, continuous production to drive down costs and ensure 100% shelf availability.<\/p>\n<p>Conversely, the <strong>Pull Model<\/strong> thrives in high-tech, luxury, and custom automotive sectors. For instance, a high-end computer manufacturer like Dell famously pioneered a pull model where the actual assembly of a laptop only begins once the customer selects their specifications online. This eliminates the risk of holding expensive, rapidly depreciating components in a warehouse.<\/p>\n<h2><strong><span id=\"4\">What is a Hybrid Push-Pull Supply Chain Strategy?<\/span><\/strong><\/h2>\n<p>Top companies rarely stick to just one method. Instead, they mix push and pull strategies. The switch happens at the Decoupling Point (or Order Penetration Point). This is the specific stage where forecast-driven work ends and real customer orders start. Postponement Strategy is a common way to manage this balance:<\/p>\n<ul>\n<li><strong>The Push Phase<\/strong>: In this stage, operations rely on long-term forecasts to manufacture or procure generic sub-assemblies in bulk. By producing these uncustomized core components ahead of time, companies secure economies of scale and significantly lower their baseline manufacturing costs without committing to a final product variant.<\/li>\n<li><strong>The Pull Phase<\/strong>: Operations shift to a demand-driven model at the Decoupling Point. Final assembly, localized packaging, or specific feature configurations are strictly delayed until a confirmed customer order arrives. This ensures capital is only spent on finishing goods that are already sold, effectively eliminating the risk of obsolete inventory.<\/li>\n<\/ul>\n<p>This method gives you the cost savings of mass production without the risk of making thousands of items that no one wants to buy. It keeps your inventory lean and your response times fast.<\/p>\n<h2><strong>How to Choose Between Push, Pull, or Hybrid Strategy<\/strong><\/h2>\n<p>When evaluating which strategy to implement, organizations should weigh these three primary factors:<\/p>\n<ul>\n<li><strong>Demand Predictability:<\/strong> High predictability and low product variety favor a push system. High volatility and high variety strongly suggest a pull model.<\/li>\n<li><strong>Lead Time Tolerance:<\/strong> If your customers require immediate delivery (e.g., fast-moving consumer goods), push is essential. If they are willing to wait for a tailored product (e.g., custom furniture or PCs), pull is ideal.<\/li>\n<li><strong>Product Value and Margin:<\/strong> High-value products with high margins are best managed through pull or hybrid models to avoid massive <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/stockout\/\" target=\"_blank\" rel=\"noopener noreferrer\">stockout<\/a> or overstock situations that could devastate cash flow.<\/li>\n<\/ul>\n<h2><strong>How Supply Chain Software Helps Manage Push and Pull Strategies<\/strong><\/h2>\n<p>The theoretical concepts of these strategies are made operational through modern technological infrastructure. AI and predictive analytics have revolutionized the push components of hybrid strategies by generating hyper-accurate demand models that account for weather, social media trends, and local events. Meanwhile, IoT devices and real-time tracking provide the end-to-end visibility required for pull systems to function without the need for traditional safety stocks.<\/p>\n<p>Digital twins also allow companies to simulate various &#8220;what-if&#8221; scenarios, stress-testing their push and pull boundaries in a risk-free virtual environment. This allows managers to find the perfect decoupling point for their specific market conditions, ensuring they are neither over-prepared nor caught off guard.<\/p>\n<h2><strong>Build a More Connected Supply Chain Strategy<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-19147 size-full\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation-.webp\" alt=\"ERP System Implementation in Supply Chain Management\" width=\"1048\" height=\"608\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation-.webp 1048w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation--300x174.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation--1024x594.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation--768x446.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation--724x420.webp 724w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation--150x87.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/ERP-System-Implementation--696x404.webp 696w\" sizes=\"(max-width: 1048px) 100vw, 1048px\" \/><\/p>\n<p>A strong supply chain strategy depends on accurate data, clear coordination, and visibility across every operational area. When demand planning, procurement, inventory, production, and finance run on separate systems, teams often make decisions based on incomplete or outdated information.<\/p>\n<p>An ERP system helps <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-supply-chain-management-scm-software\/\">connect these processes in one platform<\/a>, so businesses can track inventory levels, monitor purchasing needs, manage production schedules, and compare actual demand with forecasts more easily. This gives teams a clearer view of what is happening across the supply chain and helps reduce delays, overstocking, stockouts, and miscommunication.<\/p>\n<p>With better data visibility, companies can respond faster to demand changes, supplier issues, and operational risks. This makes supply chain planning more reliable and supports better decisions across the entire value chain.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>The push vs pull choice is about finding the right fit for your specific market and product lifecycle. Neither is better; they simply serve different needs. Push models use high-volume efficiency for stable markets, while pull models provide the speed needed for custom or unpredictable demand.<\/p>\n<p>Relying on a single, rigid model is a risk as global disruptions become more common. Resilient companies are moving toward hybrid systems. By using a clear decoupling point, you can keep the low costs of mass production while staying flexible enough to meet real-time customer needs.<\/p>\n<p>Moving to a hybrid model requires getting rid of manual data and messy spreadsheets. You need full visibility across your entire operation. A capable ERP or Supply Chain system provides the data and automation needed to balance these strategies, turning your supply chain into a clear competitive advantage.<\/p>\n<h2><strong>FAQ About Push &amp; Pull Supply Chain<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details open=\"open\">\n<summary><strong>What is the main difference between push and pull supply chains?<\/strong><\/summary>\n<p>The main difference is the trigger: push systems initiate production based on demand forecasts, while pull systems are triggered by actual customer orders.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>Can a company use both push and pull strategies?<\/strong><\/summary>\n<p>Yes, this is known as a hybrid strategy. It involves pushing raw materials or components to a certain stage and then pulling the final assembly based on specific customer demand.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>Which strategy is better for high-value items?<\/strong><\/summary>\n<p>The pull strategy is generally better for high-value items to minimize the amount of capital tied up in inventory and reduce the risk of product obsolescence.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><b data-path-to-node=\"4\" data-index-in-node=\"0\">What are the key performance indicators (KPIs) to track in a hybrid supply chain?<\/b><\/summary>\n<p>Managers should focus on the Inventory Turnover Ratio to monitor the efficiency of the initial push phase, ensuring core components do not become dead stock. For the pull phase, tracking Order Cycle Time is critical to guarantee that the final customization step meets customer delivery expectations without delay.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><b data-path-to-node=\"6\" data-index-in-node=\"0\">How do seasonal demand spikes dictate the choice between these strategies?<\/b><\/summary>\n<p>Extreme demand fluctuations force companies to adapt their models dynamically. Ahead of major retail peaks or holidays, businesses temporarily lean heavily into a push strategy to build necessary safety stock. Once the peak season concludes, they revert to a strict pull model to maintain lean operations and protect working capital.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is the main difference between push and pull supply chains?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"The main difference is the trigger: push systems initiate production based on demand forecasts, while pull systems are triggered by actual customer orders.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Can a company use both push and pull strategies?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Yes, this is known as a hybrid strategy. It involves pushing raw materials or components to a certain stage and then pulling the final assembly based on specific customer demand.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Which strategy is better for high-value items?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"The pull strategy is generally better for high-value items to minimize the amount of capital tied up in inventory and reduce the risk of product obsolescence.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What are the key performance indicators (KPIs) to track in a hybrid supply chain?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Managers should focus on the Inventory Turnover Ratio to monitor the efficiency of the initial push phase, ensuring core components do not become dead stock. For the pull phase, tracking Order Cycle Time is critical to guarantee that the final customization step meets customer delivery expectations without delay.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How do seasonal demand spikes dictate the choice between these strategies?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Extreme demand fluctuations force companies to adapt their models dynamically. Ahead of major retail peaks or holidays, businesses temporarily lean heavily into a push strategy to build necessary safety stock. Once the peak season concludes, they revert to a strict pull model to maintain lean operations and protect working capital.\"\n    }\n  }]\n}\n<\/script><\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>How you move goods from production to the buyer determines your profit and market standing. The core choice is between push and pull supply chains. Since customers now expect custom options and fast delivery, understanding these models is a requirement for anyone building a competitive business. Global disruptions have proven that old, rigid systems are [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":19145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[72],"tags":[],"class_list":{"0":"post-19122","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-supply-chain"},"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>Push vs Pull Supply Chain: Overcoming Inventory Risks<\/title>\n<meta name=\"description\" content=\"Struggling with stockouts or dead stock? Explore the mechanics of push vs pull supply chains and learn how a hybrid strategy boosts operational resilience.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Push vs Pull Supply Chain: Strategic Guide to Operations\" \/>\n<meta property=\"og:description\" content=\"Struggling with stockouts or dead stock? Explore the mechanics of push vs pull supply chains and learn how a hybrid strategy boosts operational resilience.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-08T04:07:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Farhana Zulaikha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Farhana Zulaikha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\"},\"author\":{\"name\":\"Farhana Zulaikha\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d\"},\"headline\":\"Push vs Pull Supply Chain: Strategic Guide to Operations\",\"datePublished\":\"2026-05-08T04:07:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\"},\"wordCount\":1768,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp\",\"articleSection\":[\"Supply chain\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\",\"name\":\"Push vs Pull Supply Chain: Overcoming Inventory Risks\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp\",\"datePublished\":\"2026-05-08T04:07:57+00:00\",\"description\":\"Struggling with stockouts or dead stock? Explore the mechanics of push vs pull supply chains and learn how a hybrid strategy boosts operational resilience.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp\",\"width\":800,\"height\":400,\"caption\":\"Pull Vs Push Supply Chain\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Push vs Pull Supply Chain: Strategic Guide to Operations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d\",\"name\":\"Farhana Zulaikha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp\",\"caption\":\"Farhana Zulaikha\"},\"description\":\"Farhana Zulaikha writes across a range of business topics, ensuring diverse content that appeals to a broad audience. He bridges the gap between complex software solutions and user understanding through clear, accessible articles. His work ensures that readers from any background can gain insights into improving business operations.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/farhana-zulaikha\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Push vs Pull Supply Chain: Overcoming Inventory Risks","description":"Struggling with stockouts or dead stock? Explore the mechanics of push vs pull supply chains and learn how a hybrid strategy boosts operational resilience.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/","og_locale":"en_US","og_type":"article","og_title":"Push vs Pull Supply Chain: Strategic Guide to Operations","og_description":"Struggling with stockouts or dead stock? Explore the mechanics of push vs pull supply chains and learn how a hybrid strategy boosts operational resilience.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-05-08T04:07:57+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp","type":"image\/webp"}],"author":"Farhana Zulaikha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Farhana Zulaikha","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/"},"author":{"name":"Farhana Zulaikha","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d"},"headline":"Push vs Pull Supply Chain: Strategic Guide to Operations","datePublished":"2026-05-08T04:07:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/"},"wordCount":1768,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp","articleSection":["Supply chain"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/","name":"Push vs Pull Supply Chain: Overcoming Inventory Risks","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp","datePublished":"2026-05-08T04:07:57+00:00","description":"Struggling with stockouts or dead stock? Explore the mechanics of push vs pull supply chains and learn how a hybrid strategy boosts operational resilience.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Pull-Vs-Push-Supply-Chain.webp","width":800,"height":400,"caption":"Pull Vs Push Supply Chain"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/push-vs-pull-supply-chain\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Push vs Pull Supply Chain: Strategic Guide to Operations"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d","name":"Farhana Zulaikha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp","caption":"Farhana Zulaikha"},"description":"Farhana Zulaikha writes across a range of business topics, ensuring diverse content that appeals to a broad audience. He bridges the gap between complex software solutions and user understanding through clear, accessible articles. His work ensures that readers from any background can gain insights into improving business operations.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/farhana-zulaikha\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=19122"}],"version-history":[{"count":4,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19122\/revisions"}],"predecessor-version":[{"id":19296,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19122\/revisions\/19296"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/19145"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=19122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=19122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=19122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}