{"id":2192,"date":"2026-04-08T16:13:38","date_gmt":"2026-04-08T06:13:38","guid":{"rendered":"https:\/\/www.hashmicro.com\/au\/blog\/?p=2192"},"modified":"2026-05-29T12:44:26","modified_gmt":"2026-05-29T02:44:26","slug":"3pl-third-party-logistics","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/","title":{"rendered":"3PL: Explanation &#038; Best Practices for Australian Businesses"},"content":{"rendered":"<p><span data-sheets-root=\"1\"><style>\r\n.qa-box {\r\n    background-color: #f7eaea;\r\n    border-left: 5px solid #af2828;\r\n    border-radius: 8px;\r\n    padding: 24px;\r\n    margin-bottom: 30px;\r\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\r\n}\r\n.qa-badge {\r\n    display: inline-block;\r\n    background-color: #af2828;\r\n    color: #ffffff;\r\n    padding: 6px 16px;\r\n    border-radius: 50px;\r\n    font-weight: 600;\r\n    font-size: 0.85rem;\r\n    margin-bottom: 16px;\r\n}\r\n.qa-title {\r\n    color: #1f2937;\r\n    font-size: 1.25rem;\r\n    font-weight: 700;\r\n    margin: 0 0 12px 0;\r\n    line-height: 1.4;\r\n}\r\n.qa-box p {\r\n    color: #4b5563;\r\n    font-size: 1rem;\r\n    line-height: 1.6;\r\n    margin-bottom: 24px;\r\n}\r\n.qa-box p:last-child {\r\n    margin-bottom: 0;\r\n}\r\n.qa-table-card {\r\n    background-color: #ffffff;\r\n    border-radius: 8px;\r\n    padding: 20px;\r\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);\r\n    overflow-x: auto;\r\n    border: 1px solid #e5e7eb;\r\n}\r\n.qa-table {\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    min-width: 500px;\r\n    border: none;\r\n}\r\n.qa-table th {\r\n    text-align: left;\r\n    color: #4b5563;\r\n    font-weight: 700;\r\n    padding: 12px;\r\n    border: none;\r\n    border-bottom: 1px solid #e5e7eb;\r\n}\r\n.qa-table td {\r\n    padding: 16px 12px;\r\n    border: none;\r\n    border-bottom: 1px solid #f3f4f6;\r\n    color: #1f2937;\r\n    font-size: 0.95rem;\r\n    vertical-align: middle;\r\n}\r\n.qa-table tr:last-child td {\r\n    border-bottom: none;\r\n}\r\n.col-software { font-weight: 700; color: #111; }\r\n.text-green { color: #16a34a; font-weight: 600; }\r\n.check-icon {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 22px;\r\n    height: 22px;\r\n    background-color: #22c55e;\r\n    color: white;\r\n    border-radius: 4px;\r\n    font-size: 14px;\r\n    font-weight: bold;\r\n}\r\n<\/style>\r\n<div class=\"qa-box\">\r\n    <div class=\"qa-badge\">Quick Answer<\/div>\r\n            <p>Third-party logistics (3PL) is a service where businesses outsource supply chain operations such as warehousing, inventory management, order fulfillment, and shipping to an external provider. This allows companies to improve logistics efficiency while focusing on core business activities.<\/p>\r\n        <\/div><\/span><\/p>\n<p data-start=\"150\" data-end=\"427\">In today\u2019s fast-moving global market, supply chain efficiency directly shapes customer satisfaction and business growth. Australian customers expect fast delivery, clear tracking, and simple returns. Meeting these expectations puts serious pressure on in-house logistics teams.<\/p>\n<p data-start=\"429\" data-end=\"698\">Running warehousing, inventory, fulfilment, and transport takes major investment and specialist skills. For growing Australian businesses, managing logistics internally often drains time and budget. This distraction slows down product development, sales, and marketing.<\/p>\n<p data-start=\"700\" data-end=\"968\">Third-Party Logistics, or 3PL, offers a practical solution. By outsourcing logistics to experienced providers, companies gain access to advanced systems and national networks. This approach supports flexible growth and consistent customer experiences across Australia.<\/p>\n<p data-start=\"700\" data-end=\"968\"><!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div> -->\r\n\r\n<!-- <div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Table of Content<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n\r\n\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<!-- START script lama -->\r\n<!-- <script>\r\n\/\/ \tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/ \t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\/\/ \t\tdropdownFixedTop.addEventListener('click', function() {\r\n\/\/ \t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\/\/ \t\t\tdropdownContent.classList.toggle('show');\r\n\/\/ \t\t});\r\n\r\n\/\/ \t\twindow.addEventListener('click', function(event) {\r\n\/\/ \t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\/\/ \t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\/\/ \t\t\t\tlistTocTop.classList.remove('show');\r\n\/\/ \t\t\t}\r\n\/\/ \t\t});\r\n\/\/ \t});\r\n\t\r\n\/\/ \tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\/\/ \tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n\/\/     var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n\/\/     window.addEventListener('scroll', function() {\r\n\/\/         if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(false);\r\n\/\/             triggered = true;\r\n\/\/         } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(true);\r\n\/\/             triggered = false;\r\n\/\/         }\r\n\/\/     });\r\n\r\n\/\/     function isCompletelyScrolledPast(element) {\r\n\/\/         var elementTop = element.getBoundingClientRect().top;\r\n\/\/         var elementBottom = element.getBoundingClientRect().bottom;\r\n\/\/         return elementTop < 0 && elementBottom < 0;\r\n\/\/     }\r\n\r\n\/\/     function showSectionDropdownFixedTop(show) {\r\n\/\/ \t\tif (show) {\r\n\/\/ \t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\/\/ \t\t}\r\n\/\/     }\r\n<\/script> -->\r\n<!-- <script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!--  <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\r\n        Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\t\r\n        Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p>Outsourcing logistics to a <a href=\"#what-is-third-party-logistics-3pl\">3PL allows Australian businesses to reduce fixed costs<\/a>, access national infrastructure, and scale operations faster without owning warehouses or fleets.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>From receiving and storage to fulfilment, shipping, and returns, <a href=\"#how-3pl-works-in-the-supply-chain\">a 3PL manages the full logistics flow<\/a> while customers continue to experience your brand.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Accurate inventory, fast fulfilment, reliable shipping, and smooth returns are the <a href=\"#core-functions-of-a-3pl-provider\">operational pillars that protect delivery speed<\/a>, margins, and customer satisfaction.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Transportation-based, warehouse-based, and full-service 3PLs solve different problems, so <a href=\"#types-of-3pl-providers\">selecting the right model is essential for long-term efficiency and growth<\/a>.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/au\/supply-chain-management?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/03\/Supply-Chain-Management-Software.png\" alt=\"Supply Chain Management\"><\/a><\/span><\/p>\n<h2 id=\"what-is-third-party-logistics-3pl\"><strong>What Is Third-Party Logistics (3PL)?<\/strong><\/h2>\n<p data-start=\"1021\" data-end=\"1271\">Third-Party Logistics, or 3PL, means outsourcing logistics operations to an external provider. These services include warehousing, inventory management, order fulfilment, and transportation. A 3PL company connects the seller directly to the customer.<\/p>\n<p data-start=\"1273\" data-end=\"1500\">The term \u201cthird-party\u201d refers to a logistics business that operates separately from buyers and sellers. Even so, it works closely with the seller\u2019s supply chain. Customers still experience the brand, not the logistics provider.<\/p>\n<p data-start=\"1502\" data-end=\"1764\">3PL services expanded after transport deregulation allowed logistics companies to offer more than freight movement. Over time, providers added technology, automation, and data-driven planning. Today, 3PL companies play a strategic role in supply chain decisions.<\/p>\n<p data-start=\"1766\" data-end=\"2017\">By using a 3PL, a business avoids heavy upfront investment in warehouses, staff, vehicles, and a <a href=\"https:\/\/www.hashmicro.com\/au\/transportation-management-software\">logistics management software<\/a>. Costs shift from fixed to flexible, based on usage. This model suits Australian e-commerce and retail businesses that need speed and cost control.<\/p>\n<p data-start=\"1766\" data-end=\"2017\">\r\n    <div class=\"hashy-banner-wrap\" data-catimg=\"Inventory\">\r\n        <a class=\"hashy-banner-link\" href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/?medium=moneysite-banner&promocampaign=hashy-ai\" target=\"_blank\" rel=\"noopener\" aria-label=\"See It Live\">\r\n        <div class=\"hashy-banner-frame\">\r\n            <div class=\"hashy-banner-stage\">\r\n                <!-- Background stack -->\r\n                <div class=\"hashy-card-bg\" aria-hidden=\"true\">\r\n                    <span class=\"hashy-card-bg-fill\"><\/span>\r\n                    <img decoding=\"async\" class=\"hashy-card-bg-stars\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/banner-bg-texture.webp\" alt=\"\" loading=\"lazy\" aria-hidden=\"true\">\r\n                    <img decoding=\"async\" class=\"hashy-card-bg-light\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/banner-light-beam-787912.webp\" alt=\"\" loading=\"lazy\" aria-hidden=\"true\">\r\n                    <span class=\"hashy-card-bg-glow\"><\/span>\r\n                <\/div>\r\n\r\n                <!-- Sparkle decorations -->\r\n                <span class=\"hashy-card-deco hashy-card-deco-1\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 121 35\" preserveAspectRatio=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <g opacity=\".48\" filter=\"url(#hcd1)\"><rect width=\"102\" height=\"24\" transform=\"matrix(-1.006 0 0 1.006 115.66 5.34)\" fill=\"url(#hcd1g)\"\/><\/g>\r\n                        <path d=\"M15.27 9.03 13.35 4.34l-1.92 4.69a13.2 13.2 0 0 1-6.77 6.61L0 17.56l4.66 1.88a13.2 13.2 0 0 1 6.77 6.81l1.92 4.66 1.92-4.66a13.2 13.2 0 0 1 6.77-6.81l4.66-1.88-4.66-1.92a13.2 13.2 0 0 1-6.77-6.61z\" fill=\"#fff\"\/>\r\n                        <defs>\r\n                            <filter id=\"hcd1\" x=\"7.7\" y=\"0\" width=\"113.27\" height=\"34.82\" filterUnits=\"userSpaceOnUse\"><feGaussianBlur stdDeviation=\"2.66\"\/><\/filter>\r\n                            <linearGradient id=\"hcd1g\" x1=\"175.31\" y1=\"12\" x2=\"0\" y2=\"12\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"\/><stop offset=\"1\" stop-color=\"#0B0B0F\"\/><\/linearGradient>\r\n                        <\/defs>\r\n                    <\/svg>\r\n                <\/span>\r\n                <span class=\"hashy-card-deco hashy-card-deco-2\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 121 35\" preserveAspectRatio=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <g opacity=\".48\" filter=\"url(#hcd2)\"><rect x=\"5.34\" y=\"5.34\" width=\"102.59\" height=\"24.14\" fill=\"url(#hcd2g)\"\/><\/g>\r\n                        <path d=\"M105.73 9.03 107.65 4.34l1.92 4.69a13.2 13.2 0 0 0 6.77 6.61L121 17.56l-4.66 1.88a13.2 13.2 0 0 0-6.77 6.81l-1.92 4.66-1.92-4.66a13.2 13.2 0 0 0-6.77-6.81l-4.66-1.88 4.66-1.92a13.2 13.2 0 0 0 6.77-6.61z\" fill=\"#fff\"\/>\r\n                        <defs>\r\n                            <filter id=\"hcd2\" x=\"0\" y=\"0\" width=\"113.27\" height=\"34.82\" filterUnits=\"userSpaceOnUse\"><feGaussianBlur stdDeviation=\"2.66\"\/><\/filter>\r\n                            <linearGradient id=\"hcd2g\" x1=\"181.66\" y1=\"17.47\" x2=\"5.34\" y2=\"17.47\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"\/><stop offset=\"1\" stop-color=\"#232126\"\/><\/linearGradient>\r\n                        <\/defs>\r\n                    <\/svg>\r\n                <\/span>\r\n                <span class=\"hashy-card-deco hashy-card-deco-3\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 35 95\" preserveAspectRatio=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <g opacity=\".48\" filter=\"url(#hcd3)\"><rect x=\"29.52\" y=\"5.35\" width=\"76.56\" height=\"24.18\" transform=\"rotate(90 29.52 5.35)\" fill=\"url(#hcd3g)\"\/><\/g>\r\n                        <path d=\"M26.26 79.7 30.96 81.63 26.26 83.55a8.7 8.7 0 0 0-6.62 6.78L17.72 95l-1.89-4.67a8.7 8.7 0 0 0-4.72-4.62L4.34 81.63 9.01 79.7a8.7 8.7 0 0 0 4.72-4.62l1.89-4.67 1.92 4.67a8.7 8.7 0 0 0 6.62 6.78z\" fill=\"#fff\"\/>\r\n                        <defs>\r\n                            <filter id=\"hcd3\" x=\"0\" y=\"0\" width=\"34.88\" height=\"87.26\" filterUnits=\"userSpaceOnUse\"><feGaussianBlur stdDeviation=\"2.66\"\/><\/filter>\r\n                            <linearGradient id=\"hcd3g\" x1=\"161.1\" y1=\"17.5\" x2=\"29.52\" y2=\"17.5\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"\/><stop offset=\"1\" stop-color=\"#232126\"\/><\/linearGradient>\r\n                        <\/defs>\r\n                    <\/svg>\r\n                <\/span>\r\n\r\n                <div class=\"hashy-card-inner\">\r\n                    <!-- Left column: logo + headline + CTA -->\r\n                    <div class=\"hashy-card-left\">\r\n                        <img decoding=\"async\" class=\"hashy-card-logo\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/hashmicro-logo-f0090c.webp\" alt=\"HashMicro\" width=\"240\" height=\"32\" loading=\"lazy\">\r\n                        <div class=\"hashy-card-text-block\">\r\n                            <p class=\"hashy-card-title\"><span class=\"hashy-fg-grad\">Hashy AI<\/span> reorders the right stock before you even notice<\/p>\r\n                            <span class=\"hashy-card-cta\">\r\n                                <span class=\"hashy-card-cta-label\">See It Live<\/span>\r\n                                <span class=\"hashy-card-cta-spark\" aria-hidden=\"true\">\r\n                                    <svg viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"21\">\r\n                                        <path d=\"M6.87 6.43 8.02 3.62l1.14 2.81a7 7 0 0 0 4.07 4.07l2.8 1.14-2.8 1.14a7 7 0 0 0-4.07 4.07l-1.14 2.81-1.14-2.81A7 7 0 0 0 2.8 12.78L0 11.64l2.8-1.14a7 7 0 0 0 4.07-4.07z\" fill=\"#fff\"\/>\r\n                                        <path d=\"m15.1 1.5.61-1.5.61 1.5a3.7 3.7 0 0 0 2.07 2.18l1.5.61-1.5.61a3.7 3.7 0 0 0-2.07 2.18l-.61 1.5-.61-1.5a3.7 3.7 0 0 0-2.07-2.18l-1.5-.61 1.5-.61A3.7 3.7 0 0 0 15.1 1.5z\" fill=\"#fff\"\/>\r\n                                        <path d=\"m14.66 15.76.4-.98.4.98a2.4 2.4 0 0 0 1.42 1.42l.98.4-.98.4a2.4 2.4 0 0 0-1.42 1.42l-.4.98-.4-.98a2.4 2.4 0 0 0-1.42-1.42l-.98-.4.98-.4a2.4 2.4 0 0 0 1.42-1.42z\" fill=\"#fff\"\/>\r\n                                    <\/svg>\r\n                                <\/span>\r\n                            <\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Right column: mascot + chat window -->\r\n                    <div class=\"hashy-card-right\" aria-hidden=\"true\">\r\n                        <img decoding=\"async\" class=\"hashy-card-mascot\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/hashy-mascot-af02ad.webp\" alt=\"\" width=\"128\" height=\"194\" loading=\"lazy\">\r\n                        <div class=\"hashy-card-chat-window\">\r\n                            <div class=\"hashy-card-chat-header\">\r\n                                <div class=\"hashy-card-chat-id\">\r\n                                    <div class=\"hashy-card-chat-avatar\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"36\" height=\"36\" loading=\"lazy\">\r\n                                    <\/div>\r\n                                    <div class=\"hashy-card-chat-meta\">\r\n                                        <p class=\"hashy-card-chat-name\">Hashy AI<\/p>\r\n                                        <p class=\"hashy-card-chat-role\">Your AI Assistant<\/p>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <div class=\"hashy-card-chat-dots\" aria-hidden=\"true\">\r\n                                    <span><\/span><span><\/span><span><\/span>\r\n                                <\/div>\r\n                            <\/div>\r\n                            <div class=\"hashy-card-chat-body\">\r\n                                <div class=\"hashy-card-chat-stream\"\r\n                                     data-avatar-hashy=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\"\r\n                                     data-avatar-user=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hannah.webp\">\r\n                                <!-- 1. Hashy: Low Stock Warning card (Light Switch W324) -->\r\n                                <div class=\"hashy-msg is-incoming\" data-step=\"1\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white hashy-bubble-card\">\r\n                                        <div class=\"hashy-stock-card\">\r\n                                            <div class=\"hashy-stock-head\">\r\n                                                <span>Low Stock Warning<\/span>\r\n                                                <svg class=\"hashy-warn-icon\" viewBox=\"0 0 20 20\" width=\"20\" height=\"20\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.43 8.97C6.86 4.66 8.07 2.5 10 2.5s3.14 2.16 5.57 6.47l.3.54c2.02 3.58 3.03 5.37 2.12 6.68-.91 1.31-3.17 1.31-7.69 1.31H9.7c-4.52 0-6.78 0-7.69-1.31-.92-1.31.09-3.1 2.11-6.68l.3-.54zM10 6.04a.62.62 0 0 1 .62.63v4.16a.62.62 0 0 1-1.25 0V6.67a.62.62 0 0 1 .63-.63zm0 8.13a.83.83 0 1 0 0-1.67.83.83 0 0 0 0 1.67z\" fill=\"#BD1E2D\"\/><\/svg>\r\n                                            <\/div>\r\n                                            <div class=\"hashy-stock-divider\"><\/div>\r\n                                            <div class=\"hashy-stock-row\">\r\n                                                <div class=\"hashy-stock-thumb\">\r\n                                                    <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/product-lightswitch.webp\" alt=\"\" loading=\"lazy\">\r\n                                                <\/div>\r\n                                                <div class=\"hashy-stock-info\">\r\n                                                    <p class=\"hashy-stock-name\">Light Switch W324<\/p>\r\n                                                    <p class=\"hashy-stock-sku\">LS-2852<\/p>\r\n                                                    <span class=\"hashy-stock-pill hashy-stock-pill-ok\">Last Updated: 2 Seconds Ago<\/span>\r\n                                                <\/div>\r\n                                            <\/div>\r\n                                            <div class=\"hashy-stock-progress\">\r\n                                                <div class=\"hashy-stock-bar\"><span style=\"width:20%\"><\/span><\/div>\r\n                                                <span class=\"hashy-stock-pill hashy-stock-pill-low\">92 pcs<\/span>\r\n                                            <\/div>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <!-- 2. Projection -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"2\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white\"><span class=\"hashy-text-purple\"><strong>Light Switch W324<\/strong><\/span> is projected to run out in 3 days.<\/div>\r\n                                <\/div>\r\n                                <!-- 3. PO draft prepared + document card -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"3\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white hashy-bubble-card hashy-bubble-doc\">\r\n                                        <div class=\"hashy-doc-tag\">\r\n                                            <svg viewBox=\"0 0 15 15\" width=\"15\" height=\"15\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 7.5A7.5 7.5 0 1 1 0 7.5a7.5 7.5 0 0 1 15 0zm-4.48-2.27a.55.55 0 0 1 0 .8L6.77 9.77a.55.55 0 0 1-.8 0l-1.5-1.5a.55.55 0 0 1 .8-.8l1.1 1.1 3.36-3.34a.55.55 0 0 1 .79 0z\" fill=\"#2FB71C\"\/><\/svg>\r\n                                            <p><span class=\"hashy-text-purple\"><strong>Purchase order<\/strong><\/span> draft prepared<\/p>\r\n                                        <\/div>\r\n                                        \r\n                                        <div class=\"hashy-doc-card\">\r\n                                            <div class=\"hashy-doc-preview\">\r\n                                                <div class=\"hashy-doc-head\">\r\n                                                    <div class=\"hashy-doc-head-text\">\r\n                                                        <p class=\"hashy-doc-title\">Purchase order<\/p>\r\n                                                        <p class=\"hashy-doc-num\">Purchase order Number #PO-3162-01<\/p>\r\n                                                    <\/div>\r\n                                                    <img decoding=\"async\" class=\"hashy-doc-logo\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/doc-logo-inventory.webp\" alt=\"\" loading=\"lazy\">\r\n                                                <\/div>\r\n                                                <div class=\"hashy-doc-divider\"><\/div>\r\n                                                <div class=\"hashy-doc-fromto\">\r\n                                                    <div>\r\n                                                        <p class=\"hashy-doc-label\">From:<\/p>\r\n                                                        <p class=\"hashy-doc-co\">TerraCore Materials<\/p>\r\n                                                        <p class=\"hashy-doc-addr\">789 Enterprise Avenue, Floor 2,<br>Metropolis, Stockholm<\/p>\r\n                                                    <\/div>\r\n                                                    <div>\r\n                                                        <p class=\"hashy-doc-label\">to:<\/p>\r\n                                                        <p class=\"hashy-doc-co\">Buildronix Materials<\/p>\r\n                                                        <p class=\"hashy-doc-addr\">45 Evergreen Lane, Suite 102,<br>Brookfield, NY, 11234<\/p>\r\n                                                    <\/div>\r\n                                                <\/div>\r\n                                            <\/div>\r\n                                            <div class=\"hashy-doc-attach\">\r\n                                                <span class=\"hashy-doc-pdf-badge\" aria-hidden=\"true\">\r\n                                                    <svg viewBox=\"0 0 20 25\" width=\"20\" height=\"25\"><path d=\"M2 0h12l4 5v18a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z\" fill=\"#E5252A\"\/><path d=\"M14 0v5h4z\" fill=\"#FF5757\"\/><text x=\"4\" y=\"22\" font-family=\"Arial,sans-serif\" font-weight=\"700\" font-size=\"6\" fill=\"#fff\">PDF<\/text><\/svg>\r\n                                                <\/span>\r\n                                                <div class=\"hashy-doc-attach-meta\">\r\n                                                    <p class=\"hashy-doc-file\">Purchase order [21\/04\/2026].pdf<\/p>\r\n                                                    <p class=\"hashy-doc-size\">1MB, PDF File<\/p>\r\n                                                <\/div>\r\n                                            <\/div>\r\n                                            <span class=\"hashy-doc-cta\">View Document<\/span>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <!-- 4. User question (right) -->\r\n                                <div class=\"hashy-msg is-outgoing\" data-step=\"4\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-purple\">Is the quantity <strong>already optimized?<\/strong><\/div>\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar hashy-msg-avatar-bordered\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hannah.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                <\/div>\r\n                                <!-- 5. Hashy answer -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"5\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white\">Yes, based on <span class=\"hashy-text-purple\"><strong>demand trend &amp; lead time.<\/strong><\/span><\/div>\r\n                                <\/div>\r\n                                <!-- 6. User approval (right) -->\r\n                                <div class=\"hashy-msg is-outgoing\" data-step=\"6\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-purple\">Approved. Please<strong> inform the supplier.<\/strong><\/div>\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar hashy-msg-avatar-bordered\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hannah.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                <\/div>\r\n                                <!-- 7. RFQ confirmation -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"7\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white\">\r\n                                        <span class=\"hashy-inline-icon\">\r\n                                            <svg viewBox=\"0 0 18 18\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 9A7.5 7.5 0 1 1 1.5 9a7.5 7.5 0 0 1 15 0zm-4.48-2.27a.55.55 0 0 1 0 .8L8.27 11.27a.55.55 0 0 1-.8 0l-1.5-1.5a.55.55 0 0 1 .8-.8l1.1 1.1 3.4-3.34a.55.55 0 0 1 .76 0z\" fill=\"#2FB71C\"\/><\/svg>\r\n                                        <\/span>\r\n                                        Request for Quotation is <span class=\"hashy-text-purple\"><strong>sent to 15 vendors.<\/strong><\/span>\r\n                                    <\/div>\r\n                                <\/div><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <\/a>\r\n    <\/div>\r\n\r\n    <style>\r\n        \/* ============================================================\r\n         * Hashy banner \u2014 Figma 5181:2678 (1440 \u00d7 508). Stage rendered\r\n         * at exact Figma px values; outer wrapper scales it to fit any\r\n         * body-post container width via container queries.\r\n         * ============================================================ *\/\r\n        .hashy-banner-wrap {\r\n            container-type: inline-size !important;\r\n            container-name: hashybnr !important;\r\n            position: relative !important;\r\n            display: block !important;\r\n            width: 100% !important;\r\n            max-width: 860px !important;        \/* locks the banner at the \"wider\r\n                                        blog 860px\" preview proportions\r\n                                        regardless of body-post width *\/\r\n            margin: 16px auto !important;\r\n            font-family: Poppins, \"Helvetica Neue\", Arial, sans-serif !important;\r\n        }\r\n\r\n        \/* Whole-banner link \u2014 wraps the entire frame so any click on the\r\n           card (background, mascot, chat preview) routes to the CTA URL.\r\n           The inner CTA is now a non-anchor span styled as a button. *\/\r\n        .hashy-banner-link {\r\n            display: block !important;\r\n            color: inherit !important;\r\n            text-decoration: none !important;\r\n            cursor: pointer !important;\r\n        }\r\n\r\n        .hashy-banner-frame {\r\n            position: relative !important;\r\n            width: 100% !important;\r\n            aspect-ratio: 1440 \/ 508 !important;\r\n            border-radius: 16px !important;\r\n            overflow: hidden !important;\r\n            background: #111 !important;\r\n            box-shadow: 0 12px 40px rgba(0, 0, 0, .35) !important;\r\n        }\r\n\r\n        \/* The stage is rendered at the exact Figma frame size. The\r\n           transform: scale() shrinks it proportionally to fit the\r\n           container while preserving every pixel-level token.\r\n           tan(atan2(y, x)) is the standard CSS trig trick to turn the\r\n           length ratio (100cqw \/ 1440px) into a unitless number that\r\n           scale() will accept. *\/\r\n        .hashy-banner-stage {\r\n            position: absolute !important;\r\n            top: 0 !important; left: 0 !important;\r\n            width: 1440px !important;\r\n            height: 508px !important;\r\n            transform-origin: top left !important;\r\n            transform: scale(tan(atan2(100cqw, 1440px))) !important;\r\n        }\r\n        \/* Fallback for browsers without CSS Trig support (pre-2023): the\r\n           stage simply renders left-aligned at design size with overflow\r\n           clipped, which is still readable. *\/\r\n        @supports not (transform: scale(tan(atan2(1px, 1px)))) {\r\n            .hashy-banner-stage { transform: none !important; }\r\n        }\r\n        .hashy-banner-stage * { box-sizing: border-box !important; }\r\n        \/* Defensive overrides \u2014 Hashmicro WP theme rules like\r\n           `.tagdiv-type img { margin-bottom: 21px }` (specificity 0,1,1)\r\n           push our avatars \/ mascot \/ logo out of alignment. Selectors\r\n           below repeat the wrapper class so specificity is (0,2,1) and\r\n           wins regardless of theme load order. *\/\r\n        .hashy-banner-wrap.hashy-banner-wrap img,\r\n        .hashy-banner-stage.hashy-banner-stage img {\r\n            margin: 0 !important;\r\n            padding: 0 !important;\r\n            border: 0 !important;\r\n            max-width: none !important;\r\n            background: transparent !important;\r\n            vertical-align: middle !important;\r\n            box-shadow: none !important;\r\n        }\r\n        .hashy-banner-wrap.hashy-banner-wrap p,\r\n        .hashy-banner-wrap.hashy-banner-wrap h1, .hashy-banner-wrap.hashy-banner-wrap h2,\r\n        .hashy-banner-wrap.hashy-banner-wrap h3, .hashy-banner-wrap.hashy-banner-wrap h4,\r\n        .hashy-banner-wrap.hashy-banner-wrap h5, .hashy-banner-wrap.hashy-banner-wrap h6 {\r\n            margin: 0 !important;\r\n            padding: 0 !important;\r\n            text-indent: 0 !important;\r\n            background: transparent !important;\r\n        }\r\n        .hashy-banner-wrap.hashy-banner-wrap a { text-decoration: none !important; }\r\n\r\n        \/* \u2500\u2500 Background layers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-bg {\r\n            position: absolute !important; inset: 0 !important;\r\n            border-radius: 16px !important;\r\n            overflow: hidden !important;\r\n            pointer-events: none !important;\r\n            z-index: 0 !important;\r\n        }\r\n        .hashy-card-bg-fill { position: absolute !important; inset: 0 !important; background: #111 !important; }\r\n        .hashy-card-bg-stars {\r\n            position: absolute !important; inset: 0 !important;\r\n            width: 100% !important; height: 100% !important;\r\n            object-fit: cover !important;\r\n            mix-blend-mode: screen !important;\r\n            opacity: .56 !important;\r\n        }\r\n        .hashy-card-bg-light {\r\n            position: absolute !important;\r\n            inset: -6px 0 auto 0 !important;\r\n            width: 100% !important;\r\n            height: calc(100% + 12px) !important;\r\n            object-fit: cover !important;\r\n            mix-blend-mode: plus-lighter !important;\r\n            opacity: .54 !important;\r\n            filter: blur(16px) !important;\r\n        }\r\n        .hashy-card-bg-glow {\r\n            position: absolute !important;\r\n            left: calc(50% - 480px) !important;\r\n            bottom: -110px !important;\r\n            width: 961px !important;\r\n            height: 222px !important;\r\n            border-radius: 50% !important;\r\n            background: radial-gradient(ellipse 480px 111px at center, rgba(160,102,242,1) 0%, rgba(77,77,77,0) 100%) !important;\r\n            filter: blur(80px) !important;\r\n            opacity: .8 !important;\r\n            pointer-events: none !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 Sparkle decorations (Figma px positions) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-deco {\r\n            position: absolute !important;\r\n            display: block !important;\r\n            pointer-events: none !important;\r\n            z-index: 1 !important;\r\n            animation: hashyDecoFloat 4s ease-in-out infinite !important;\r\n        }\r\n        .hashy-card-deco svg { width: 100% !important; height: 100% !important; display: block !important; }\r\n        .hashy-card-deco-1 { left: 334px !important; top: 399px !important; width: 121px !important; height: 35px !important; }\r\n        .hashy-card-deco-2 { left: 615px !important; top: 72px !important;  width: 121px !important; height: 35px !important; animation-delay: 1.3s !important; }\r\n        .hashy-card-deco-3 { right: 50.57px !important; top: -6px !important; width: 35px !important;  height: 95px !important; animation-delay: 2.4s !important; }\r\n        @keyframes hashyDecoFloat {\r\n            0%, 100% { transform: translateY(0)    scale(1);    opacity: .9; }\r\n            50%      { transform: translateY(-3px) scale(1.05); opacity: 1;  }\r\n        }\r\n\r\n        \/* \u2500\u2500 Inner row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-inner {\r\n            position: relative !important;\r\n            z-index: 2 !important;\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            gap: 48px !important;\r\n            padding: 64px 70px !important;\r\n            height: 100% !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 Left column \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-left {\r\n            flex: 0 0 auto !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: flex-start !important;\r\n            gap: 32px !important;             \/* logo\u2192text tightened from 64 *\/\r\n            max-width: 660px !important;      \/* fits the longer Accounting copy on 3 lines *\/\r\n        }\r\n        .hashy-card-logo {\r\n            display: block !important;\r\n            height: 31.28px !important;\r\n            width: auto !important;\r\n        }\r\n        .hashy-card-text-block {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: flex-start !important;\r\n            gap: 32px !important;             \/* text\u2192button tightened from 56,\r\n                                                 brings CTA up + farther from\r\n                                                 banner bottom edge *\/\r\n        }\r\n        .hashy-card-title {\r\n            margin: 0 !important;\r\n            font-family: Poppins, \"Helvetica Neue\", Arial, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 46px !important;\r\n            line-height: 1.25 !important;\r\n            color: #fff !important;\r\n            letter-spacing: -0.005em !important;\r\n            max-width: 660px !important;      \/* match left-column widening *\/\r\n        }\r\n        .hashy-banner-stage .hashy-fg-grad {\r\n            display: inline-block !important;\r\n            background: linear-gradient(65deg, #8839E7 0%, #E391F4 74%, #8839E7 100%) !important;\r\n            -webkit-background-clip: text !important;\r\n            background-clip: text !important;\r\n            -webkit-text-fill-color: transparent !important;\r\n            color: transparent !important;\r\n            font-weight: 700 !important;\r\n        }\r\n\r\n        \/* CTA \u2014 bumped up from Figma (14\u00d748 \/ 20px) so it stays visually\r\n           prominent after the stage scale-down (~0.44\u00d7 at 628 container).\r\n           Now: padding 22\u00d772, font 30, gap 14, sparkle 28. *\/\r\n        .hashy-card-cta {\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            gap: 14px !important;\r\n            padding: 22px 72px !important;\r\n            background:\r\n                linear-gradient(#8839E7, #8839E7) padding-box,\r\n                linear-gradient(129deg, #fff 5%, rgba(255,255,255,0) 28%, rgba(255,255,255,0) 72%, #fff 94%) border-box !important;\r\n            border: 3px solid transparent !important;\r\n            border-radius: 99px !important;\r\n            color: #fff !important;\r\n            font-family: Poppins, \"Helvetica Neue\", Arial, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 30px !important;\r\n            line-height: 1.2 !important;\r\n            text-decoration: none !important;\r\n            box-shadow: 0 8px 28px rgba(136, 57, 231, .45) !important;\r\n            transition: transform .25s ease, box-shadow .25s ease, filter .25s ease !important;\r\n        }\r\n        .hashy-card-cta:hover {\r\n            transform: translateY(-2px) !important;\r\n            filter: brightness(1.08) !important;\r\n            color: #fff !important;\r\n            text-decoration: none !important;\r\n            box-shadow: 0 14px 36px rgba(136, 57, 231, .6) !important;\r\n        }\r\n        .hashy-card-cta-spark { display: inline-flex !important; }\r\n        .hashy-card-cta-spark svg { display: block !important; width: 28px !important; height: 29px !important; }\r\n\r\n        \/* \u2500\u2500 Right column (mascot + chat) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-right {\r\n            position: relative !important;\r\n            flex: 0 0 auto !important;\r\n            width: 562px !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: center !important;\r\n            padding-bottom: 24px !important;\r\n        }\r\n        .hashy-banner-wrap.hashy-banner-wrap img.hashy-card-mascot,\r\n        .hashy-banner-stage.hashy-banner-stage img.hashy-card-mascot,\r\n        .hashy-card-mascot {\r\n            display: block !important;\r\n            width: 128px !important;\r\n            height: 194.4px !important;\r\n            margin: 0 0 -28px !important;        \/* overlap chat-window by 28px *\/\r\n            position: relative !important;\r\n            z-index: 1 !important;               \/* sits BEHIND chat window so the\r\n                                         bottom edge is hidden, giving\r\n                                         the peek-from-behind effect *\/\r\n            animation: hashyMascotBounce 3.5s ease-in-out infinite !important;\r\n            filter: drop-shadow(0 8px 24px rgba(0,0,0,.45)) !important;\r\n        }\r\n        @keyframes hashyMascotBounce {\r\n            0%, 100% { transform: translateY(0)    rotate(-2deg); }\r\n            50%      { transform: translateY(-6px) rotate( 2deg); }\r\n        }\r\n\r\n        .hashy-card-chat-window {\r\n            position: relative !important;\r\n            z-index: 2 !important;               \/* on top of mascot so the bottom\r\n                                         edge of the mascot is hidden\r\n                                         behind it (peek-through effect) *\/\r\n            width: 100% !important;\r\n            height: 278px !important;\r\n            background: rgba(255, 255, 255, 0.24) !important;\r\n            border-radius: 12px !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 20px !important;\r\n            padding: 0 0 10px !important;\r\n            overflow: hidden !important;\r\n            box-shadow:\r\n                0 0 24px rgba(255,255,255,0.08),\r\n                0 0 40px rgba(255,255,255,0.08) !important;\r\n            backdrop-filter: blur(4px) !important;\r\n            -webkit-backdrop-filter: blur(4px) !important;\r\n        }\r\n        .hashy-card-chat-window::before {\r\n            content: \"\" !important;\r\n            position: absolute !important; inset: 0 !important;\r\n            border-radius: inherit !important;\r\n            padding: 3px !important;\r\n            background: linear-gradient(134deg, #fff 0%, rgba(255,255,255,0.16) 26%, rgba(255,255,255,0.16) 77%, #fff 100%) !important;\r\n            -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0) !important;\r\n            -webkit-mask-composite: xor !important;\r\n                    mask-composite: exclude !important;\r\n            pointer-events: none !important;\r\n            z-index: 3 !important;\r\n        }\r\n\r\n        \/* Chat header \u2014 increased top\/bottom padding (10\u219216) to keep\r\n           the avatar visibly clear of the dark header edges. *\/\r\n        .hashy-card-chat-header {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            padding: 16px 20px !important;\r\n            background: #111 !important;\r\n            border-radius: 13.474px 13.474px 0 0 !important;\r\n            flex-shrink: 0 !important;\r\n            position: relative !important;\r\n            z-index: 1 !important;\r\n        }\r\n        .hashy-card-chat-id {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 11px !important;\r\n        }\r\n        .hashy-card-chat-avatar {\r\n            width: 40px !important; height: 40px !important;\r\n            border-radius: 50% !important;\r\n            display: block !important;\r\n            flex-shrink: 0 !important;\r\n            overflow: hidden !important;\r\n        }\r\n        .hashy-card-chat-avatar img {\r\n            display: block !important;\r\n            width: 100% !important; height: 100% !important;\r\n            border-radius: 50% !important;\r\n            object-fit: cover !important;\r\n        }\r\n        \/* Two-line meta block \u2014 height locked to avatar so flex-center\r\n           on the parent aligns avatar mid-Y with text mid-Y exactly. *\/\r\n        .hashy-card-chat-meta {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            justify-content: center !important;\r\n            align-items: flex-start !important;\r\n            height: 40px !important;\r\n            text-align: left !important;\r\n            line-height: 1.15 !important;\r\n        }\r\n        .hashy-card-chat-name {\r\n            margin: 0 !important;\r\n            color: #fff !important;\r\n            font-weight: 500 !important;\r\n            font-size: 17px !important;\r\n            line-height: 1.2 !important;\r\n            text-align: left !important;\r\n        }\r\n        .hashy-card-chat-role {\r\n            margin: 2px 0 0 !important;\r\n            color: #fff !important;\r\n            font-weight: 400 !important;\r\n            font-size: 11.5px !important;\r\n            line-height: 1.2 !important;\r\n            text-align: left !important;\r\n            opacity: .85 !important;\r\n        }\r\n        .hashy-card-chat-dots { display: inline-flex !important; align-items: center !important; gap: 8px !important; padding: 0 4px !important; }\r\n        .hashy-card-chat-dots span { width: 10.12px !important; height: 10.12px !important; border-radius: 50% !important; background: #d9d9d9 !important; }\r\n\r\n        \/* Chat body \/ stream *\/\r\n        .hashy-card-chat-body { position: relative !important; flex: 1 1 auto !important; min-height: 0 !important; overflow: hidden !important; }\r\n        .hashy-card-chat-stream {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 20px !important;\r\n            will-change: transform !important;\r\n            transition: transform .9s cubic-bezier(.2,.7,.2,1) !important;\r\n        }\r\n        .hashy-card-chat-stream.no-transition,\r\n        .hashy-card-chat-stream.no-transition .hashy-msg { transition: none !important; }\r\n\r\n        \/* Message rows \u2014 softened easing + longer transitions for a calmer\r\n           reveal cadence. Bubble drops in from -10px with fade. *\/\r\n        .hashy-msg {\r\n            display: flex !important;\r\n            align-items: flex-end !important;\r\n            gap: 18px !important;\r\n            padding: 0 28px !important;\r\n            opacity: 0 !important;\r\n            transform: translateY(-10px) !important;\r\n            transition: opacity .55s cubic-bezier(.16,.84,.32,1),\r\n                        transform .65s cubic-bezier(.18,.86,.34,1.04) !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-msg.is-revealed { opacity: 1 !important; transform: translateY(0) !important; }\r\n        .hashy-msg.is-incoming { justify-content: flex-start !important; }\r\n        .hashy-msg.is-outgoing { justify-content: flex-end !important; padding: 0 28px 0 0 !important; }\r\n        .hashy-msg.hashy-msg-narrow { padding: 0 24px !important; }\r\n\r\n        .hashy-msg-avatar {\r\n            display: block !important;\r\n            width: 40px !important; height: 40px !important;\r\n            border-radius: 50% !important;\r\n            object-fit: cover !important;\r\n            flex-shrink: 0 !important;\r\n            background: #fff !important;\r\n        }\r\n        .hashy-msg-avatar-bordered {\r\n            border: 1.82px solid #fff !important;\r\n            background: #8839E7 !important;\r\n        }\r\n\r\n        \/* Bubbles *\/\r\n        .hashy-bubble {\r\n            position: relative !important;\r\n            padding: 10px 14px !important;\r\n            border-radius: 5px !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 14.5px !important;\r\n            line-height: 1.4 !important;\r\n            box-shadow: 0 1px 2px rgba(0,0,0,.18) !important;\r\n            max-width: 320px !important;\r\n        }\r\n        .hashy-bubble strong { font-weight: 700 !important; }\r\n\r\n        .hashy-bubble-white { background: #fff !important; color: #353535 !important; }\r\n        .hashy-bubble-white::before {\r\n            content: \"\" !important;\r\n            position: absolute !important;\r\n            left: -7px !important; top: 0 !important;\r\n            width: 0 !important; height: 0 !important;\r\n            border-style: solid !important;\r\n            border-width: 0 17px 16px 0 !important;\r\n            border-color: transparent #fff transparent transparent !important;\r\n        }\r\n        .hashy-text-purple { color: #8839E7 !important; font-weight: 800 !important; }\r\n\r\n        .hashy-bubble-purple { background: #8839E7 !important; color: #fff !important; }\r\n        .hashy-bubble-purple::after {\r\n            content: \"\" !important;\r\n            position: absolute !important;\r\n            right: -7px !important; top: 0 !important;\r\n            width: 0 !important; height: 0 !important;\r\n            border-style: solid !important;\r\n            border-width: 0 0 16px 17px !important;\r\n            border-color: transparent transparent #8839E7 transparent !important;\r\n        }\r\n        .hashy-bubble-wide { width: 380px !important; max-width: 100% !important; }\r\n\r\n        .hashy-bubble-typing {\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            gap: 4px !important;\r\n            padding: 9px 14px !important;\r\n            min-width: 50px !important;\r\n        }\r\n        .hashy-bubble-typing .hashy-dot {\r\n            width: 6px !important; height: 6px !important;\r\n            border-radius: 50% !important;\r\n            background: #fff !important;\r\n            opacity: .9 !important;\r\n            animation: hashyDot 1.2s ease-in-out infinite !important;\r\n        }\r\n        \/* White bubble typing dots \u2014 purple to be visible on white bg *\/\r\n        .hashy-bubble-white.hashy-bubble-typing .hashy-dot {\r\n            background: #8839E7 !important;\r\n            opacity: .55 !important;\r\n        }\r\n        .hashy-bubble-typing .hashy-dot:nth-child(2) { animation-delay: .18s !important; }\r\n        .hashy-bubble-typing .hashy-dot:nth-child(3) { animation-delay: .36s !important; }\r\n        @keyframes hashyDot {\r\n            0%, 60%, 100% { transform: translateY(0);   opacity: .55; }\r\n            30%           { transform: translateY(-4px); opacity: 1;   }\r\n        }\r\n        \/* Typing rows are dynamically injected by JS before each real\r\n           message; remove them from the natural flow when fading out\r\n           (gives the impression the bubble morphs into the real text).\r\n           Center-align so the small typing bubble sits vertically\r\n           against the avatar instead of dropping to flex-end. *\/\r\n        .hashy-typing-row {\r\n            align-items: center !important;\r\n            transition: opacity .4s ease, transform .45s ease, max-height .45s ease !important;\r\n        }\r\n        .hashy-typing-row.is-fading {\r\n            opacity: 0 !important;\r\n            transform: translateY(-4px) !important;\r\n            max-height: 0 !important;\r\n            margin: 0 !important;\r\n            overflow: hidden !important;\r\n        }\r\n\r\n        .hashy-bubble-card { padding: 10px !important; }\r\n\r\n        \/* Sales: Bright Technology contact card *\/\r\n        .hashy-contact-card { display: flex !important; flex-direction: column !important; gap: 5px !important; width: 256px !important; }\r\n        .hashy-contact-row {\r\n            display: flex !important; align-items: center !important; gap: 8px !important;\r\n            border-bottom: 0.5px solid #d9d9d9 !important;\r\n            padding-bottom: 12px !important;\r\n            height: 57px !important;\r\n        }\r\n        .hashy-contact-logo {\r\n            width: 45px !important; height: 45px !important;\r\n            border-radius: 50% !important;\r\n            overflow: hidden !important;\r\n            flex-shrink: 0 !important;\r\n            background: #fff !important;\r\n            display: flex !important; align-items: center !important; justify-content: center !important;\r\n        }\r\n        .hashy-contact-logo img { display: block !important; width: 100% !important; height: 100% !important; object-fit: cover !important; }\r\n        .hashy-contact-meta {\r\n            flex: 1 1 auto !important;\r\n            min-width: 0 !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            justify-content: center !important;\r\n        }\r\n        .hashy-contact-name {\r\n            margin: 0 !important;\r\n            font-weight: 600 !important;\r\n            font-size: 14px !important;\r\n            color: #353535 !important;\r\n            line-height: 20px !important;\r\n            white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;\r\n        }\r\n        .hashy-contact-email {\r\n            margin: 0 !important;\r\n            font-weight: 400 !important;\r\n            font-size: 12px !important;\r\n            color: #353535 !important;\r\n            line-height: 20px !important;\r\n            white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;\r\n        }\r\n        .hashy-contact-cog {\r\n            width: 16px !important; height: 16px !important;\r\n            display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-contact-actions { display: flex !important; gap: 8px !important; padding-top: 6px !important; }\r\n        .hashy-contact-actions span {\r\n            flex: 1 1 0 !important;\r\n            min-width: 0 !important;\r\n            height: 28px !important;\r\n            background: #f6f6f6 !important;\r\n            border-radius: 4px !important;\r\n            display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n        }\r\n        .hashy-contact-actions svg { display: block !important; }\r\n\r\n        \/* Inventory: Low Stock card \u2014 Figma 5311:1473 (171px content) *\/\r\n        .hashy-stock-card {\r\n            display: flex !important; flex-direction: column !important;\r\n            gap: 8px !important;\r\n            width: 171px !important;\r\n        }\r\n        .hashy-stock-head {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            gap: 11px !important;\r\n            font-weight: 600 !important;\r\n            font-size: 14px !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-warn-icon { flex-shrink: 0 !important; }\r\n        .hashy-stock-divider { height: 0.5px !important; background: #d9d9d9 !important; }\r\n        .hashy-stock-row {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            gap: 10px !important;\r\n        }\r\n        .hashy-stock-thumb {\r\n            width: 42px !important; height: 42px !important;\r\n            border-radius: 3px !important;\r\n            border: 0.8px solid #ddd !important;\r\n            overflow: hidden !important;\r\n            flex-shrink: 0 !important;\r\n            background: #fff !important;\r\n        }\r\n        .hashy-stock-thumb img { display: block !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }\r\n        .hashy-stock-info { display: flex !important; flex-direction: column !important; gap: 3px !important; width: 119px !important; }\r\n        .hashy-stock-name {\r\n            margin: 0 !important; font-weight: 500 !important; font-size: 12.5px !important; color: #353535 !important; line-height: 1.25 !important;\r\n        }\r\n        .hashy-stock-sku {\r\n            margin: 0 !important; font-weight: 500 !important; font-size: 8px !important; color: #353535 !important; line-height: 1.4 !important;\r\n        }\r\n        .hashy-stock-progress {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 8px !important;\r\n            width: 100% !important;\r\n        }\r\n        .hashy-stock-bar {\r\n            flex: 1 1 auto !important;\r\n            min-width: 0 !important;\r\n            height: 7px !important;\r\n            border-radius: 24px !important;\r\n            background: rgba(196, 196, 196, .24) !important;\r\n            overflow: hidden !important;\r\n            position: relative !important;\r\n        }\r\n        .hashy-stock-bar span {\r\n            display: block !important;\r\n            height: 100% !important;\r\n            background: #BD1E2D !important;\r\n            border-radius: 24px !important;\r\n        }\r\n        .hashy-stock-pill {\r\n            display: inline-flex !important; align-items: center !important;\r\n            padding: 2px 4px !important;\r\n            border-radius: 2px !important;\r\n            font-weight: 500 !important;\r\n            font-size: 6px !important;\r\n            line-height: 1.4 !important;\r\n            white-space: nowrap !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-stock-pill-ok { background: #DDFCD4 !important; color: #1A8707 !important; }\r\n        .hashy-stock-pill-low {\r\n            background: #FFEBEB !important;\r\n            color: #90191C !important;\r\n            font-weight: 600 !important;\r\n            font-size: 7px !important;\r\n            padding: 1px 4px !important;\r\n        }\r\n\r\n        .hashy-check { vertical-align: -3px !important; margin-left: 3px !important; flex-shrink: 0 !important; }\r\n        .hashy-inline-icon { display: inline-flex !important; vertical-align: -3px !important; margin-right: 4px !important; }\r\n\r\n        \/* \u2500\u2500 Document card (Quotation\/Purchase order) \u2014 Figma 5298:2969\r\n           Sales \/ 5298:3099 Inventory. Bubble widened to 380px and\r\n           internal paddings\/gaps tightened so the full preview + From\/To\r\n           + attachment + CTA fit inside the 278px chat viewport\r\n           without the View Document button getting clipped. \u2500\u2500 *\/\r\n        .hashy-bubble-doc {\r\n            flex-direction: column !important;\r\n            align-items: stretch !important;\r\n            gap: 8px !important;\r\n            width: 380px !important;\r\n            padding: 9px 12px !important;\r\n        }\r\n        .hashy-doc-tag {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 4px !important;\r\n        }\r\n        .hashy-doc-tag p,\r\n        .hashy-doc-tag-text {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 13.5px !important;\r\n            line-height: 1.35 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-doc-card {\r\n            background: #FAFAFA !important;\r\n            border-radius: 2.6px !important;\r\n            padding: 6px !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 5px !important;\r\n            width: 100% !important;\r\n        }\r\n        .hashy-doc-preview {\r\n            background: #fff !important;\r\n            border: 0.7px solid rgba(0,0,0,.1) !important;\r\n            border-radius: 4.8px 4.8px 0 0 !important;\r\n            padding: 5px 6px !important;\r\n            overflow: hidden !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 2.5px !important;\r\n        }\r\n        .hashy-doc-head {\r\n            display: flex !important;\r\n            align-items: flex-start !important;\r\n            justify-content: space-between !important;\r\n            gap: 6px !important;\r\n        }\r\n        .hashy-doc-head-text { display: flex !important; flex-direction: column !important; }\r\n        .hashy-doc-title {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 10.9px !important;\r\n            line-height: 1.4 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-doc-num {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.2 !important;\r\n            color: #353535 !important;\r\n            opacity: .5 !important;\r\n        }\r\n        .hashy-doc-logo {\r\n            width: 20px !important;\r\n            height: 17px !important;\r\n            object-fit: contain !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-doc-divider {\r\n            height: 0.7px !important;\r\n            background: rgba(0,0,0,.1) !important;\r\n        }\r\n        .hashy-doc-fromto {\r\n            display: flex !important;\r\n            justify-content: space-between !important;\r\n            gap: 8px !important;\r\n        }\r\n        .hashy-doc-fromto > div {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n        }\r\n        .hashy-doc-label {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 400 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.4 !important;\r\n            color: #353535 !important;\r\n            opacity: .5 !important;\r\n        }\r\n        .hashy-doc-co {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.4 !important;\r\n            color: #2C2C2C !important;\r\n        }\r\n        .hashy-doc-addr {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.4 !important;\r\n            color: #2C2C2C !important;\r\n        }\r\n        .hashy-doc-attach {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 6px !important;\r\n            padding: 0 2px !important;\r\n        }\r\n        .hashy-doc-pdf-badge {\r\n            display: inline-flex !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-doc-pdf-badge svg { display: block !important; width: 20px !important; height: 25px !important; }\r\n        .hashy-doc-attach-meta { display: flex !important; flex-direction: column !important; min-width: 0 !important; }\r\n        .hashy-doc-file {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10px !important;\r\n            line-height: 1.4 !important;\r\n            color: #353535 !important;\r\n            white-space: nowrap !important;\r\n            overflow: hidden !important;\r\n            text-overflow: ellipsis !important;\r\n        }\r\n        .hashy-doc-size {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10px !important;\r\n            line-height: 1.4 !important;\r\n            color: #ABAAAA !important;\r\n        }\r\n        .hashy-doc-cta {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            background: #8839E7 !important;\r\n            color: #fff !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 10px !important;\r\n            line-height: 1.4 !important;\r\n            padding: 5px 8px !important;\r\n            border-radius: 3.4px !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 Accounting: XLSX Financial Report card \u2014 Figma 5316:1700 \u2500\u2500 *\/\r\n        .hashy-bubble-xlsx {\r\n            flex-direction: column !important;\r\n            align-items: stretch !important;\r\n            gap: 8px !important;\r\n            width: 280px !important;\r\n            padding: 10px !important;\r\n        }\r\n        .hashy-xlsx-row {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 10px !important;\r\n        }\r\n        .hashy-xlsx-icon {\r\n            display: inline-flex !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-xlsx-icon svg { display: block !important; width: 24px !important; height: 28px !important; }\r\n        .hashy-xlsx-meta { display: flex !important; flex-direction: column !important; min-width: 0 !important; }\r\n        .hashy-xlsx-name {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 13px !important;\r\n            line-height: 1.3 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-xlsx-size {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10.5px !important;\r\n            line-height: 1.4 !important;\r\n            color: #888 !important;\r\n        }\r\n        .hashy-xlsx-actions { display: flex !important; gap: 8px !important; }\r\n        .hashy-xlsx-actions span {\r\n            flex: 1 1 0 !important;\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            background: #F1F1F1 !important;\r\n            color: #353535 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 12px !important;\r\n            padding: 6px 10px !important;\r\n            border-radius: 4px !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 HR: Attendance Report card \u2014 Figma 5287:1171 \u2500\u2500 *\/\r\n        .hashy-bubble-attendance {\r\n            flex-direction: column !important;\r\n            align-items: stretch !important;\r\n            gap: 10px !important;\r\n            width: 270px !important;\r\n            padding: 10px 12px !important;\r\n        }\r\n        .hashy-att-head {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n        }\r\n        .hashy-att-title {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 13px !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-att-month {\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            gap: 4px !important;\r\n            background: #F1F1F1 !important;\r\n            color: #353535 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10px !important;\r\n            padding: 3px 8px !important;\r\n            border-radius: 4px !important;\r\n        }\r\n        .hashy-att-month svg { display: inline-block !important; }\r\n        .hashy-att-body {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 12px !important;\r\n            padding: 4px 0 !important;\r\n        }\r\n        .hashy-donut {\r\n            position: relative !important;\r\n            width: 80px !important;\r\n            height: 80px !important;\r\n            border-radius: 50% !important;\r\n            background: conic-gradient(\r\n                #8839E7 0deg 315deg,        \/* 21\/24 = 87.5% = 315deg \u2014 Present *\/\r\n                #FEA110 315deg 345deg,      \/* 2\/24  = 8.3%  = 30deg  \u2014 Annual Leave *\/\r\n                #BD1E2D 345deg 360deg       \/* 1\/24  = 4.2%  = 15deg  \u2014 Sick Leave *\/\r\n            ) !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-donut::before {\r\n            content: \"\" !important;\r\n            position: absolute !important;\r\n            inset: 12px !important;\r\n            background: #fff !important;\r\n            border-radius: 50% !important;\r\n        }\r\n        .hashy-donut-center {\r\n            position: absolute !important;\r\n            inset: 0 !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            text-align: center !important;\r\n            z-index: 1 !important;\r\n        }\r\n        .hashy-donut-num {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 18px !important;\r\n            line-height: 1 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-donut-label {\r\n            margin: 1px 0 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 7.5px !important;\r\n            line-height: 1.2 !important;\r\n            color: #888 !important;\r\n        }\r\n        .hashy-att-legend {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 6px !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-size: 10.5px !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-att-legend > div {\r\n            display: flex !important;\r\n            align-items: flex-start !important;\r\n            gap: 6px !important;\r\n            line-height: 1.25 !important;\r\n        }\r\n        .hashy-att-legend strong { font-weight: 700 !important; font-size: 11px !important; }\r\n        .hashy-att-dot {\r\n            width: 10px !important; height: 10px !important;\r\n            border-radius: 2px !important;\r\n            margin-top: 2px !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-att-dot-1 { background: #8839E7 !important; }\r\n        .hashy-att-dot-2 { background: #FEA110 !important; }\r\n        .hashy-att-dot-3 { background: #BD1E2D !important; }\r\n\r\n        \/* \u2500\u2500 Mobile (< 480px container): unscale + stack vertically.\r\n           Layout order: text on TOP, chat card on BOTTOM. Text\/button\r\n           rendered center-aligned. Above 480 the desktop side-by-side\r\n           layout stays \u2014 it just scales down via transform. \u2500\u2500\u2500 *\/\r\n        @container hashybnr (max-width: 479.99px) {\r\n            .hashy-banner-frame {\r\n                aspect-ratio: auto !important;\r\n                border-radius: 14px !important;\r\n            }\r\n            .hashy-banner-stage {\r\n                position: static !important;\r\n                width: 100% !important;\r\n                height: auto !important;\r\n                transform: none !important;\r\n            }\r\n            .hashy-card-deco-1, .hashy-card-deco-2 { display: none !important; }\r\n            .hashy-card-deco-3 { right: 12px !important; top: 0 !important; width: 24px !important; height: 70px !important; }\r\n            .hashy-card-bg-glow { left: 50% !important; transform: translateX(-50%) !important; width: 90% !important; }\r\n\r\n            .hashy-card-inner {\r\n                flex-direction: column !important;        \/* text first, card second *\/\r\n                align-items: center !important;\r\n                text-align: center !important;\r\n                gap: 28px !important;\r\n                padding: 32px 22px !important;\r\n                height: auto !important;\r\n            }\r\n            .hashy-card-left {\r\n                width: 100% !important;\r\n                max-width: 460px !important;\r\n                gap: 24px !important;\r\n                align-items: center !important;           \/* center logo, title, CTA *\/\r\n                text-align: center !important;\r\n            }\r\n            .hashy-card-logo { height: 24px !important; }\r\n            .hashy-card-text-block {\r\n                gap: 20px !important;\r\n                align-items: center !important;\r\n                text-align: center !important;\r\n                width: 100% !important;\r\n            }\r\n            .hashy-card-title { font-size: 22px !important; line-height: 1.3 !important; text-align: center !important; }\r\n            .hashy-card-cta { font-size: 15px !important; padding: 11px 28px !important; align-self: center !important; }\r\n            .hashy-card-cta-spark svg { width: 16px !important; height: 17px !important; }\r\n\r\n            .hashy-card-right {\r\n                width: 100% !important;\r\n                max-width: 420px !important;\r\n                padding-bottom: 0 !important;\r\n                text-align: left !important;     \/* reset center inheritance\r\n                                                    so chat content stays\r\n                                                    left-aligned on mobile *\/\r\n            }\r\n            .hashy-card-chat-meta,\r\n            .hashy-card-chat-name,\r\n            .hashy-card-chat-role,\r\n            .hashy-bubble,\r\n            .hashy-stock-card,\r\n            .hashy-contact-card,\r\n            .hashy-doc-card { text-align: left !important; }\r\n            .hashy-banner-wrap.hashy-banner-wrap img.hashy-card-mascot,\r\n            .hashy-banner-stage.hashy-banner-stage img.hashy-card-mascot,\r\n            .hashy-card-mascot { width: 96px !important; height: auto !important; margin: 0 0 -22px !important; }\r\n            .hashy-card-chat-window { height: 232px !important; }\r\n            .hashy-card-chat-name { font-size: 14px !important; }\r\n            .hashy-card-chat-role { font-size: 10.5px !important; }\r\n            .hashy-card-chat-avatar { width: 32px !important; height: 32px !important; }\r\n            .hashy-card-chat-avatar img { width: 28px !important; height: 28px !important; }\r\n            .hashy-bubble { font-size: 12.5px !important; padding: 8px 10px !important; max-width: 240px !important; }\r\n            .hashy-bubble-wide { width: auto !important; max-width: 260px !important; }\r\n            .hashy-bubble-doc { width: auto !important; max-width: 280px !important; padding: 8px 10px !important; }\r\n            .hashy-bubble-xlsx { width: auto !important; max-width: 260px !important; }\r\n            .hashy-bubble-attendance { width: auto !important; max-width: 260px !important; }\r\n            .hashy-msg-avatar { width: 30px !important; height: 30px !important; }\r\n            .hashy-msg, .hashy-msg.is-outgoing { padding-left: 14px !important; padding-right: 14px !important; }\r\n            .hashy-card-chat-stream { gap: 14px !important; }\r\n            .hashy-card-chat-dots span { width: 8px !important; height: 8px !important; }\r\n            .hashy-contact-card { width: 220px !important; }\r\n            .hashy-stock-card { width: 210px !important; }\r\n        }\r\n\r\n        @media (prefers-reduced-motion: reduce) {\r\n            .hashy-card-deco,\r\n            .hashy-card-mascot,\r\n            .hashy-bubble-typing .hashy-dot { animation: none !important; }\r\n            .hashy-card-cta:hover { transform: none !important; filter: none !important; }\r\n            .hashy-msg, .hashy-card-chat-stream { transition: opacity .2s ease !important; transform: none !important; }\r\n        }\r\n    <\/style>\r\n\r\n    <script>\r\n        \/* Sequential message reveal with chat-loading indicator.\r\n           For each real message the JS injects a temporary typing bubble\r\n           in the matching side, animates it for ~1100ms, then fades it\r\n           out and reveals the actual bubble. The stream glides upward\r\n           when the new content would push past the visible body. *\/\r\n        (function () {\r\n            var TYPING_MS = 1100;   \/\/ how long the dots pulse before bubble appears\r\n            var FADE_MS   = 320;    \/\/ typing-row collapse duration\r\n            var GAP_MS    = 1700;   \/\/ pause after bubble is shown, before next typing\r\n            var LOOP_PAUSE = 2500;  \/\/ pause at end of conversation before restart loop\r\n\r\n            function startHashyChat(stream) {\r\n                if (!stream || stream.dataset.hashyChatStarted === \"1\") return;\r\n                stream.dataset.hashyChatStarted = \"1\";\r\n                var body = stream.parentElement;\r\n                var msgs = Array.prototype.slice.call(stream.querySelectorAll(\".hashy-msg\"));\r\n                if (!msgs.length) return;\r\n\r\n                var avatarHashy = stream.dataset.avatarHashy || \"\";\r\n                var avatarUser  = stream.dataset.avatarUser  || \"\";\r\n\r\n                function makeTyping(isIncoming) {\r\n                    var row = document.createElement(\"div\");\r\n                    row.className = \"hashy-msg hashy-typing-row \" + (isIncoming ? \"is-incoming\" : \"is-outgoing\");\r\n                    var bubble =\r\n                        '<div class=\"hashy-bubble hashy-bubble-typing ' +\r\n                        (isIncoming ? 'hashy-bubble-white' : 'hashy-bubble-purple') +\r\n                        '\"><span class=\"hashy-dot\"><\/span><span class=\"hashy-dot\"><\/span><span class=\"hashy-dot\"><\/span><\/div>';\r\n                    var avatar = isIncoming\r\n                        ? '<img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"' + avatarHashy + '\" alt=\"\" width=\"40\" height=\"40\">'\r\n                        : '<img decoding=\"async\" class=\"hashy-msg-avatar hashy-msg-avatar-bordered\" src=\"' + avatarUser + '\" alt=\"\" width=\"40\" height=\"40\">';\r\n                    row.innerHTML = isIncoming ? avatar + bubble : bubble + avatar;\r\n                    return row;\r\n                }\r\n\r\n                function scrollIntoView(node) {\r\n                    requestAnimationFrame(function () {\r\n                        requestAnimationFrame(function () {\r\n                            var viewportH = body.clientHeight;\r\n                            var nodeBottom = node.offsetTop + node.offsetHeight;\r\n                            var currentY = parseFloat(\r\n                                (stream.style.transform.match(\/-?\\d+(?:\\.\\d+)?\/) || [0])[0]\r\n                            );\r\n                            var visibleBottom = -currentY + viewportH;\r\n                            if (nodeBottom > visibleBottom) {\r\n                                stream.style.transform = \"translateY(\" + (-node.offsetTop) + \"px)\";\r\n                            }\r\n                        });\r\n                    });\r\n                }\r\n\r\n                function reset() {\r\n                    stream.classList.add(\"no-transition\");\r\n                    msgs.forEach(function (m) { m.classList.remove(\"is-revealed\"); });\r\n                    Array.prototype.slice.call(stream.querySelectorAll(\".hashy-typing-row\")).forEach(function (n) {\r\n                        if (n.parentNode) n.parentNode.removeChild(n);\r\n                    });\r\n                    stream.style.transform = \"translateY(0)\";\r\n                    void stream.offsetWidth;\r\n                    stream.classList.remove(\"no-transition\");\r\n                }\r\n\r\n                var i = 0;\r\n                reset();\r\n\r\n                function tick() {\r\n                    if (i >= msgs.length) {\r\n                        setTimeout(function () { reset(); i = 0; setTimeout(tick, 800); }, LOOP_PAUSE);\r\n                        return;\r\n                    }\r\n                    var msg = msgs[i];\r\n                    var isIncoming = msg.classList.contains(\"is-incoming\");\r\n                    var typing = makeTyping(isIncoming);\r\n                    msg.parentNode.insertBefore(typing, msg);\r\n\r\n                    \/\/ Reveal typing on next frame for smooth fade-in\r\n                    requestAnimationFrame(function () {\r\n                        requestAnimationFrame(function () {\r\n                            typing.classList.add(\"is-revealed\");\r\n                            scrollIntoView(typing);\r\n                        });\r\n                    });\r\n\r\n                    setTimeout(function () {\r\n                        \/\/ Fade typing out, then reveal real message in its slot\r\n                        typing.classList.add(\"is-fading\");\r\n                        setTimeout(function () {\r\n                            if (typing.parentNode) typing.parentNode.removeChild(typing);\r\n                            msg.classList.add(\"is-revealed\");\r\n                            scrollIntoView(msg);\r\n                            i++;\r\n                            setTimeout(tick, GAP_MS);\r\n                        }, FADE_MS);\r\n                    }, TYPING_MS);\r\n                }\r\n\r\n                tick();\r\n            }\r\n\r\n            document.addEventListener(\"DOMContentLoaded\", function () {\r\n                document.querySelectorAll(\".hashy-card-chat-stream\").forEach(startHashyChat);\r\n            });\r\n        })();\r\n    <\/script><\/p>\n<h2 data-section-id=\"16rlx0o\" data-start=\"295\" data-end=\"335\"><span role=\"text\"><strong data-start=\"298\" data-end=\"335\">How 3PL Works in the Supply Chain<\/strong><\/span><\/h2>\n<p data-start=\"337\" data-end=\"598\">A 3PL acts as the operational link between suppliers, warehouses, carriers, and customers. Instead of managing logistics internally, businesses outsource fulfilment activities to a provider that handles storage, shipping, and inventory movement on their behalf.<\/p>\n<p data-start=\"600\" data-end=\"706\">The process typically follows a structured workflow from receiving inventory to managing customer returns.<\/p>\n<h3 data-section-id=\"fft3r1\" data-start=\"708\" data-end=\"734\"><strong>1. Receiving inventory<\/strong><\/h3>\n<p data-start=\"736\" data-end=\"884\">The 3PL receives products from manufacturers or suppliers and stores them in its warehouse. Inventory is then recorded and organised for fulfilment.<\/p>\n<h3 data-section-id=\"w4erc1\" data-start=\"886\" data-end=\"911\"><strong>2. System integration<\/strong><\/h3>\n<p data-start=\"913\" data-end=\"1102\">The provider connects its warehouse management system (WMS) with the business&#8217;s e-commerce platform, marketplace, or ERP system. This allows orders and inventory data to sync automatically.<\/p>\n<h3 data-section-id=\"15s6law\" data-start=\"1104\" data-end=\"1130\"><strong>3. Picking and packing<\/strong><\/h3>\n<p data-start=\"1132\" data-end=\"1282\">When a customer places an order, warehouse staff pick the required items, pack them according to business requirements, and prepare them for dispatch.<\/p>\n<h3 data-section-id=\"h39p5\" data-start=\"1284\" data-end=\"1312\"><strong>4. Shipping and delivery<\/strong><\/h3>\n<p data-start=\"1314\" data-end=\"1470\">Orders are shipped through the 3PL&#8217;s carrier network. Customers receive tracking information while businesses maintain visibility over delivery performance.<\/p>\n<h3 data-section-id=\"1rr6vpr\" data-start=\"1472\" data-end=\"1497\"><strong>5. Returns processing<\/strong><\/h3>\n<p data-start=\"1499\" data-end=\"1680\">Returned products are inspected and either restocked, repaired, or disposed of based on predefined return policies. This helps maintain inventory accuracy and customer satisfaction.<\/p>\n<h2 id=\"core-functions-of-a-3pl-provider\"><strong>Core Functions of a 3PL Provider<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-2231\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-scaled.webp\" alt=\"\" width=\"2560\" height=\"1429\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-scaled.webp 2560w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-300x167.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-1024x572.webp 1024w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-768x429.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-1536x857.webp 1536w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-2048x1143.webp 2048w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-753x420.webp 753w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-150x84.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-696x388.webp 696w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-1068x596.webp 1068w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-6-1920x1072.webp 1920w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p data-start=\"96\" data-end=\"281\">A 3PL delivers practical logistics support that businesses can scale as needed. Each function works independently, so companies only pay for services that match their operational goals.<\/p>\n<h3 id=\"warehousing\"><strong>1. Warehousing<\/strong><\/h3>\n<p data-start=\"309\" data-end=\"558\">Warehousing forms the base of most 3PL services. Providers store goods in facilities designed for different product needs, from general stock to temperature-sensitive items. This setup helps Australian businesses manage stock safely and efficiently.<\/p>\n<p data-start=\"560\" data-end=\"793\">3PL warehouses use secure layouts, controlled access, and constant monitoring. Teams adjust storage layouts to handle seasonal spikes and fast-moving products. Businesses avoid long leases, facility upkeep, and rising property costs.<\/p>\n<h3 id=\"inventory-management-function\"><strong>2. Inventory Management<\/strong><\/h3>\n<p data-start=\"830\" data-end=\"1011\">A 3PL takes full control of inventory accuracy and visibility. Systems track stock movement, expiry dates, and slow-moving items in real time. This supports smarter stock decisions.<\/p>\n<p data-start=\"1013\" data-end=\"1230\">Regular cycle counts and audits keep records aligned with physical stock. Accurate inventory reduces fulfilment errors and improves cash flow. Businesses gain reliable data without managing complex systems themselves.<\/p>\n<h3 id=\"order-fulfilment-function\"><strong>3. Order Fulfilment<\/strong><\/h3>\n<p data-start=\"1263\" data-end=\"1448\"><a href=\"https:\/\/www.hashmicro.com\/au\/blog\/order-fulfillment\/\">Order processing<\/a> directly affects customer experience. 3PL companies focus on speed, accuracy, and consistent packing standards. Automation helps process high order volumes efficiently.<\/p>\n<p data-start=\"1450\" data-end=\"1645\">Providers handle both B2C and B2B fulfilment models. They adapt workflows for single-item orders or palletised shipments. This flexibility supports online brands and wholesale distribution alike.<\/p>\n<h3 id=\"transportation-and-shipping\"><strong>4. Transportation and Shipping<\/strong><\/h3>\n<p data-start=\"1689\" data-end=\"1875\">3PLs plan and manage goods movement across road, air, sea, and rail using a <a href=\"https:\/\/www.hashmicro.com\/au\/blog\/transportation-management-software\/\">platform for shipment management<\/a>. They balance cost and delivery speed to meet service expectations. High shipping volumes unlock better carrier rates.<\/p>\n<p data-start=\"1877\" data-end=\"2056\">Freight audits ensure accurate billing and cost control. Providers also manage consolidation and international compliance. This reduces risk in domestic and cross-border shipping.<\/p>\n<h3 id=\"returns-management-function\"><strong>5. Returns Management<\/strong><\/h3>\n<p data-start=\"2091\" data-end=\"2260\">Returns management focuses on recovering value and protecting brand trust. 3PLs inspect returned items based on clear rules. Saleable stock returns to inventory quickly.<\/p>\n<p data-start=\"2262\" data-end=\"2428\">Return data highlights product issues and customer behaviour. Businesses use these insights to reduce future returns. This improves margins and customer satisfaction.<\/p>\n<p><strong><span style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">6. Value-Added Services<\/span><\/strong><\/p>\n<p data-start=\"2465\" data-end=\"2627\">Value-added services customise products before delivery. Kitting combines multiple SKUs into ready-to-ship bundles. This suits promotions and subscription models.<\/p>\n<p data-start=\"2629\" data-end=\"2793\">Labelling and light customisation meet retail and branding needs. Businesses maintain personalisation without extra labour. This keeps operations lean and flexible.<\/p>\n<h3 id=\"planning-and-logistics-strategy\"><strong>7. Planning and Logistics Strategy<\/strong><\/h3>\n<p data-start=\"2841\" data-end=\"2992\">Advanced 3PLs support long-term logistics planning. They analyse data to design resilient supply chains. This helps businesses prepare for disruptions.<\/p>\n<p data-start=\"2994\" data-end=\"3161\">Providers advise on warehouse locations and network design. Strategic planning shifts logistics from reactive to proactive. Businesses gain stability and cost control.<\/p>\n<h2 id=\"types-of-3pl-providers\"><strong>Types of 3PL Providers<\/strong><\/h2>\n<p><span data-sheets-root=\"1\"><style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            Switching to a 3PL completely transformed our delivery speed across Australia. Orders ship faster, returns are easier, and our team can finally focus on growth.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Chris O&#039;Donnell, Lead Project Manager<\/em>\r\n    <\/p>\r\n<\/div><\/span><\/p>\n<p data-start=\"3199\" data-end=\"3323\">3PL providers differ by focus and capability. Understanding these types helps businesses choose the right logistics partner.<\/p>\n<h3 id=\"transportation-based-3pl\"><strong>Transportation-Based 3PL<\/strong><\/h3>\n<p data-start=\"3364\" data-end=\"3525\">Transportation-based 3PLs focus on moving goods efficiently. Some own fleets, while others manage carrier networks. Both models offer flexible freight solutions.<\/p>\n<div data-test-render-count=\"1\">\n<div class=\"group\">\n<div class=\"contents\">\n<div class=\"group relative relative pb-3\" data-is-streaming=\"false\">\n<div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\">\n<div>\n<div class=\"grid grid-rows-[auto_auto] min-w-0\">\n<div class=\"row-start-2 col-start-1 relative grid isolate min-w-0\">\n<div class=\"row-start-1 col-start-1 relative z-[2] min-w-0\">\n<div>\n<div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 standard-markdown\">\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><a href=\"https:\/\/www.hashmicro.com\/au\/blog\/fleet-optimization\/\">Fleet performance<\/a> here is vital in reducing fuel costs, minimising vehicle downtime, and extending asset lifespan by tracking driver behaviour, maintenance schedules, and route efficiency in real time.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3527\" data-end=\"3727\">These providers handle routing, consolidation, and freight coordination. They suit businesses with internal warehousing but complex shipping needs. Strong carrier access improves delivery reliability.<\/p>\n<h3 id=\"warehouse-based-3pl\"><strong>Warehouse-Based 3PL<\/strong><\/h3>\n<p data-start=\"3763\" data-end=\"3936\">Warehouse-based 3PLs specialise in storage and fulfilment. Their value lies in efficient picking, packing, and inventory handling. Technology supports fast order turnaround.<\/p>\n<p data-start=\"3938\" data-end=\"4112\">These providers suit growing e-commerce businesses. Storage space scales during peak seasons and contracts during slower periods. Brands focus on sales, not warehouse labour.<\/p>\n<h3 id=\"financial-and-information-based-3pl\"><strong>Financial and Information-Based 3PL<\/strong><\/h3>\n<p data-start=\"4164\" data-end=\"4306\">This type focuses on data, finance, and visibility. They manage billing, audits, and supply chain analytics. No physical handling takes place.<\/p>\n<p data-start=\"4308\" data-end=\"4477\">Large companies use these providers to control costs and performance. They improve transparency across complex logistics networks. This supports smarter decision-making.<\/p>\n<h3 id=\"full-service-3pl\"><strong>Full-Service 3PL Providers<\/strong><\/h3>\n<p data-start=\"4520\" data-end=\"4663\">Full-service 3PLs manage logistics end to end. They combine warehousing, transport, and systems under one provider. This simplifies operations.<\/p>\n<p data-start=\"4665\" data-end=\"4837\">Businesses gain a single point of control and real-time visibility. Fewer handovers reduce delays and errors. This model suits companies seeking full logistics outsourcing.<\/p>\n<h2 id=\"3pl-vs-other-models\"><strong>3PL vs Other Logistics Models<\/strong><\/h2>\n<p data-start=\"4882\" data-end=\"5017\">Different logistics models offer varying levels of control and outsourcing. Comparing them helps businesses choose the right structure.<\/p>\n<ul>\n<li id=\"3pl-vs-4pl\"><strong>3PL vs 4PL, <\/strong>A 3PL executes daily logistics tasks like storage and shipping. A 4PL manages the entire supply chain strategy and oversees multiple providers. Businesses move to 4PL when logistics complexity grows beyond internal control.<\/li>\n<li id=\"3pl-vs-freight-forwarder\"><strong>3PL vs Freight Forwarder, <\/strong>Freight forwarders specialise in international cargo movement and customs handling. A 3PL manages warehousing and order fulfilment after goods arrive. Forwarders move pallets, while 3PLs ship individual orders.<\/li>\n<li id=\"in-house-logistics-vs-3pl\"><strong>In-House Logistics vs 3PL, <\/strong>In-house logistics gives full control but demands high investment and ongoing management. A 3PL reduces overhead and scales faster. Many Australian businesses choose 3PL to stay agile and competitive.<\/li>\n<\/ul>\n<h2 id=\"industry-specific-use-cases-for-3pl\"><strong>Industry-Specific Use Cases for 3PL Partnerships<\/strong><\/h2>\n<p data-start=\"113\" data-end=\"241\">Different industries face different logistics pressures. 3PL providers adapt their services to solve sector-specific challenges.<\/p>\n<h3><strong>E-commerce and Direct-to-Consumer (DTC) Retail<\/strong><\/h3>\n<p data-start=\"304\" data-end=\"573\">E-commerce brands rely on 3PLs to meet fast delivery expectations across Australia. Providers place stock in multiple fulfilment centres to cut delivery times and costs. They also handle peak sales periods and high return volumes without disrupting customer experience.<\/p>\n<h3><strong>Healthcare and Pharmaceuticals<\/strong><\/h3>\n<p data-start=\"620\" data-end=\"849\">Healthcare logistics demand strict control and compliance. Medical-focused 3PLs manage cold storage, temperature monitoring, and regulated transport. They also track batches and expiry dates to support recalls and patient safety.<\/p>\n<h3><strong>Manufacturing and Automotive<\/strong><\/h3>\n<p data-start=\"894\" data-end=\"1119\">Manufacturers use 3PLs to keep production lines moving. Providers support inbound logistics and Just-In-Time delivery to reduce storage needs. They also manage oversized freight and specialised transport for heavy components.<\/p>\n<h2 id=\"step-by-step-guide-to-implementing-a-3pl-solution\"><strong>A Step-by-Step Guide to Implementing a 3PL Solution<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-2233\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL2.webp\" alt=\"\" width=\"800\" height=\"400\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL2.webp 800w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL2-300x150.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL2-768x384.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL2-150x75.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL2-696x348.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p data-start=\"1186\" data-end=\"1313\">Moving to a 3PL requires planning and clear execution. A structured rollout helps avoid disruption and protects service levels.<\/p>\n<h3><strong>Step 1: Internal Needs Assessment and Goal Setting<\/strong><\/h3>\n<p data-start=\"1380\" data-end=\"1594\">Start by reviewing order volumes, SKUs, shipping zones, and current bottlenecks. Define clear goals such as faster delivery or lower fulfilment costs. These targets guide provider selection and success measurement.<\/p>\n<h3><strong>Step 2: Vendor Selection and Vetting<\/strong><\/h3>\n<p data-start=\"1647\" data-end=\"1830\">Shortlist 3PL companies based on capability, location, and experience. Compare pricing, systems, and operational fit. Site visits help confirm service quality and warehouse standards.<\/p>\n<h3><strong>Step 3: Technology and Systems Integration<\/strong><\/h3>\n<p data-start=\"1889\" data-end=\"2069\">Integrate your sales platforms or ERP system with the 3PL\u2019s warehouse software to keep data updated in real time and reduce errors. The 3PL\u2019s WMS should sync inventory, orders, fulfilment status, and returns automatically to ensure accurate stock and order tracking.<\/p>\n<h3><strong>Step 4: Pilot Testing and Inventory Transfer<\/strong><\/h3>\n<p data-start=\"2130\" data-end=\"2282\">Begin with a pilot using key SKUs. Test receiving, picking, packing, and shipping before scaling. Move inventory in phases to maintain order continuity.<\/p>\n<h3><strong>Step 5: Continuous Monitoring and Optimization<\/strong><\/h3>\n<p data-start=\"2345\" data-end=\"2515\">Track performance against agreed KPIs after launch. Hold regular reviews to adjust forecasts and processes. Ongoing optimisation keeps costs down and service levels high.<\/p>\n<h2 id=\"common-pitfalls-to-avoid-when-outsourcing-to-a-3pl\"><strong>Common Pitfalls to Avoid When Outsourcing to a 3PL<\/strong><\/h2>\n<p data-start=\"2581\" data-end=\"2712\">Outsourcing works best with clear controls and expectations. Avoid these common mistakes to protect performance and customer trust.<\/p>\n<p data-start=\"2714\" data-end=\"2885\">Inadequate SLAs create risk when expectations are unclear. Contracts should define accuracy, cutoff times, and acceptable error rates. Strong SLAs protect service quality.<\/p>\n<p data-start=\"2887\" data-end=\"3032\">Integration often takes longer than expected. System mismatches can delay launches and disrupt orders. Plan extra time and resources for testing.<\/p>\n<p data-start=\"3034\" data-end=\"3188\">Choosing the cheapest option often backfires. Low headline rates may hide higher storage or shipping fees. Poor service costs more through lost customers.<\/p>\n<p data-start=\"3190\" data-end=\"3356\">Outsourcing does not remove accountability. Brands must still monitor inventory, shipping quality, and customer feedback. Active oversight keeps standards consistent.<\/p>\n<h2 id=\"advanced-3pl-practices-shaping-the-future\"><strong>Advanced 3PL Practices Shaping the Future<\/strong><\/h2>\n<p data-start=\"3413\" data-end=\"3553\">Leading 3PL companies invest in technology to improve speed, accuracy, and resilience. These innovations are reshaping logistics operations.<\/p>\n<h3 data-section-id=\"i7f8r3\" data-start=\"3560\" data-end=\"3616\"><span role=\"text\"><strong data-start=\"3564\" data-end=\"3616\">Artificial Intelligence and Predictive Analytics<\/strong><\/span><\/h3>\n<p data-start=\"3618\" data-end=\"3778\">3PLs use AI to forecast demand and position stock in advance. Predictive models reduce stockouts and excess inventory. Businesses gain better planning accuracy.<\/p>\n<h3 data-section-id=\"1dyspii\" data-start=\"3785\" data-end=\"3826\"><span role=\"text\"><strong data-start=\"3789\" data-end=\"3826\">Robotics and Warehouse Automation<\/strong><\/span><\/h3>\n<p data-start=\"3828\" data-end=\"3989\">Automation speeds up fulfilment and reduces manual handling. Robots move goods while staff focus on accuracy and oversight. High throughput supports peak demand.<\/p>\n<h3 data-section-id=\"1ggu6zs\" data-start=\"3996\" data-end=\"4035\"><span role=\"text\"><strong data-start=\"4000\" data-end=\"4035\">Sustainable and Green Logistics<\/strong><\/span><\/h3>\n<p data-start=\"4037\" data-end=\"4238\">3PLs now prioritise lower emissions and waste reduction. Route optimisation, electric vehicles, and eco-friendly packaging support sustainability goals. Carbon tracking adds transparency for customers.<\/p>\n<h2 data-section-id=\"3sdjfn\" data-start=\"367\" data-end=\"410\"><span role=\"text\"><strong data-start=\"370\" data-end=\"410\">How Much Does 3PL Cost in Australia?<\/strong><\/span><\/h2>\n<p data-start=\"412\" data-end=\"635\">3PL pricing in Australia varies depending on storage requirements, order volume, shipping activity, and service complexity. Most providers charge separate fees for warehousing, fulfilment, receiving, and system integration.<\/p>\n<p data-start=\"637\" data-end=\"661\">Common 3PL fees include:<\/p>\n<ul data-start=\"663\" data-end=\"1034\">\n<li data-section-id=\"daz06y\" data-start=\"663\" data-end=\"746\"><strong data-start=\"665\" data-end=\"695\">Setup and integration fee:<\/strong> One-time onboarding and system configuration cost.<\/li>\n<li data-section-id=\"15jgplv\" data-start=\"747\" data-end=\"825\"><strong data-start=\"749\" data-end=\"767\">Receiving fee:<\/strong> Charged per pallet, carton, or hourly receiving activity.<\/li>\n<li data-section-id=\"12flz1n\" data-start=\"826\" data-end=\"927\"><strong data-start=\"828\" data-end=\"844\">Storage fee:<\/strong> Charged based on warehouse space usage, often per pallet or cubic metre per month.<\/li>\n<li data-section-id=\"n3osb1\" data-start=\"928\" data-end=\"1034\"><strong data-start=\"930\" data-end=\"952\">Pick and pack fee:<\/strong> A fulfilment fee charged per order, with additional charges for individual items.<\/li>\n<\/ul>\n<p data-start=\"1036\" data-end=\"1316\">For businesses processing around 1,000 orders per month, 3PL costs often range between AUD $7,000 and $8,500, depending on storage, shipping volume, and service requirements. In many cases, outsourcing is more cost-effective than operating a private warehouse and fulfilment team.<\/p>\n<h2 data-section-id=\"9dt57q\" data-start=\"84\" data-end=\"101\"><span role=\"text\"><strong data-start=\"87\" data-end=\"101\">Conclusion<\/strong><\/span><\/h2>\n<p data-start=\"103\" data-end=\"383\">Third-Party Logistics has become a practical growth lever for Australian businesses that need speed, flexibility, and cost control. By outsourcing logistics to experienced providers, companies can simplify operations while improving delivery performance and customer satisfaction.<\/p>\n<p data-start=\"385\" data-end=\"650\">Whether you run an e-commerce brand, manufacturer, or growing retailer, the right 3PL partner helps you scale without heavy upfront investment.<\/p>\n<p data-start=\"385\" data-end=\"650\">If you are considering this move, you can <a href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/\">get free consultation<\/a> with us\u00a0to explore the best 3PL setup for your business.<\/p>\n<p data-start=\"385\" data-end=\"650\"><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/?medium=free-product-tour\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/Free-Product-Tour-resized.webp\" alt=\"Free Demo\"><\/a><\/span><\/p>\n<h2><strong>Frequently Asked Questions About 3PL<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details open=\"open\">\n<summary><strong data-start=\"930\" data-end=\"961\">What does a 3PL company do?<\/strong><\/summary>\n<p data-start=\"930\" data-end=\"1129\">A 3PL company manages logistics tasks such as warehousing, inventory control, fulfilment, shipping, and returns. This allows businesses to focus on sales and growth.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong data-start=\"1131\" data-end=\"1183\">Is 3PL suitable for small Australian businesses?<\/strong><\/summary>\n<p data-start=\"1131\" data-end=\"1307\">Yes. Many 3PL providers offer flexible pricing and scalable services, making them ideal for small and growing businesses.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong data-start=\"1309\" data-end=\"1361\">How is a 3PL different from a freight forwarder?<\/strong><\/summary>\n<p data-start=\"1309\" data-end=\"1500\">A freight forwarder focuses on international shipping. A 3PL handles warehousing, fulfilment, and last-mile delivery after goods arrive.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>Can a 3PL integrate with my e-commerce platform?<br \/>\n<\/strong><\/summary>\n<p data-start=\"1502\" data-end=\"1684\">Most modern 3PLs integrate with platforms like Shopify, WooCommerce, and ERP systems to sync orders and inventory in real time.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong data-start=\"1686\" data-end=\"1730\">Does using a 3PL reduce logistics costs?<\/strong><\/summary>\n<p data-start=\"1686\" data-end=\"1849\">In many cases, yes. Businesses save on labour, storage, technology, and carrier rates through shared infrastructure.<\/p>\n<p>&nbsp;<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What does a 3PL company do?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A 3PL company manages logistics tasks such as warehousing, inventory control, fulfilment, shipping, and returns. This allows businesses to focus on sales and growth.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Is 3PL suitable for small Australian businesses?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Yes. Many 3PL providers offer flexible pricing and scalable services, making them ideal for small and growing businesses.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How is a 3PL different from a freight forwarder?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A freight forwarder focuses on international shipping. A 3PL handles warehousing, fulfilment, and last-mile delivery after goods arrive.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Can a 3PL integrate with my e-commerce platform?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Most modern 3PLs integrate with platforms like Shopify, WooCommerce, and ERP systems to sync orders and inventory in real time.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Does using a 3PL reduce logistics costs?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"In many cases, yes. Businesses save on labour, storage, technology, and carrier rates through shared infrastructure.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In today\u2019s fast-moving global market, supply chain efficiency directly shapes customer satisfaction and business growth. Australian customers expect fast delivery, clear tracking, and simple returns. Meeting these expectations puts serious pressure on in-house logistics teams. Running warehousing, inventory, fulfilment, and transport takes major investment and specialist skills. For growing Australian businesses, managing logistics internally often [&hellip;]<\/p>\n","protected":false},"author":55,"featured_media":2232,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[89],"tags":[215,216],"class_list":{"0":"post-2192","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tms","8":"tag-3pl","9":"tag-third-party-logistics"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>3PL: Explanation &amp; Best Practices for Australian Businesses<\/title>\n<meta name=\"description\" content=\"Learn how 3PL works, its benefits, types, and use cases for Australian businesses looking to scale logistics efficiently.\" \/>\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\/au\/blog\/3pl-third-party-logistics\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"3PL: Explanation &amp; Best Practices for Australian Businesses\" \/>\n<meta property=\"og:description\" content=\"Learn how 3PL works, its benefits, types, and use cases for Australian businesses looking to scale logistics efficiently.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Australia\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-08T06:13:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-29T02:44:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL.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=\"Matthew Walsh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Walsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/\"},\"author\":{\"name\":\"Matthew Walsh\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/02caab00f69566c4368ef8f959e7ba52\"},\"headline\":\"3PL: Explanation &#038; Best Practices for Australian Businesses\",\"datePublished\":\"2026-04-08T06:13:38+00:00\",\"dateModified\":\"2026-05-29T02:44:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/\"},\"wordCount\":2350,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/3PL.webp\",\"keywords\":[\"3pl\",\"third party logistics\"],\"articleSection\":[\"TMS\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/\",\"name\":\"3PL: Explanation & Best Practices for Australian Businesses\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/3PL.webp\",\"datePublished\":\"2026-04-08T06:13:38+00:00\",\"dateModified\":\"2026-05-29T02:44:26+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/02caab00f69566c4368ef8f959e7ba52\"},\"description\":\"Learn how 3PL works, its benefits, types, and use cases for Australian businesses looking to scale logistics efficiently.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/3PL.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/3PL.webp\",\"width\":800,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/3pl-third-party-logistics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"3PL: Explanation &#038; Best Practices for Australian Businesses\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/\",\"name\":\"HashMicro Australia\",\"description\":\"Business Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/02caab00f69566c4368ef8f959e7ba52\",\"name\":\"Matthew Walsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Matthew-Walsh-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Matthew-Walsh-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Matthew-Walsh-96x96.webp\",\"caption\":\"Matthew Walsh\"},\"description\":\"Fleet operations rarely fail in dramatic ways, and my work lives in those gaps. I build stories and frameworks that mirror real dispatch rooms and real driver routines, so teams can spot where time, fuel, and service quality quietly leak away.\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/author\\\/matthew-walsh\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"3PL: Explanation & Best Practices for Australian Businesses","description":"Learn how 3PL works, its benefits, types, and use cases for Australian businesses looking to scale logistics efficiently.","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\/au\/blog\/3pl-third-party-logistics\/","og_locale":"en_US","og_type":"article","og_title":"3PL: Explanation & Best Practices for Australian Businesses","og_description":"Learn how 3PL works, its benefits, types, and use cases for Australian businesses looking to scale logistics efficiently.","og_url":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/","og_site_name":"HashMicro Australia","article_published_time":"2026-04-08T06:13:38+00:00","article_modified_time":"2026-05-29T02:44:26+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL.webp","type":"image\/webp"}],"author":"Matthew Walsh","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Matthew Walsh","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/"},"author":{"name":"Matthew Walsh","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/02caab00f69566c4368ef8f959e7ba52"},"headline":"3PL: Explanation &#038; Best Practices for Australian Businesses","datePublished":"2026-04-08T06:13:38+00:00","dateModified":"2026-05-29T02:44:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/"},"wordCount":2350,"commentCount":0,"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL.webp","keywords":["3pl","third party logistics"],"articleSection":["TMS"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/","url":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/","name":"3PL: Explanation & Best Practices for Australian Businesses","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL.webp","datePublished":"2026-04-08T06:13:38+00:00","dateModified":"2026-05-29T02:44:26+00:00","author":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/02caab00f69566c4368ef8f959e7ba52"},"description":"Learn how 3PL works, its benefits, types, and use cases for Australian businesses looking to scale logistics efficiently.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#primaryimage","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/3PL.webp","width":800,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/au\/blog\/3pl-third-party-logistics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/au\/blog\/"},{"@type":"ListItem","position":2,"name":"3PL: Explanation &#038; Best Practices for Australian Businesses"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website","url":"https:\/\/www.hashmicro.com\/au\/blog\/","name":"HashMicro Australia","description":"Business Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/au\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/02caab00f69566c4368ef8f959e7ba52","name":"Matthew Walsh","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Matthew-Walsh-96x96.webp","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Matthew-Walsh-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Matthew-Walsh-96x96.webp","caption":"Matthew Walsh"},"description":"Fleet operations rarely fail in dramatic ways, and my work lives in those gaps. I build stories and frameworks that mirror real dispatch rooms and real driver routines, so teams can spot where time, fuel, and service quality quietly leak away.","url":"https:\/\/www.hashmicro.com\/au\/blog\/author\/matthew-walsh\/"}]}},"_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/2192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/comments?post=2192"}],"version-history":[{"count":10,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/2192\/revisions"}],"predecessor-version":[{"id":4971,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/2192\/revisions\/4971"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media\/2232"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media?parent=2192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/categories?post=2192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/tags?post=2192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}