# Documents

This document serves as a hub linking various user manuals for HotWax Commerce, an omnichannel Order Management System integrating Shopify and NetSuite.

Find direct access to resources tailored for **Store Operations, Retail Operations Teams, and System Administrators.**

Explore the sections **"Learn HotWax OMS," "Learn Shopify," and "Learn NetSuite,"** empowering users to maximize the potential of HotWax Commerce for your businesses.

## Resources :desktop:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Glossary</strong></td><td><a href="/files/P2NMOmKzaotwT2YWYWkV">/files/P2NMOmKzaotwT2YWYWkV</a></td><td><a href="https://docs.hotwax.co/documents/learn-hotwax-oms">https://docs.hotwax.co/documents/learn-hotwax-oms</a></td></tr><tr><td align="center"><strong>Blogs</strong></td><td><a href="/files/xLs251avcxm28HBAYaNd">/files/xLs251avcxm28HBAYaNd</a></td><td><a href="https://www.hotwax.co/blog">https://www.hotwax.co/blog</a></td></tr><tr><td align="center"><strong>Product Updates</strong></td><td><a href="/files/6tRZjyyNr2CYSirMkh7P">/files/6tRZjyyNr2CYSirMkh7P</a></td><td><a href="https://www.hotwax.co/product-update">https://www.hotwax.co/product-update</a></td></tr><tr><td align="center"><strong>Forum</strong></td><td><a href="/files/2k7yAMY8yQRhpxzufLOq">/files/2k7yAMY8yQRhpxzufLOq</a></td><td><a href="https://forum.hotwax.io/">https://forum.hotwax.io/</a></td></tr><tr><td align="center"><strong>FAQ</strong></td><td><a href="/files/GVXyQbGL4VdWqduP54L7">/files/GVXyQbGL4VdWqduP54L7</a></td><td><a href="https://www.hotwax.co/frequently-asked-questions">https://www.hotwax.co/frequently-asked-questions</a></td></tr></tbody></table>

## Learn HotWax OMS :orange\_book:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-type="content-ref"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Getting Started</strong></td><td><a href="/files/GvQAucVcRtl64JBMX8L0">/files/GvQAucVcRtl64JBMX8L0</a></td><td><a href="#learn-hotwax-oms">#learn-hotwax-oms</a></td><td><a href="https://docs.hotwax.co/documents/learn-hotwax-oms/readme-1">https://docs.hotwax.co/documents/learn-hotwax-oms/readme-1</a></td></tr><tr><td align="center"><strong>Business Processes</strong></td><td><a href="/files/dgS7KUsvMC6ri3RjlrQv">/files/dgS7KUsvMC6ri3RjlrQv</a></td><td></td><td><a href="https://docs.hotwax.co/documents/learn-hotwax-oms/business-processes/business-processes">https://docs.hotwax.co/documents/learn-hotwax-oms/business-processes/business-processes</a></td></tr><tr><td align="center"><strong>Business Process Models</strong></td><td><a href="/files/3IPH6IAHDhwoqQQmecSv">/files/3IPH6IAHDhwoqQQmecSv</a></td><td></td><td><a href="https://docs.hotwax.co/documents/learn-hotwax-oms/business-process-models/business-process-models">https://docs.hotwax.co/documents/learn-hotwax-oms/business-process-models/business-process-models</a></td></tr></tbody></table>

## Store Operations User Manual :convenience\_store:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>BOPIS Fulfillment App</strong></td><td></td><td></td><td><a href="/spaces/y0w9O4LtMBdjROn7iZ1X/pages/uvUD0KbX47q6ettpluOb">/spaces/y0w9O4LtMBdjROn7iZ1X/pages/uvUD0KbX47q6ettpluOb</a></td><td><a href="/files/AvKyKDQjQfflpMOKnMeo">/files/AvKyKDQjQfflpMOKnMeo</a></td></tr><tr><td align="center"><strong>Fulfillment App</strong></td><td></td><td></td><td><a href="/spaces/y0w9O4LtMBdjROn7iZ1X/pages/pfXjVZbtgw4oaIQ6Q47b">/spaces/y0w9O4LtMBdjROn7iZ1X/pages/pfXjVZbtgw4oaIQ6Q47b</a></td><td><a href="/files/03Ab1PF0r7EOvRKxFVa4">/files/03Ab1PF0r7EOvRKxFVa4</a></td></tr><tr><td align="center"><strong>Returns</strong></td><td></td><td></td><td><a href="/spaces/y0w9O4LtMBdjROn7iZ1X/pages/sOabwyvGsH2zn4wbXZWC">/spaces/y0w9O4LtMBdjROn7iZ1X/pages/sOabwyvGsH2zn4wbXZWC</a></td><td><a href="/files/Ct9ZjqVTnfJXkxO8DMAc">/files/Ct9ZjqVTnfJXkxO8DMAc</a></td></tr><tr><td align="center"><strong>Receiving</strong></td><td></td><td></td><td><a href="/spaces/y0w9O4LtMBdjROn7iZ1X/pages/FgTIAREAInTPWEyrpcXG">/spaces/y0w9O4LtMBdjROn7iZ1X/pages/FgTIAREAInTPWEyrpcXG</a></td><td><a href="/files/e5YdoOQeCa7q4BAVqKVZ">/files/e5YdoOQeCa7q4BAVqKVZ</a></td></tr><tr><td align="center"><strong>Cycle Count</strong></td><td></td><td></td><td><a href="/spaces/y0w9O4LtMBdjROn7iZ1X/pages/ydOGevh8RNoBZUdSp8e5">/spaces/y0w9O4LtMBdjROn7iZ1X/pages/ydOGevh8RNoBZUdSp8e5</a></td><td><a href="/files/0JI9MNxBc10h3rK2S34f">/files/0JI9MNxBc10h3rK2S34f</a></td></tr><tr><td align="center"><strong>Transfer Orders</strong></td><td></td><td></td><td><a href="/spaces/y0w9O4LtMBdjROn7iZ1X/pages/u5JiFtmYD5BxlQzOyaZf">/spaces/y0w9O4LtMBdjROn7iZ1X/pages/u5JiFtmYD5BxlQzOyaZf</a></td><td><a href="/files/ec0JAS5dwY5NXVTJEUtu">/files/ec0JAS5dwY5NXVTJEUtu</a></td></tr></tbody></table>

## Retail Operations User Manual :department\_store:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Job Manager</strong></td><td><a href="/files/EmS2unvwhWiGhHflPAmv">/files/EmS2unvwhWiGhHflPAmv</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/8tk7OFiTmHYTZ1bZ9T9X">/spaces/GNcmGkoNRfptyho21A56/pages/8tk7OFiTmHYTZ1bZ9T9X</a></td></tr><tr><td align="center"><strong>Job Workflows</strong></td><td><a href="/files/PvZi8E0tDrNsTFRJfoIT">/files/PvZi8E0tDrNsTFRJfoIT</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/ebdcVlFQzYKK2GYdcFxq">/spaces/GNcmGkoNRfptyho21A56/pages/ebdcVlFQzYKK2GYdcFxq</a></td></tr><tr><td align="center"><strong>Products</strong></td><td><a href="/files/4D25Ipn0TKq4xaEc6CiH">/files/4D25Ipn0TKq4xaEc6CiH</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/2p0LmrSHYrIU6l0DQjOP">/spaces/GNcmGkoNRfptyho21A56/pages/2p0LmrSHYrIU6l0DQjOP</a></td></tr><tr><td align="center"><strong>Orders</strong></td><td><a href="/files/7Iw4HvjfvSFVXuLi1X0l">/files/7Iw4HvjfvSFVXuLi1X0l</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/jCcGTCpPWtV1pCpbrNeo">/spaces/GNcmGkoNRfptyho21A56/pages/jCcGTCpPWtV1pCpbrNeo</a></td></tr><tr><td align="center"><strong>Inventory</strong></td><td><a href="/files/9urxfK0RZiEJJurOFbt9">/files/9urxfK0RZiEJJurOFbt9</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/Z18BatYWMvh9UDzP8SKe">/spaces/GNcmGkoNRfptyho21A56/pages/Z18BatYWMvh9UDzP8SKe</a></td></tr><tr><td align="center"><strong>Available to Promise</strong></td><td><a href="/files/Q3Mmv5m0TemaxS3FGw9t">/files/Q3Mmv5m0TemaxS3FGw9t</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/V3IF9MCa4giD3V18vg87">/spaces/GNcmGkoNRfptyho21A56/pages/V3IF9MCa4giD3V18vg87</a></td></tr><tr><td align="center"><strong>Order Routing</strong></td><td><a href="/files/UpYgjCLoALNxvPTde5pa">/files/UpYgjCLoALNxvPTde5pa</a></td><td><a href="https://docs.hotwax.co/documents/retail-operations/orders/order-routing">https://docs.hotwax.co/documents/retail-operations/orders/order-routing</a></td></tr><tr><td align="center"><strong>Pre-Orders</strong></td><td><a href="/files/dmZXwf6jsIVF0Qtt1BhX">/files/dmZXwf6jsIVF0Qtt1BhX</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/uEUbVPZhS20uZDhNtjDe">/spaces/GNcmGkoNRfptyho21A56/pages/uEUbVPZhS20uZDhNtjDe</a></td></tr><tr><td align="center"><strong>Returns</strong></td><td><a href="/files/Ct9ZjqVTnfJXkxO8DMAc">/files/Ct9ZjqVTnfJXkxO8DMAc</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/FlPO2bGVPhOsqQdxv35R">/spaces/GNcmGkoNRfptyho21A56/pages/FlPO2bGVPhOsqQdxv35R</a></td></tr><tr><td align="center"><strong>Cycle Count</strong></td><td><a href="/files/0JI9MNxBc10h3rK2S34f">/files/0JI9MNxBc10h3rK2S34f</a></td><td><a href="/spaces/GNcmGkoNRfptyho21A56/pages/4pel5DZLWRdOzNBtAmvu">/spaces/GNcmGkoNRfptyho21A56/pages/4pel5DZLWRdOzNBtAmvu</a></td></tr></tbody></table>

## System Admin User Manual :video\_game:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>Company App</strong></td><td><a href="/spaces/vRjh4vkGRczeQJMpDxzL/pages/SKqyielwbZW2DQDXF29S">/spaces/vRjh4vkGRczeQJMpDxzL/pages/SKqyielwbZW2DQDXF29S</a></td><td><a href="/files/8VqOVyJJo5scaLQSrQWy">/files/8VqOVyJJo5scaLQSrQWy</a></td></tr><tr><td align="center"><strong>Product Store</strong></td><td><a href="/spaces/vRjh4vkGRczeQJMpDxzL/pages/Me2smM2VmXiHtXCNqZ3t">/spaces/vRjh4vkGRczeQJMpDxzL/pages/Me2smM2VmXiHtXCNqZ3t</a></td><td><a href="/files/L5sxry2jvNmAsr0eLF7g">/files/L5sxry2jvNmAsr0eLF7g</a></td></tr><tr><td align="center"><strong>Users</strong></td><td><a href="/spaces/vRjh4vkGRczeQJMpDxzL/pages/ku5yf42oVtMvb17imdqo">/spaces/vRjh4vkGRczeQJMpDxzL/pages/ku5yf42oVtMvb17imdqo</a></td><td><a href="/files/OljVpTtHTYWqKVXFDtum">/files/OljVpTtHTYWqKVXFDtum</a></td></tr><tr><td align="center"><strong>Facilities</strong></td><td><a href="/spaces/vRjh4vkGRczeQJMpDxzL/pages/1ATLyY9jWBiXTWo5h3QL">/spaces/vRjh4vkGRczeQJMpDxzL/pages/1ATLyY9jWBiXTWo5h3QL</a></td><td><a href="/files/mKPLyr19zF75jzHpWV65">/files/mKPLyr19zF75jzHpWV65</a></td></tr><tr><td align="center"><strong>Fulfillment</strong></td><td><a href="/spaces/vRjh4vkGRczeQJMpDxzL/pages/keeLUwYjN9dQthVW3sk9">/spaces/vRjh4vkGRczeQJMpDxzL/pages/keeLUwYjN9dQthVW3sk9</a></td><td><a href="/files/dDDcOTuLZHhNKXhoXIRB">/files/dDDcOTuLZHhNKXhoXIRB</a></td></tr><tr><td align="center"><strong>Data Manager</strong></td><td><a href="/spaces/vRjh4vkGRczeQJMpDxzL/pages/Qt8rA9Qrzrd0frcp1bMS">/spaces/vRjh4vkGRczeQJMpDxzL/pages/Qt8rA9Qrzrd0frcp1bMS</a></td><td><a href="/files/wW1iMqJTqU0eBc7eHd3X">/files/wW1iMqJTqU0eBc7eHd3X</a></td></tr></tbody></table>

## Learn Shopify :green\_book:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>Shopify Integration</strong></td><td><a href="/spaces/q42f0puI9OYah51t08oQ/pages/ChmwolcU4hrDdTPxncC2">/spaces/q42f0puI9OYah51t08oQ/pages/ChmwolcU4hrDdTPxncC2</a></td><td><a href="/files/YuACcG3DfMlINGwZvDxn">/files/YuACcG3DfMlINGwZvDxn</a></td></tr><tr><td align="center"><strong>Shopify Setup</strong></td><td><a href="/spaces/q42f0puI9OYah51t08oQ/pages/vVBTFAohsm8JZY57fM98">/spaces/q42f0puI9OYah51t08oQ/pages/vVBTFAohsm8JZY57fM98</a></td><td><a href="/files/7UFjza8ObdM7of5sZIJi">/files/7UFjza8ObdM7of5sZIJi</a></td></tr><tr><td align="center"><strong>Product Sync</strong></td><td><a href="/spaces/q42f0puI9OYah51t08oQ/pages/TkmVNY6BMYRrB9Zt9kZs">/spaces/q42f0puI9OYah51t08oQ/pages/TkmVNY6BMYRrB9Zt9kZs</a></td><td><a href="/files/BuCZTzCdNfhMdZ3hkpZ6">/files/BuCZTzCdNfhMdZ3hkpZ6</a></td></tr><tr><td align="center"><strong>Order Sync</strong></td><td><a href="/spaces/q42f0puI9OYah51t08oQ/pages/m2JIZlfppaaffxHbDzNM">/spaces/q42f0puI9OYah51t08oQ/pages/m2JIZlfppaaffxHbDzNM</a></td><td><a href="/files/Rffp0GlcsVotZ1zutF1E">/files/Rffp0GlcsVotZ1zutF1E</a></td></tr><tr><td align="center"><strong>Inventory Sync</strong></td><td><a href="/spaces/q42f0puI9OYah51t08oQ/pages/tE6I6ST2N9eyj5RAsuTt">/spaces/q42f0puI9OYah51t08oQ/pages/tE6I6ST2N9eyj5RAsuTt</a></td><td><a href="/files/6etikoaNJYlUNPc7E5yF">/files/6etikoaNJYlUNPc7E5yF</a></td></tr></tbody></table>

## Learn NetSuite :blue\_book:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>Integration Tools and Methodolgies</strong></td><td><a href="/spaces/XPO8jTog8zeT6LrxNy36/pages/HZfdm8lS0mWszIWBo9Xh">/spaces/XPO8jTog8zeT6LrxNy36/pages/HZfdm8lS0mWszIWBo9Xh</a></td><td><a href="/files/4Xjixmw9whZzzm2jXxB3">/files/4Xjixmw9whZzzm2jXxB3</a></td></tr><tr><td align="center"><strong>Integration Flows</strong></td><td><a href="/spaces/XPO8jTog8zeT6LrxNy36/pages/ip5puWK9HLmEjzycmgWv">/spaces/XPO8jTog8zeT6LrxNy36/pages/ip5puWK9HLmEjzycmgWv</a></td><td><a href="/files/ChcjEMgHcKzwntlEsNHg">/files/ChcjEMgHcKzwntlEsNHg</a></td></tr><tr><td align="center"><strong>Deployment</strong></td><td><a href="/spaces/XPO8jTog8zeT6LrxNy36/pages/lydMsGpg77smUfcTjBOM">/spaces/XPO8jTog8zeT6LrxNy36/pages/lydMsGpg77smUfcTjBOM</a></td><td><a href="/files/G3ERiaPTsV8EsVKIfxvw">/files/G3ERiaPTsV8EsVKIfxvw</a></td></tr><tr><td align="center"><strong>Synchronization Flows</strong></td><td><a href="/spaces/XPO8jTog8zeT6LrxNy36/pages/pOGQQ08F40bYbH09ct25">/spaces/XPO8jTog8zeT6LrxNy36/pages/pOGQQ08F40bYbH09ct25</a></td><td><a href="/files/JNhLkabujBrZczJFXDd2">/files/JNhLkabujBrZczJFXDd2</a></td></tr></tbody></table>

## Integrate with HotWax :dart:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td align="center"><strong>APIs and Data Feeds</strong></td><td><a href="/spaces/DVy340gLlDzLzxQzy3ZF">/spaces/DVy340gLlDzLzxQzy3ZF</a></td><td><a href="/files/nchhC3m38wBP4IkDfBGD">/files/nchhC3m38wBP4IkDfBGD</a></td></tr><tr><td align="center"><strong>OMS Release Versions</strong></td><td><a href="/spaces/DVy340gLlDzLzxQzy3ZF/pages/eLv3Ky06gfCKwQEY1Q7j">/spaces/DVy340gLlDzLzxQzy3ZF/pages/eLv3Ky06gfCKwQEY1Q7j</a></td><td><a href="/files/XQmtx0SiBuLcB63dyHFO">/files/XQmtx0SiBuLcB63dyHFO</a></td></tr><tr><td align="center"><strong>HotWax Commerce Journeys</strong></td><td><a href="/spaces/DVy340gLlDzLzxQzy3ZF/pages/UEpgAefyKinuSLjI3v7n">/spaces/DVy340gLlDzLzxQzy3ZF/pages/UEpgAefyKinuSLjI3v7n</a></td><td><a href="/files/jMt3NCaWK7QkCAJsUCk7">/files/jMt3NCaWK7QkCAJsUCk7</a></td></tr></tbody></table>

## Additional Integrations :jigsaw:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>RetailPro</strong></td><td><a href="/files/HK7GsDVrz0ahh0gLmVPg">/files/HK7GsDVrz0ahh0gLmVPg</a></td><td><a href="https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/additional-integrations/retailpro/README.md">https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/additional-integrations/retailpro/README.md</a></td></tr><tr><td align="center"><strong>Loop</strong></td><td><a href="/files/0Hk98Z5ZBakGyMxz2Cfi">/files/0Hk98Z5ZBakGyMxz2Cfi</a></td><td><a href="https://docs.hotwax.co/documents/additional-integrations/loop/loop-online">https://docs.hotwax.co/documents/additional-integrations/loop/loop-online</a></td></tr><tr><td align="center"><strong>Klaviyo</strong></td><td><a href="/files/KPgJBf73DMrXtNcNc0q7">/files/KPgJBf73DMrXtNcNc0q7</a></td><td><a href="/spaces/1q7IdOxLMEVmleQrA0lg/pages/qPK4PHwWIoMVRTR6QUWC">/spaces/1q7IdOxLMEVmleQrA0lg/pages/qPK4PHwWIoMVRTR6QUWC</a></td></tr><tr><td align="center"><strong>Iterable</strong></td><td><a href="/files/LG987mMe1Krnz8rwLBVm">/files/LG987mMe1Krnz8rwLBVm</a></td><td><a href="/spaces/1q7IdOxLMEVmleQrA0lg/pages/v3xjcPFyIhcSrL7x3KFx">/spaces/1q7IdOxLMEVmleQrA0lg/pages/v3xjcPFyIhcSrL7x3KFx</a></td></tr><tr><td align="center"><strong>EasyPost</strong></td><td><a href="/files/NfYSYtsZ5oksIAF3mniF">/files/NfYSYtsZ5oksIAF3mniF</a></td><td><a href="/spaces/1q7IdOxLMEVmleQrA0lg/pages/ZF2Dk4KKdgzg9dxIbBMi">/spaces/1q7IdOxLMEVmleQrA0lg/pages/ZF2Dk4KKdgzg9dxIbBMi</a></td></tr></tbody></table>

## Analytics :bar\_chart:

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><strong>Products</strong></td><td><a href="/files/GvvYalkr0zO13OnKCGAz">/files/GvvYalkr0zO13OnKCGAz</a></td><td><a href="/spaces/KnD8GkvnsEJKHaOGItyV/pages/n269iboO9IoB3W41fwd3">/spaces/KnD8GkvnsEJKHaOGItyV/pages/n269iboO9IoB3W41fwd3</a></td></tr><tr><td align="center"><strong>Order</strong></td><td><a href="/files/e1t3Ign9JS5Raso7uEQy">/files/e1t3Ign9JS5Raso7uEQy</a></td><td><a href="/spaces/KnD8GkvnsEJKHaOGItyV/pages/k0wGcRRjR8hojqPAN0I2">/spaces/KnD8GkvnsEJKHaOGItyV/pages/k0wGcRRjR8hojqPAN0I2</a></td></tr><tr><td align="center"><strong>Inventory</strong></td><td><a href="/files/ZMYSvrbCJzHNVbatvH4z">/files/ZMYSvrbCJzHNVbatvH4z</a></td><td><a href="/spaces/KnD8GkvnsEJKHaOGItyV/pages/kyeBjiHJDa4V72E7IzSt">/spaces/KnD8GkvnsEJKHaOGItyV/pages/kyeBjiHJDa4V72E7IzSt</a></td></tr><tr><td align="center"><strong>Fulfillment</strong></td><td><a href="/files/yOdzdnCVr366mU6thcVY">/files/yOdzdnCVr366mU6thcVY</a></td><td><a href="/spaces/KnD8GkvnsEJKHaOGItyV/pages/07FrWEyqq2LQAQ7rnZKH">/spaces/KnD8GkvnsEJKHaOGItyV/pages/07FrWEyqq2LQAQ7rnZKH</a></td></tr><tr><td align="center"><strong>NetSuite</strong></td><td><a href="/files/H6kSAoXGbq7PO66nMerf">/files/H6kSAoXGbq7PO66nMerf</a></td><td><a href="/spaces/KnD8GkvnsEJKHaOGItyV/pages/eVWn5pkZqcIQjsJsoUVW">/spaces/KnD8GkvnsEJKHaOGItyV/pages/eVWn5pkZqcIQjsJsoUVW</a></td></tr></tbody></table>


# Glossary

Learn about common terms in omnichannel order and inventory management.

### Advanced shipping notice (ASN)

An advanced shipping notice (ASN) is a notification sent by a supplier to a recipient detailing the contents and expected arrival of a shipment, often sent in advance of the physical delivery. For example, if a store anticipates receiving 100 shirts in an incoming shipment, the ASN will detail this expected inventory count.

In the context of HotWax Commerce, store associates receive ASNs in relation to transfer orders (TOs). Generally, a transfer order is created in an ERP system, and when the TO is fulfilled in the ERP or WMS (warehouse management system), an ASN is generated in HotWax Commerce. Store associates then perform the receiving based on this ASN using the **Receiving App**. In the context of purchase orders, the ASN receiving is done in ERP/WMS.

Upon the shipment's arrival, store associates can use the **Inventory Receiving App** to locate the ASN by scanning the ASN barcode or manually inputting the ASN ID. They can then view the ASN details, including SKUs, names, SKU codes, images, and expected inventory counts.

### Appeasement

Appeasement refers to refunds, discounts, or other forms of compensation provided to resolve disputes, improve customer satisfaction, and maintain positive relationships. HotWax Commerce does not allow the creation of appeasements. Instead, CSR teams can create appeasements in e-commerce platforms like Shopify, either by offering another product or issuing a refund without a return. HotWax Commerce downloads these appeasements for reporting purposes and posts them to the ERP for financial record keeping without tracking order line item details.

### Arrival date

The arrival date is the date when the inventory of the purchase order items is expected to arrive at the destination. Merchandisers can view the arrival date on the `Find Purchase Orders` page.

### Available to promise (ATP)

ATP (Available to Promise) represents the physical quantity of a product at stores or warehouses after deducting the reserved inventory, that is, inventory that has been allocated to online orders from the Quantity on Hand (QOH).\
ATP = QOH - Reserved quantities

### Backorders

Backorders are orders taken for products that are temporarily out of stock. These orders are referred to as “backorders” because they were previously in stock and will be available again soon but are currently unavailable due to high demand, inaccurate sales forecasting, or operational discrepancies.

For example, Brand ABC has an amazing season and sells all its inventory. Some regular items were bought frequently, so the merchandisers have already sent POs for these goods and know the approximate date of arrival. The brand utilizes this time for sales and starts taking orders for these products.

To learn more about backorders, [read this blog post](https://www.hotwax.co/blog/key-concepts-omnichannel-order-management).

### Backorder parking

Backorder parking refers to the area that holds the orders for backorder items. These orders are stored in the backorder parking area until they are restocked and prepared for fulfillment. Learn more about [backorder parking](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-parkings.md).

### Brokering

In HotWax Commerce, brokering refers to the process of matching and routing orders to the most suitable fulfillment center or location based on factors like inventory availability, proximity to the customer, and delivery speed requirements. This ensures that orders are processed and shipped to meet delivery expectations.

### Brokering history

Brokering history refers to the record of past brokering activities in HotWax Commerce. It logs when orders were routed to fulfillment centers based on inventory, proximity, and delivery speed.

### Brokering queue

The brokering queue serves as a waiting area for orders awaiting processing in the order brokering process. It helps handle orders by analyzing order priority and determining the optimal fulfillment location based on proximity and inventory availability. Orders in `Approved` status waiting to be brokered are parked in the brokering queue until the brokering engine runs at frequent intervals.

For example, if the brokering engine runs every three hours starting at 9:00 A.M., orders placed and approved at 10:00 A.M. will remain in the brokering queue until the next brokering engine run at 12:00 P.M. Similarly, orders placed and approved at 11:30 A.M. will also be processed at 12:00 P.M.

Learn more about [order routing](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/order-routing/README.md).

### Bundle product

A bundle product refers to a product that consists of multiple components. These components are integrated to form a cohesive product offering. For example, a computer bundle might include a CPU, motherboard, RAM, and a hard drive.

The `Import Bundle Product Components` job helps reflect these components accurately in the order management system (OMS). The availability of a bundle product is determined by the lowest common denominator of component inventory available at each facility. This means that the bundle product's availability is constrained by the facility with the least available inventory of its components. The computed inventory of each bundle product at every facility is then aggregated to determine the final sellable inventory number across the entire network.

Learn more about [bundle products](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-shopify/additional-resources/kit-products.md).

### Customer service representative (CSR)

A Customer Service Representative (CSR) is the first point of contact for any customer who has a question or an issue with a product or service the company sells. CSRs are responsible for handling customer requests regarding order fulfillment, order cancellations, and returns.

Customer Service Representatives (CSRs) can utilize HotWax Commerce to get detailed visibility about the orders and perform actions accordingly as per the customer’s requests.

### Digital gift cards

Digital gift cards, or e-gift cards, are virtual equivalents of physical gift cards. Customers receive them via email or text message along with a unique serial number that they can use to redeem the value stored in the card. When customers order a digital gift card on Shopify, the order is immediately auto-fulfilled, a serial number is assigned, and the value is loaded to activate the gift card. Consequently, when HotWax Commerce downloads that order from Shopify, it is automatically marked as `Completed`.

Learn more about [digital gift cards](/documents/learn-hotwax-oms/business-process-models/giftcard-orders-lifecycle#digital-gift-cards).

### Excluded ATP

Excluded ATP refers to the inventory at fulfillment locations that are not participating in online selling. This inventory is not considered available for online orders and is excluded from the Online ATP calculation.

### Excluded facilities

Excluded facilities are facilities that are either not participating in online order fulfillment or temporarily unable to participate due to reasons like insufficient labor, natural disasters, or holidays. Inventory becomes available again when these scenarios change. Retailers can turn off fulfillment if they want to temporarily disable a facility from participation.

Learn more about [disabling facilities](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/disabling-facilities.md).

### Expedited orders

Expedited orders are those prioritized for faster processing and shipping to meet delivery within a shorter timeframe, typically within one to three business days. These orders are given precedence over standard orders to meet the high expectations of consumers for quick delivery. Expedited orders often involve additional costs for the customer or the merchant to facilitate the faster shipping and handling process.

### Facility

In HotWax Commerce, a facility is a physical location such as a warehouse, distribution center, or store where inventory is stored, managed, and processed.

### Facility group

Facility groups are used to define the scope and functionality of facilities for omnichannel order management. For example, including a facility in the Pickup and Same Day Shipping groups indicates that the facility accommodates both Buy Online, Pickup In-Store (BOPIS), and same-day shipping orders.

### Facility type

In HotWax Commerce, Facility type refers to different locations used for fulfillment, including:

Retail Store: Physical stores that fulfill online orders and facilitate in-store pickups. Warehouse: Centralized storage locations for fulfilling online orders and restocking stores. Outlet Store: Discount retail locations that fulfill orders and offer in-store pickups. Outlet Warehouse: Storage for outlet inventory, supporting fulfillment for outlet stores, and direct customer shipments.

Retailers can prioritize their brokering rules according to the facility types

### Inventory delta

Inventory delta means adjusting the stock count of an item in a facility by adding or subtracting a specific amount of inventory, as provided by an external system like an ERP. For example, if the Central Warehouse has 10 socks in stock and a delta file specifies a change of +2, the stock count will be adjusted to 12 by adding the delta value (+2) to the existing stock count.

### Inventory reset

Inventory reset means updating the stock count of an item in a facility with a new count provided by an external system, like an ERP.

**For example**, if the Central Warehouse has 10 socks in stock, and a reset file from the ERP specifies a count of 15, the stock count in HotWax will be reset to 15, discarding the previous count entirely.

### Inventory variance

Inventory variance refers to discrepancies between expected and actual inventory levels. It can be caused by factors such as damaged goods, discrepancies in shipment, or theft.

### Item fulfillment status

Item fulfillment status in HotWax Commerce tracks the current stage of an item within the order fulfillment process. This status helps in monitoring and managing orders, indicating whether an item is reserved, picked, packed, shipped, or delivered.

### Maximum order limit

The maximum order limit is a predefined limit set by a store, indicating the maximum number of orders it can fulfill in a day. When this limit is reached, the brokering engine automatically routes additional orders to alternative facilities that have capacity available. Setting a maximum order limit helps the store manage its resources effectively. It ensures that orders can be fulfilled within operational constraints and prevents overcommitment of resources. By leveraging the brokering engine to redirect orders to other facilities as needed, retailer maintains their ability to meet customer demand without delay.

### Online ATP

Online ATP represents the unified inventory pool of actual sellable inventory count that is published on e-commerce platforms and can be promised to customers.

To calculate online ATP, HotWax Commerce deducts inventory that is not available for sale from the ATP. This includes items such as safety stock, threshold quantities, orders in the brokering queue, and inventory from locations that are not participating in online selling.

HotWax Commerce calculates online available to promise (ATP): Online ATP = QOH - (reserved quantities + safety stock + threshold + orders in brokering queue + excluded facilities’ ATP)

Learn more about [online ATP](/documents/learn-hotwax-oms/business-process-models/inventory-lifecycle#push-online-atp-to-ecommerce).

### Order fulfillment status

Order fulfillment status in HotWax Commerce tracks the current stage of an overall order within the order fulfillment process. This status helps in monitoring and managing orders, indicating whether an order is created, approved, picked, packed, or shipped.

### Order merging

When a customer places multiple orders that can be fulfilled from the same location. Instead of treating them as separate orders, retailers prefer to merge them into a single shipment, ensuring a smoother and more cost-effective delivery process. HotWax Commerce enables order merging so that orders coming from the same location are fulfilled together. Learn more about [order merging](https://www.hotwax.co/blog/what-is-order-consolidation-and-order-merging).

### Packing slip

A packing slip is a document included with a shipment that lists the contents of the package. It typically includes details such as item names, quantities, and sometimes prices. This document assists both customers and senders in confirming that the correct items have been packed and shipped. In HotWax Commerce, store associates can choose whether they want to print the packing slip when packing orders.

Learn more about [packing slips](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/store-operations/orders/bopis/packed-order-tab.md).

### Picker

Pickers are tasked with fulfilling orders by picking items from the store’s location according to a printed or digital picklist. This role can be created and assigned to a user in HotWax Commerce, ensuring efficient management of picking operations. Once a digital or printed picklist is created, it can be assigned to a user in the Picker role, to streamline the order fulfillment process.

### Picklist

A picklist provides details such as inventory SKUs, quantities, and locations. It serves as a guide for pickers to pick items for orders fulfillment. To improve the picking process, store or fulfillment managers often organize inventory based on criteria such as Product Name, Bin ID, or Location Sequence ID. Structuring picklists to align with these strategies ensures an optimized route for pickers, minimizing time spent on picking and improving both speed and accuracy.

### Pre-orders

Pre-orders are simply advance orders taken for future inventory. These products have not yet been released in the market and are still in planning or production, and thus not in stock. A pre-order is an order placed for a product that is not yet available for purchase or delivery. Customers can reserve the item in advance, and the order will be fulfilled once the product becomes available in stock. Learn more about [pre-orders](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/pre-orders.md).

### Pre-order parking

Pre-order parking in HotWax Commerce is a holding area where pre-ordered items are kept until their inventory becomes available. Orders in this queue are not yet ready for fulfillment and wait until the specified stock arrives before being moved to the brokering queue for processing and shipping. This helps handle pre-orders based on inventory availability. Learn more about [pre-order parking](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-parkings.md#default-parkings).

### Product variants

A product variant in HotWax Commerce refers to individual variations of a product, which can include different sizes, colors, or other features. The `Find Product` page displays these variants along with the product category, product name, product ID, and product features such as size and colors.

### Promise date

In HotWax Commerce, the promise date refers to the estimated date by which an order is expected to be fulfilled and shipped to the customer. It represents the commitment made by the seller regarding the delivery timeline for each order in the system.

### Proximity

In the context of HotWax Commerce, proximity refers to the distance or closeness of a particular location or fulfillment center to the customer's shipping address. It is a key factor in determining the most efficient and cost-effective way to fulfill orders, as closer proximity may result in shorter shipping times and lower shipping costs.

### Purchase order

A purchase order (PO) is a document created by a retailer and sent to their supplier to order items. It is typically generated in the retailer's ERP system. POs are synchronized from the ERP to HotWax Commerce to track ordered items and anticipate future inventory arrivals. This synchronization helps in calculating future inventory and managing pre-orders and back-orders. HotWax Commerce also syncs future inventory data to e-commerce platforms like Shopify, helping manage pre-orders accurately without overpromising or underpromising. Learn more about [purchase orders](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/pre-orders/purchase-order-uploads.md).

### Quantity on hand (QOH)

QOH represents the total physical quantity of a product available at stores or warehouses. HotWax Commerce receives daily inventory feeds from the ERP system to update and maintain inventory data. Additionally, in the absence of ERP systems, HotWax Commerce also receives inventory feeds from Warehouse Management Systems (WMS) and Point of Sale (POS) systems.

### Rejected orders

Rejected orders are orders brokered for fulfillment but rejected by a warehouse or store due to physical inventory unavailability, often caused by damaged, lost, or stolen items. Rejected orders return to the brokering queue for reassignment. Rejected orders are managed by routing them back to the brokering queue for reassignment. The OMS will then route the order to another facility based on product availability, customer shipping preferences, and routing rules.

### Reserved inventory

Reserved inventories refer to inventory, whether in a store or warehouse, that has already been allocated to fulfill orders. Reserved quantities are not included in the "available to promise" (ATP) and are not eligible to be sold.

### Safety stock

Safety stock helps retailers control how much inventory they promise to online channels. Once a store’s inventory count falls below the designated safety stock quantity, the remaining inventory will be reserved for in-store sales. Retailers often face inventory discrepancies, where a system’s inventory does not match the actual inventory in stores. Keeping safety stock also helps retailers mitigate the risk of taking orders that cannot be fulfilled due to inventory discrepancies. A robust omnichannel order management system helps retailers easily manage safety stock for each store. Learn more about [safety stock](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/inventory/safety-stock.md).

### SendSale orders

SendSale orders in HotWax Commerce refer to orders captured through the **Shopify POS** app. These orders are taken in the store by store associates on behalf of customers for items that are not in stock in the store. The items are then shipped to customers at their preferred shipping location. In HotWax Commerce, these orders are downloaded and processed just like online orders. However, the channel tagged for the order in HotWax Commerce is point of sale (POS).

### Shipping label

A shipping label is a document used by shipping carriers to deliver a package to the customer's address. It includes information such as the destination address, return address, and tracking barcode. HotWax Commerce integrates with third-party shipping carriers like FedEx and shipping aggregators like ShipStation to obtain shipping rates and generate labels. The fulfillment team can create packages and generate labels directly within HotWax Commerce, without needing to move to a separate system.

### Shopify order ID

This is a unique identifier assigned by Shopify to each order. It serves as a reference point for tracking and managing orders within the Shopify platform. Additionally, users can conveniently view the order details directly on Shopify by clicking on the provided link associated with the Shopify order ID on the `Order Details` page.

### Shopify order name

The order name in Shopify typically refers to a customizable name or title assigned to an order on Shopify for further order identification.

### Shopify order number

Shopify assigns a distinct numerical identifier to each order. It acts as another unique reference for orders, often used in communication and documentation.

### Split shipment

Split shipment, also known as order splitting, is a fulfillment strategy where a single customer order is divided into multiple shipments to help faster delivery of available items. This approach is used when different items in an order are located at different fulfillment centers or when some items are out of stock and need to be shipped separately once they become available. In HotWax Commerce (HC), this capability is a configurable setting. Retailers have the option to choose whether they want orders to be split for shipment or not. This global setting applies to all orders by default but can be overridden for specific orders as needed. When configuring brokering rules in HC, administrators can specify conditions for when orders should be split and when they should not. For instance, the brokering engine can prioritize shipping all items from one location to avoid splitting orders. However, if necessary, it can split an order and ship items from multiple locations as a last resort to fulfill the customer's requirements.

Learn more about [split shipment](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/order-management/update-sales-order.md#allow-splitting).

#### Threshold

To mitigate the risk of overselling caused by inventory inaccuracies, merchandisers allocate buffer stock on a company-wide basis before committing inventory to online sales channels. This buffer inventory is referred to as the Inventory Threshold. Unlike safety stock, which is managed at the store level, the Inventory Threshold ensures that reported inventory levels across all products are adjusted to account for potential inaccuracies before allocating stock to online channels.

For example, let’s say Brand ABC sets the threshold of 10 units for red socks in Stores X and Y. This will impact these stores’ inventory levels, in the following manner:

Store X Inventory: 100 Units\
Store Y Inventory: 100 Units\
Threshold: 10 Units\
Inventory Available for Online Orders: 200 Units - 10 Units (threshold) = 190 Units

#### Unfillable parking

When inventory is unavailable for orders at any location, the order routing engine moves them from the Brokering Queue to the Unfillable Parking. A dedicated brokering run is performed to check the orders in the Unfillable Parking and allocate inventory to them.


# Getting Started with HotWax Commerce

HotWax Commerce is a cloud-based Omnichannel Order Management System that provides retailers with the best return on their inventory by facilitating omnichannel solutions such as Same-Day Buy Online Pick-Up In Store (BOPIS), Buy Online Return In Store, Ship From Store, and Pre-Orders to increase conversion rates and profitability. Here’s how HotWax Commerce fits into your tech ecosystem:

<figure><img src="/files/uJ5PjxtADsSFrxptD1lX" alt=""><figcaption><p>HotWax Commerce in your tech stack</p></figcaption></figure>

HotWax Commerce integrates with multiple systems present in your tech stack, like eCommerce, ERP, WMS, and POS, creates a single sellable inventory count, syncs inventory in real time across sales channels, and efficiently routes online orders to the best fulfillment locations.

Order and inventory management are at the heart of omnichannel retailing. Let’s see an overview of how HotWax Commerce supports these operations:

### Order Management

#### Source of Orders and Returns

<figure><img src="/files/lSVibiM9SLfIBW6LugYC" alt=""><figcaption><p>Downloading orders and returns</p></figcaption></figure>

HotWax Commerce downloads orders and returns from sales channels like eCommerce and POS.

**eCommerce Orders**

HotWax Commerce manages key processes such as downloading online orders, routing them to optimal fulfillment locations, and ensuring timely fulfillment.

<figure><img src="/files/PCQ1vG5Q8pA9fRyA1qvw" alt=""><figcaption><p>Order fulfillment</p></figcaption></figure>

HotWax Commerce handles various types of eCommerce orders, including standard orders, BOPIS (Buy Online, Pick Up In Store) orders, Pre-Orders, and Backorders. Here’s a brief explanation of each type:

* **Standard orders:** Standard shipping orders placed online for home delivery. Orders that satisfy the criteria set for auto-approval are approved. The order routing engine then brokers these orders and allocates them to optimal fulfillment locations based on the predefined routing configurations. For orders allocated to a store, HotWax Commerce provides a dedicated `Fulfillment App` to help stores easily fulfill online orders. Learn more about the [store fulfillment lifecycle](/documents/learn-hotwax-oms/business-process-models/store-fulfillment-lifecycle).

  For orders allocated to a warehouse, HotWax Commerce syncs the fulfillment details with the WMS or ERP systems like NetSuite when leveraged for warehouse fulfillment. Learn more about the [warehouse fulfillment lifecycle](/documents/learn-hotwax-oms/business-process-models/warehouse-fulfillment-lifecycle).
* **BOPIS orders:** Orders placed online with the intention of picking up the items in-store. HotWax Commerce `Integration App` adds a custom tag on order line items to specify that it is a BOPIS order. HotWax Commerce then checks the custom tag on orders. If the tag is present on an order, it is automatically sent to the customer's preferred pickup location without brokering since the fulfillment location is pre-selected for BOPIS orders by customers. For BOPIS orders, HotWax Commerce provides a dedicated `BOPIS Fulfillment App` to help stores quickly prepare the order for customer pick-up.
* **Pre-Orders:** Orders placed for new launch products that are not yet available for delivery and will be available on a future promised date.
* **Backorders:** Orders placed for products that are currently out-of-stock, with delivery scheduled for a future promised date. HotWax Commerce `Integration App` adds a custom tag on order line items to specify that it is a Pre-Order or a Backorder. HotWax Commerce then checks the custom tag on orders. If the tag is present on an order, a dedicated parking holds all pre-orders/backorders until their physical inventory is received, and HotWax Commerce automatically releases and brokers them once the inventory arrives just like standard orders. For Pre-Orders and Backorders, HotWax Commerce also provides a dedicated Pre-Order Management App to help merchandisers manually release them for fulfillment based on their order fulfillment strategies. Learn more about the [order lifecycle in HotWax Commerce](/documents/learn-hotwax-oms/business-process-models/order-lifecycle)

HotWax also syncs eCommerce order data to ERP systems, ensuring accurate accounting and posting.

{% hint style="success" %}
Once orders are fulfilled, HotWax Commerce synchronizes fulfillment updates with the eCommerce platform.
{% endhint %}

**POS Sales**

HotWax Commerce downloads POS sales to provide a unified view of both online and in-store sales. HotWax also syncs this data to ERP systems, ensuring accurate accounting and posting.

**Returns**

Both eCommerce and POS returns are downloaded in HotWax Commerce for reconciliation purposes. HotWax also syncs this data to ERP systems, ensuring accurate accounting and posting.

Learn more about the [return lifecycle in HotWax Commerce](/documents/learn-hotwax-oms/business-process-models/returns-lifecycle)

### Inventory Management

HotWax Commerce becomes the ultimate authority on inventory availability and prevents overselling and underselling on eCommerce platforms. Let’s see how:

<figure><img src="/files/QeNsADHwxK5qoQAjELQx" alt=""><figcaption><p>Inventory management</p></figcaption></figure>

The inventory count of a product is regularly updated due to various factors such as customer purchases made both in-store and online, as well as the receipt of new inventory. These transactions are recorded across different systems.

#### Sources of Inventory

HotWax Commerce integrates with ERP, POS, and WMS, to create a unified pool of inventory. HotWax Commerce receives daily inventory feeds from the ERP system and real-time inventory updates from the POS system to maintain up-to-date inventory data. Additionally, in cases where an ERP system isn't in use, HotWax Commerce also receives inventory feeds from WMS and POS systems.

After synchronizing inventory totals from all systems, HotWax Commerce calculates the Online ATP for eCommerce by deducting any inventory set aside as safety stock, thresholds, orders in the brokering queue, and inventory at non-participating facilities from the physical ATP.

Learn more about the [inventory lifecycle in HotWax Commerce](/documents/learn-hotwax-oms/business-process-models/inventory-lifecycle)

#### Inventory Receiving in Stores

HotWax Commerce provides a dedicated `Receiving App` to receive transfer orders and purchase orders at store locations. Any new inventory received in stores is automatically included in the sellable inventory in HotWax Commerce, helping to prevent underselling and ensuring that eCommerce platforms always reflect up-to-date inventory counts.

#### Inventory Adjustments in Stores

HotWax Commerce provides a dedicated `Cycle Counting App` to record inventory adjustments in stores. Store associates periodically perform cycle counting at stores for inventory reconciliation. The app lets store associates record variances due to discrepancies between the system's inventory records and the actual physical counts.

While cycle counting in stores follows a periodic schedule and requires approval, stores often encounter sudden inventory discrepancies in various scenarios. The app also lets them record unexpected inventory variances, for example, if store associates identify a damaged unit at their location, they can directly record a variance of the damaged inventory.

Inventory variances recorded in stores are automatically accounted for in the sellable inventory in HotWax Commerce, helping to prevent overselling and ensuring eCommerce platforms always reflect up-to-date inventory counts.

### BIRA

HotWax Commerce BI Reports & Analytics (BIRA) delivers detailed reports and dashboards on products, orders, and inventory. Each dashboard combines multiple reports to provide a comprehensive overview, enabling key personnel to understand and manage all business aspects effectively. These tools offer clear insights into performance metrics, trends, and resource allocation, facilitating data-driven decision-making.

### OReSA

HotWax Commerce Omnichannel Retail Sales Auditing tool (OReSA) automatically reconciles sales, returns, as well as appeasements from OMS, eCommerce, POS, and bookkeeping systems like ERP. This helps financial teams close financial periods within minutes instead of the typical hours or days.

OReSA also offers automated sales audit reports that provide insights into discovered data discrepancies so that finance teams can quickly rectify them.


# Introduction

Welcome to the Business Processes guide, designed to provide a detailed understanding of our key operational workflows, including order fulfillment, inventory management, and order routing.

* [**Order Fulfillment**](/documents/learn-hotwax-oms/business-processes/order-fulfillment)**:** This section delves into key stages involved in order fulfillment, including order allocation, picking, packing, and shipping. Learn about how each step is designed to maintain efficiency and accuracy in fulfilling customer orders.
* [**Inventory Management**](/documents/learn-hotwax-oms/business-processes/inventory-management)**:** Here, we outline the strategies and practices used to manage inventory across the network. Learn about how inventory levels are monitored, updated, and synchronized with real-time data to ensure optimal stock availability and accurate fulfillment.
* **Order Routing (Upcoming):** This part of the guide explains the mechanisms behind routing orders to the most optimal fulfillment locations. Learn about how HotWax Commerce utilizes intelligent logics and real-time data to route orders to warehouses or stores, ensuring timely and cost-effective deliveries.

By exploring these processes, you will gain valuable insights into how HotWax Commerce supports streamlined omnichannel journeys, enabling you to deliver a cohesive and consistent customer experience across all sales channels.


# Order Fulfillment

Order fulfillment is a critical business process for retailers, orchestrating the journey from order allocation to making it ready for shipping, ensuring timely delivery to the customers' doorstep.

<figure><img src="/files/gJIAWsVwElmq9CdD6W2J" alt=""><figcaption><p>Order allocation and fulfillment</p></figcaption></figure>

## How Order Fulfillment Works

Approved orders are eligible for brokering in HotWax Commerce. The order routing engine brokers orders and looks for the best fulfillment location to allocate them.

<figure><img src="/files/735mbpUsOakMjwZVFqM9" alt=""><figcaption><p>Order fulfillment business process</p></figcaption></figure>

## Automatically Send Fulfillment Request

Once an order item is allocated, a fulfillment request is sent to the assigned fulfillment location. If this location happens to be a warehouse, the allocation details are synced to the WMS or ERP systems, such as NetSuite, used for warehouse fulfillment.

If an order item is allocated to a store, they are automatically reflected in the HotWax Commerce [Store Fulfillment App](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/fulfillment/open-orders.md).

{% hint style="info" %}
HotWax Commerce provides the Store Fulfillment App to quickly and accurately fulfill orders. This app is specifically designed to facilitate easy adoption and minimize the learning curve for store personnel.
{% endhint %}

## Manually Send Fulfillment Request

This scenario usually happens when a customer requests expedited delivery. Because the order routing engine selects a batch of orders based on the configurable routing rules set up by retailers, there's a possibility that this specific order item may be processed later. In such cases, CSRs have the option to bypass the scheduled brokering cycle and manually release items to a fulfillment location, usually the nearest store to the customer's location. HotWax Commerce then sends the fulfillment request to the chosen store location, and the order item is reflected in the Store Fulfillment App, accelerating the order fulfillment process.

#### Additional Actions CSRs can Perform

Following automatic brokering or manual release to a store, CSRs also have an option to include specific handling instructions for order items. In scenarios where expedited shipping is requested by the customer, CSRs can write a message in the handling instructions. These details are then visible in the Store Fulfillment App, enabling store associates to prioritize the fulfillment of these orders in-store accordingly.

## Pick Order Items

The Store Fulfillment App displays orders in a "First In, First Out" (FIFO) sequence, prioritizing orders based on their placement. The app also offers the flexibility to filter orders according to various criteria, including shipping method (such as same-day, next-day, or standard) and customer loyalty status. This feature enables store managers to efficiently manage and fulfill orders based on preferred criteria, ensuring alignment with brand's fulfillment strategies.

For example, some customers may have a loyalty status of "Gold Member," indicating that they are part of a premium loyalty program with exclusive benefits such as priority order processing, or dedicated customer support. By filtering orders based on loyalty status, Store Fulfillment App can help prioritize orders from Gold Members, ensuring exceptional service and fostering customer loyalty.

### Generate Picklist and Assign Pickers

Once store managers determine the batch of orders they wish to fulfill first, they generate a picklist for them. Subsequently, they assign a picker to the picklist so that they can start picking the order items listed in their assigned picklist and begin the fulfillment process.

{% hint style="info" %}
Store managers can also prioritize picking of an individual order item by directly initiating picking and assigning a picker for it.
{% endhint %}

Pickers can start the picking process by printing picklists directly from the Store Fulfillment App.

### Replace Pickers

Store managers can replace an assigned picker with a new one for various reasons, such as unexpected absences or scheduling conflicts. This ensures that operations continue smoothly and customer orders are fulfilled promptly through quick reassignment.

{% hint style="success" %}
As pickers pick order items, HotWax Commerce rate shops to determine the most cost-effective shipping method offered by the carrier that also meets the SLA. Once the shipping method has been selected, HotWax Commerce fetches shipping labels in bulk with tracking codes from the carrier in advance to reduce the packing time.
{% endhint %}

Learn more about [Picking](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/fulfillment/open-orders.md#pick-orders)

## Reject Fulfillment Request

When a picker is unable to find the order item listed in their picklist in the store, store managers have the authority to reject the fulfillment of that specific order item.

{% hint style="info" %}
In case a picker finds difficulty looking up an order item, they can confirm if further search efforts are needed by checking the total available inventory directly from the app.
{% endhint %}

## Reject Fulfillment Request for All Order Items Allocated to Store

When a store is temporarily unavailable for fulfillment due to reasons such as stock unavailability, technical issues, operational challenges, or safety concerns, store managers can reject all pending order items. This helps prevent potential delays or issues with unfulfilled orders until the store is able to resume normal operations.

### Configure Rejection Reasons and their Impact on Inventory

HotWax Commerce Store Fulfillment App offers out of the box rejection reasons for store associates to choose from when they cannot fulfill items in an order and also enables store managers to introduce new ones.

They can also configure whether any rejection, predefined or new, should impact inventory levels directly from the app. This flexibility allows managers to decide if specific rejections will impact the store’s stock levels or simply record the rejection without impacting inventory.

Let’s see how the out of the box rejection reasons offered by HotWax Commerce impact inventory:

| Rejection Reason | ATP Inventory Change          | QOH Inventory Change          | Selling Impact                                                         |
| ---------------- | ----------------------------- | ----------------------------- | ---------------------------------------------------------------------- |
| NOT IN STOCK     | Set to 0                      | Set to 0                      | Prevents new orders until product is back in stock                     |
| MISMATCH         | Decrease by rejected quantity | Decrease by rejected quantity | Product still available but not in specific size or color              |
| DAMAGE           | Decrease by rejected quantity | Unchanged                     | Product remains in stock but cannot be sold due to damage              |
| WORN DISPLAY     | Decrease by rejected quantity | Unchanged                     | Product remains in stock but cannot be sold due to being worn          |
| NO VARIANCE      | Unchanged                     | Unchanged                     | Rejection does not affect inventory; used for non-stock-related issues |

Learn more about [Rejections](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/fulfillment/rejection.md)

## Rerouted Requests

The order routing engine reroutes order items rejected at a store to the next best available fulfillment locations, ensuring minimal disruption to the fulfillment process and maintaining timely delivery for customers.

## Pack Order Items

Once the order items have been picked, they can be quickly packed as HotWax Commerce books the shipment in advance with the shipping carrier and pre-generates shipping labels.

### How HotWax Commerce Further Streamlines Packing Process

* Store associates can add additional boxes or select the most suitable size for order items, directly from the app.
* In the event the packaging team discovers a mispacked order, the app offers an option to unpack it and then begin repacking.
* Store associates have the flexibility to search for and prioritize specific orders for packing.

Learn more about [Packing](#pack-order-items)

## Order Cancellations When Item is Being Prepared for Shipping

Customers often request CSRs to cancel their orders. If the order hasn't been shipped yet, it can be canceled. If HotWax Commerce has already allocated the order to a store, store associates may have already picked or packed the order. In this scenario, the order is canceled in HotWax Commerce and automatically rejected from the Store Fulfillment App, preventing any further actions on the canceled order.

## Ship Order Items

After the order items are packed, the carrier collects them from the store. This marks completion of the fulfillment process in HotWax Commerce.

Once an order has been Completed in HotWax Commerce, this data is also synced with the eCommerce platform along with the tracking number. This ensures customers stay informed about their order progress.

## Additional Scenarios Supported by HotWax Commerce in Order Fulfillment Process

### Order Fulfillment Limit

Store managers have the flexibility to set maximum order limits for their store based on their store’s fulfillment capacity. For example, if a store operates with limited staff, balancing in-store customer service and online order fulfillment can be challenging. In such scenarios, managers can predefine the number of orders they intend to fulfill in a day. The following day, the store becomes eligible for fulfillment again.

### Disabling Locations from Fulfilling Orders

In specific circumstances, store managers may opt to stop order fulfillment entirely. For example, during a store-wide inventory audit or promotional events in-store, it may be impractical to fulfill orders from that store location. In such cases, managers have the ability to directly disable order fulfillment by setting the order limit to 0.

### Configuring Online Selling

In specific circumstances, store managers may need to temporarily remove their store's inventory from online selling. This could be due to various reasons such as low stock levels, prioritizing in-store customer sales, or other internal considerations. In such cases, store managers have the option to directly disable online selling for their store. This flexibility allows managers to focus on fulfilling in-store demand while conserving inventory. Additionally, they can easily re-enable online selling in the future when the situation aligns with their business needs.

Learn more about [additional scenarios supported in Store Fulfillment App](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/fulfillment/fulfillment-setting-page.md)


# Inventory Management

Inventory management business process helps omnichannel retailers accurately track inventory changes and ensure that product availability aligns with customer demand across all sales channels.

## Key Business Processes

The inventory management business process involves transferring inventory between locations, receiving new stock, performing regular cycle counts, and addressing unexpected inventory variances.

* **Inventory transfers:** Retailers move inventory between locations using transfer orders. This process helps balance stock levels across different stores and warehouses, optimizing product availability where it is needed most.
* **Receiving new inventory:** Retailers receive new inventory at their locations with respect to purchase orders and transfer orders. This step is vital for maintaining stock levels and ensuring that products are available for both in-store and online sales.
* **Cycle counting:** Periodic cycle counting at stores involves regularly performing inventory counting of products to ensure accuracy in stock records. This practice helps identify and correct discrepancies in inventory levels.
* **Handling inventory variances:** On a day-to-day basis, retailers encounter inventory variances due to factors such as theft, damage, or administrative errors. Identifying and resolving these variances is crucial for maintaining accurate inventory records.

Accurate inventory management is essential for preventing overselling and underselling on eCommerce platforms, when store inventory is also used for online orders. Keeping up-to-date record of inventory changes ensures that the inventory available for online sale matches the actual stock in stores.

## How Inventory Receiving Works

Both transfer orders and purchase orders are created in ERP systems, like NetSuite. Whenever any new transfer orders or purchase orders are created, they are imported into HotWax Commerce and automatically reflected in the Receiving App for in-store receiving.

### Receiving Transfer Orders in Stores

When there is a need to replenish inventory at retail stores, inventory planners create a warehouse-to-store transfer order in their ERP system. As items in the transfer orders are fulfilled from the warehouse, HotWax Commerce imports them and automatically creates inbound shipments for the corresponding items.

When the store associates verify the inbound shipments and receive them, inventory counts for the corresponding items are automatically increased in HotWax Commerce.

<figure><img src="/files/rUmxrrDFS9bCBjlZPR9n" alt=""><figcaption><p>Transfer order sync</p></figcaption></figure>

#### Creating Shipments in ERP

Many ERP systems, including NetSuite, let you create multiple outbound shipments for a transfer order, and each shipment can have multiple packages. In NetSuite, an outbound shipment is called item fulfillment.

#### Receiving Inbound Shipments in HotWax Commerce

Inbound shipments are created in HotWax Commerce with respect to each outbound shipment in the ERP or WMS. Inbound shipments in HotWax Commerce must be received in one go; partial receipt of shipments is not possible. This means that when an inbound shipment comprises multiple packages, all packages must be received together.

If a package is missing or delayed, associates cannot skip that package and receive another. The entire inbound shipment must still be received in one go.

Many retailers want to track each package and receive them independently.

One way to track this in HotWax Commerce is by creating multiple inbound shipments with respect to each package in the outbound shipment of the ERP/WMS. However, NetSuite does not track which items are in which package for each item fulfillment, meaning it is not possible to identify which package contains which items. Therefore, it is not possible to create inbound shipments with respect to packages in outbound shipments in the case of NetSuite.

If an ERP/WMS other than NetSuite tracks which items are in which package, those details can be used to create an inbound shipment for each package in HotWax Commerce. This way, each package can be tracked and received independently.

In the case of NetSuite ERP, we recommend creating one package for each shipment/item fulfillment. In the event where retailers need to ship three packages, they should create three shipments/item fulfillments, with each shipment having one package. This way, retailers can track and receive each package independently. If tracking individual packages is not a priority for retailers, multiple packages can be received as one shipment in HotWax Commerce.

Learn more about [transfer orders](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/transfer-order/transfer-order-management.md)

<figure><img src="/files/9SOCtLm010pGcTqiHODb" alt=""><figcaption><p>Receiving inbound shipments using HotWax Receiving App</p></figcaption></figure>

#### Handle Receiving of Unexpected Items in a Shipment

Often, mispicks or unexpected variations occur. When store associates identify items that were not expected to arrive, they can easily add the specific SKU to the shipment directly from the app. This ensures accurate record-keeping and helps maintain correct inventory levels. For example, if a shipment is supposed to contain 50 units of SKU101 but the shipment arrives with an additional 10 units of the SKU77, this extra SKU with items can be recorded in the app to update the inventory accurately.

#### Handle Over-Receiving and Under-Receiving

There can be scenarios where the items in a shipment are more or fewer than expected. In such cases, HotWax Commerce lets store associates adjust the quantities accordingly:

**Over-receiving:** If a shipment contains more items than ordered, store associates can receive the extra items, ensuring that inventory records reflect the actual stock on hand. For example, if a shipment was expected to contain 100 units but arrives with 110 units, the extra 10 units can be received and recorded.

**Under-receiving:** If a shipment contains fewer items than ordered, the app allows the receiving of only the items that arrived. For example, if a shipment was expected to contain 100 units but arrives with only 90 units, the app will record the received 90 units, and the missing 10 units can be addressed separately.

Learn more about additional scenarios supported in the [Receiving App](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/receiving/README.md)

### Receiving Purchase Orders in Stores

In most scenarios, purchase orders are received at the warehouse location, and stock is transferred to stores using transfer orders. However, in cases where stores independently raise purchase orders without a warehouse intermediary, HotWax Commerce supports direct receiving at the store level.

<figure><img src="/files/mnCVdtSWNXIRzFhzaYm9" alt=""><figcaption><p>Purchase order sync</p></figcaption></figure>

**Receiving in Parts:** Purchase orders can be received in multiple parts or batches, allowing for flexibility in inventory receiving. For example, a purchase order for 200 units might arrive in two batches of 100 units each. Store associates can receive each batch as it arrives.

**Inbound Shipments:** Once a purchase order has been received, an inbound shipment is created in HotWax Commerce, and inventory counts for the received items are automatically updated.

<figure><img src="/files/CSuJZWAQzdGxXPdTZj8v" alt=""><figcaption><p>Receiving purchase orders using HotWax Receiving App</p></figcaption></figure>

All other features, such as receiving extra items or handling discrepancies, are also offered during the purchase order receiving process, just as they are with inbound shipments. The primary difference is that when you are receiving a purchase order instead of a shipment, you can receive it in parts, unlike shipments which must be received in one go.

### Types of cycle count

Retailers aiming for 98% to 99% inventory accuracy regularly perform cycle counts at their locations to maintain up to date inventory records. Cycle counting is an important inventory management business process for these retailers and should be performed weekly or monthly, depending on the specific needs of the store.

HotWax Commerce provides a dedicated Cycle Count App for retailers that helps them create, assign, schedule and perform cycle counts. What differentiates the app is its role-based interface, operations teams use it to create, assign and review submitted counts, while store associates use it to scan and record item quantities during the count.

<figure><img src="/files/NocgyKullz4LTqqJpJS8" alt=""><figcaption><p>Cycle count sync</p></figcaption></figure>

There are two types of cycle count:

#### Hard count

A hard count is a comprehensive inventory verification process in which every product present in a facility is physically counted. No product is excluded. The goal is to establish a comprehensive and accurate record of all on-hand inventory.

How it works:

During a Hard Count, store associates are assigned to count every item in the facility. The system generates a blank count, requiring associates to record every item they encounter. Once submitted, the system compares counted quantities against recorded system quantities and calculates variance for each product.

Example:

A retail apparel store closes at the end of December for an annual inventory audit. Store associates are divided into teams, each assigned to a section of the store. Over the course of one day, every product — across all categories, sizes, and locations — is physically counted and recorded. The totals are then submitted to the system, which identifies discrepancies between the counted quantities and the system quantities. This entire process constitutes a Hard Count.

#### Directed count

A directed count is a targeted inventory verification process in which only specific, pre-selected products are counted. Rather than auditing the entire facility, the count is directed toward particular items that have been identified for verification.

How it works:

Before a Directed Count is created, the administrator identifies the specific products to be counted and lists their SKUs. These SKUs are entered into the system through the bulk upload file and the system generates a count that includes only those products. When the store associate opens the count, they see only the listed items. No other products are included.

Example:

A store manager at the Broadway location notices that a particular sneaker model has been showing a system quantity of 15 units for the past two weeks, but store associates report the shelf appears nearly empty. The manager creates a Directed Count for that specific SKU, along with two other products that had discrepancies in the previous count. Associates are directed to count only those three products. The count is submitted, the variance is reviewed, and the system quantity is corrected accordingly.

#### Creating & assigning cycle count

Cycle counts are performed for multiple reasons. Many retailers have the SOP for scheduling cycle counts regularly every week or month. Counts are also commonly initiated after high-volume periods, such as Black Friday, to reconcile actual inventory with recorded levels. Stores reporting higher order rejections may be assigned counts to investigate potential inventory discrepancies.

Operations team leverages the Cycle Count App to create cycle counts. Once logged in, they access the admin view, where they can enter product details, add SKUs, and assign the count to a specific location.\
The app also provides a [bulk upload](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/retail-operations/inventory/cycle-count/bulk-upload.md) feature to create and assign multiple cycle counts for different products across locations.

Once the cycle count is created and assigned, the store associates can start performing cycle count.

#### Performing Cycle Count

Store associates are responsible for carrying out the assigned cycle counts. In order to prevent inventory movement during the process, cycle counts are usually conducted either prior to the store opening or following closing hours.

To start the cycle count, associates log into the Cycle Count App. They see a different view than the admins, made specifically for them to perform the count. They scan items present in the count, and the app captures the scanned quantities.\
The app provides an optional view of the system-recorded inventory levels for reference. This view can also be disabled by admins to make sure that store associates submit counts without influence from existing data.\
Once the counting is complete, the associate submits the results for review.

<figure><img src="/files/pNY0oe2iqSKlq3uMbQ6l" alt=""><figcaption><p>Performing cycle count using HotWax Commerce Cycle Count App</p></figcaption></figure>

{% hint style="info" %}
Cycle counts should be performed after receiving the inventory reset from the ERP to ensure alignment with the most current inventory data.
{% endhint %}

#### Reviewing Cycle Count

The operations team reviews the submitted counts and can either approve, reject, or request a recount.\
Once approved, inventory adjustments are automatically applied in HotWax Commerce. For example:\
If a +5 variance is reported, inventory is increased by 5 units\
If a -5 variance is reported, inventory is decreased by 5 units

This automated adjustment process helps maintain accurate system inventory and reduces the need for manual reconciliation.

Learn more about [creating cycle count](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/retail-operations/inventory/cycle-count/README.md) and [performing cycle count](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/store-operations/cycle-count/README.md).

By following these practices and using HotWax Commerce's intuitive apps, retailers can maintain high levels of inventory accuracy and streamline their inventory management processes.


# Introduction

Welcome to the Business Process Models (BPM) designed to provide insights into the inner workings of HotWax Commerce.

* [**Order Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/order-lifecycle)**:** The model outlines the end-to-end flow of an order, from its creation to fulfillment. Learn about the different stages and transitions that an order undergoes as it progresses towards completion.
* [**Store Fulfillment Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/store-fulfillment-lifecycle)**:** The model outlines the journey of fulfilling orders allocated to stores, and the status changes they undergo throughout the process. Learn about how orders are processed and fulfilled within the store network.
* [**Warehouse Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/warehouse-fulfillment-lifecycle)**:** The model outlines the journey of fulfilling orders allocated to warehouses, and the status changes they undergo throughout the process. Learn about how HotWax Commerce stays updated on orders fulfilled within the warehouse network.
* [**Inventory Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/inventory-lifecycle)**:** The model outlines the process of synchronizing inventory data from various systems, calculating Available-to-Promise (ATP), and the changes inventory undergoes. Learn about the events that trigger increases or decreases in inventory.
* [**Transfer Order Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/transferorder-lifecycle)**:** The model outlines the process of inventory movement involving three types of transfer orders, from warehouses to stores, between stores, or from stores to warehouses.
* [**Gift Card Orders Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/giftcard-orders-lifecycle)**:** The model outlines the lifecycle of both digital and physical gift card orders. Learn about the steps in creating, activating, and fulfilling gift card orders in HotWax Commerce.
* [**Returns Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/returns-lifecycle)**:** The model outlines the journey of web and in-store returns creation and completion, and the interactions between different systems involved in the return process. Learn about how web and in-store returns are managed in HotWax Commerce.
* [**Exchanges Lifecycle BPM**](/documents/learn-hotwax-oms/business-process-models/exchanges-lifecycle)**:** The model outlines the journey of web and in-store exchange creation and completion, and the interactions between different systems involved in the exchange process. Learn about how web and in-store exchanges are processed in HotWax Commerce.

By understanding the different events that trigger actions and the resulting outcomes, you'll gain a comprehensive understanding of our operations. Stay tuned as we continue to update and expand upon these models to offer even greater insights into our operations.

## Notations

Before we delve into the specifics of each business process model, let's familiarize ourselves with the notations used in our BPM flow charts.

<figure><img src="/files/Msa37ozXrHIFzf0VaKpw" alt="" width="375"><figcaption><p>Notations</p></figcaption></figure>


# Order Lifecycle

The Order Lifecycle BPM illustrates how HotWax Commerce orchestrates the journey of an order from creation to approval, routing, and fulfillment, ensuring accuracy at every stage.

Customers place their online orders on eCommerce platforms. The order lifecycle in HotWax Commerce starts when these orders are downloaded from eCommerce to HotWax Commerce.

<figure><img src="/files/r9HbJKxQ4on6VM8fSFlu" alt=""><figcaption><p>Order lifecycle business process model</p></figcaption></figure>

## Order Creation

In HotWax Commerce there’s a dedicated `Import Orders` job that downloads new orders from eCommerce in bulk so that they can be further processed. These downloaded orders are automatically assigned a <mark style="color:orange;">**"Created"**</mark> status.

## Order Approval

{% hint style="info" %}
**Why is order approval necessary?**

Only orders with an approved status are eligible for fulfillment in HotWax Commerce and orders without approval remain in the <mark style="color:orange;">**"Created"**</mark> status.
{% endhint %}

**Order approval process:**

In HotWax Commerce, open orders can be automatically approved by the scheduled job `Approve Orders`. This job validates orders based on the predefined criteria for order approval, which may include out-of-the-box or custom criteria set by retailers. If an order satisfies the criteria set for auto-approval, its status is automatically updated to <mark style="color:orange;">**"Approved"**</mark><mark style="color:orange;">.</mark>

For example, some of our customers use the Riskified App to check for fraudulent payments. If the payments are found to be non-fraudulent, orders can be auto-approved.

If an order fails to pass the approval, it remains in the <mark style="color:orange;">**“Created”**</mark> status. Once these orders have satisfied the validation criteria, retailers have two options to approve them:

* In the next scheduled run, the order approval job again picks orders that previously failed the approval to re-validate them, automatically marking them as <mark style="color:orange;">**"Approved"**</mark> upon successful validation.
* Alternatively, Customer Service Representatives (CSRs) have the option to manually update the order status from <mark style="color:orange;">**"Created"**</mark> to <mark style="color:orange;">**"Approved"**</mark> to bypass the waiting period for the next job run.

## Check Order Type

HotWax Commerce supports the processing of various types of orders, including standard orders, BOPIS (Buy Online, Pick Up In Store) orders, Pre-Orders, and Backorders. Here’s a brief explanation of each type:

* **Standard orders:** Standard shipping orders placed online for home delivery.
* **BOPIS orders:** Orders placed online with the intention of picking up the items in-store.
* **Pre-Orders:** Orders placed for products that are not yet available for delivery and will be available on a future promised date.
* **Backorders:** Orders placed for products that are currently out-of-stock, with delivery scheduled for a future promised date.

Each order has its distinct fulfillment process, making it essential to recognize and handle them accordingly for efficient processing. Now, let's explore how HotWax Commerce processes different order types:

## Fulfillment of Standard Orders

All the approved standard orders are sent to the [`Brokering Queue`](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-parkings.md) which serves as a waiting area for orders awaiting processing. Orders in the brokering queue are analyzed and picked in the brokering run.

{% hint style="info" %}
**What are brokering runs:**

Brokering runs are scheduled by retailers to execute at specified intervals, allowing for effective and timely order routing. Retailers need to set a frequency and run time for brokering. For example, setting the frequency of a run to "Daily" and the runtime to "7 am" will execute the brokering run every morning at 7 am.
{% endhint %}

In the brokering run, the `order routing engine` looks for the best fulfillment location to fulfill orders from.

Learn more about [order brokering and routing](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/order-routing/README.md)

## Successful Inventory Allocation

A fulfillment location can primarily be a store or a warehouse location. Let’s understand what happens when the order routing engine allocates an order to a store and warehouse:

### Store Fulfillment Success and Order Completion

If an order has been routed to a store location, it can be fulfilled using the HotWax Commerce <mark style="color:orange;">**Store Fulfillment App.**</mark>

After all the order items in the order are shipped, the order status is updated from <mark style="color:orange;">**“Approved” to "Completed"**</mark> in HotWax Commerce. A `Completed Orders` job in HotWax Commerce also updates tracking details and marks orders as <mark style="color:orange;">**“Fulfilled” in eCommerce.**</mark>

### Store Fulfillment Failure

In the event store associates do not find the inventory to fulfill an order, for reasons such as items being out of stock or damaged, a store manager has the authority to reject that order.

Rejected orders are then automatically sent to the `Rejected Queue`. A dedicated brokering run is performed to check the orders in the `Rejected Queue` and reallocate inventory to them.

When an order includes multiple items and inventory for one of them is unavailable for fulfillment, retailers have two options for handling the situation:

* **Partial rejection:** Retailers can choose to partially reject the order by rejecting only the unavailable item. In this scenario, the order will be split, and the store will ship the available items while the unavailable item will be rebrokered.
* **Full rejection:** Alternatively, retailers who prefer not to split the order, can reject all items in the order if any one item is unavailable for fulfillment. This ensures that the entire order is rejected, prompting the entire order to be rebrokered.

Learn more about [Store Fulfillment](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/store-operations/fulfillment/README.md)

### Warehouse Fulfillment Success and Order Completion

If an order has been routed to a warehouse location, it can be fulfilled using external systems like NetSuite or a Warehouse Management System (WMS).

For orders fulfilled by an external system, HotWax Commerce receives the fulfillment status from the external system and marks the order as <mark style="color:orange;">**“Completed”**</mark>. Once the order status is updated from <mark style="color:orange;">**“Approved” to “Completed”**</mark>, HotWax Commerce sends the tracking details (if they are provided by the external system) to eCommerce and marks the orders <mark style="color:orange;">**“Fulfilled” in eCommerce**</mark>.

### Warehouse Fulfillment Failure

In the event, that a fulfillment location cannot fulfill an order that has been allocated to them and the fulfillment is rejected in the external system, a scheduled job in HotWax Commerce imports rejected orders and automatically moves them to the `Rejected Queue`. A dedicated brokering run is performed to check the orders in the `Rejected Queue` and reallocate inventory to them.

## Failed Inventory Allocation

When inventory is unavailable for orders at any location, the order routing engine moves them from the `Brokering Queue` to the [`Unfillable Parking`](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-parkings.md). A dedicated brokering run is performed to check the orders in the `Unfillable Parking` and allocate inventory to them.

### Auto-Cancellation

**Assigning auto-cancel date**

A scheduled job in HotWax Commerce assigns an auto-cancellation date on orders present in the `Unfillable Parking`. Retailers have the option to configure the timeframe after which unfillable orders are automatically canceled, the default period is set to 7 days.

**Auto-cancellation of unfillable orders**

A scheduled job checks if the auto-cancellation date for unfillable orders has been reached and automatically cancels them once the date is reached. The order status is then automatically updated from <mark style="color:orange;">**“Approved” to “Canceled”**</mark> in HotWax Commerce.

### Avoid Auto-Cancellation

Retailers with prior knowledge of future inventory through their purchase orders can move these unfillable orders in bulk from `Unfillable Parking` to the [`Unfillable Hold Parking`](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-parkings.md) using a CSV file. This action prevents these orders from being automatically canceled and allows them to be fulfilled in the future.

When the inventory arrives, retailers can schedule a brokering run that looks at the orders present in the `Unfillable Hold Parking` and allocates inventory for them.

## Fulfillment of BOPIS Orders

When customers place a BOPIS order on eCommerce, it is downloaded in HotWax Commerce alongside standard orders by the `Import Orders` job.

HotWax Commerce provides an Integration App that can be installed on Shopify. When a customer places a BOPIS order, the app adds a custom tag on line items to specify that it is a BOPIS order.

HotWax Commerce then checks the custom tag on orders. If the tag is present on an order, it is automatically sent to the customer's preferred pickup location without brokering. This is because the fulfillment location is pre-selected for BOPIS orders by customers.

### BOPIS Fulfillment Success and Order Completion

Store associates can view BOPIS orders in their <mark style="color:orange;">**BOPIS Fulfillment App**</mark> and begin preparing the order for customer pick-up.

Once the order is prepared, the customer receives an email informing them that their order is ready for pickup. After an order has been picked up by the customer, the order status is updated from <mark style="color:orange;">**“Approved” to “Completed”**</mark> in HotWax Commerce. A `Completed Orders` job in HotWax Commerce also marks the orders as <mark style="color:orange;">**"Fulfilled" in eCommerce.**</mark>

### BOPIS Fulfillment Failure

In the event store associates cannot find the inventory to fulfill a pick-up order, for reasons such as items being out of stock or damaged, a store manager has the authority to reject that order. All the rejected BOPIS orders are then automatically sent to the [`BOPIS Rejected Queue`](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-parkings/README.md).

In this scenario, an email is automatically sent to the customer for <mark style="color:orange;">**alternative fulfillment options such as pickup from another store or home delivery**</mark>. Retailers can configure these options based on their order fulfillment strategy.

Learn more about [BOPIS Fulfillment](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/store-operations/bopis/README.md)

## Fulfillment of Pre-Orders

Pre-Orders placed on eCommerce are downloaded in HotWax Commerce alongside standard orders by the `Import Orders` job.

When a customer places a Pre-Order, HotWax Commerce Integration App adds a pre-order tag on line items to specify that it is a Pre-Order item.

HotWax Commerce checks if an order has a pre-order tag applied and automatically moves it to the `Pre-Order Parking`. This dedicated queue holds all pre-orders until their physical inventory is received. This ensures that the brokering process is not initiated for Pre-Orders that currently lack inventory but have inventory scheduled to arrive on a future date.

Once the pre-order inventory arrives and the promise date is reached, a dedicated `Auto Releasing` Pre-Order job in HotWax Commerce automatically releases all orders from the `Pre-Order Parking` to the `Brokering Queue`.This enables inventory to be allocated to them for fulfillment.

In the event retailers want control over releasing and fulfilling their Pre-Orders, they can use the HotWax Commerce <mark style="color:orange;">**Pre-Order Management App**</mark> to manually release Pre-Orders from the `Pre-Order Parking` to the `Brokering Queue`.

Learn more about [Pre-Orders Management](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/pre-orders/README.md)

## Fulfillment of Backorders

Similar to Pre-Orders, Backorders are processed in the same manner in HotWax Commerce. The distinction lies in the fact that orders with a backorder tag are automatically moved to the `Backorder Parking` in HotWax Commerce. The releasing and brokering process for Backorders is the same as for Pre-Orders.

For Pre-Orders and Backorders, once they are moved in the `Brokering Queue`, HotWax Commerce treats them as standard orders and allocates inventory for them by assigning the optimal fulfillment location.

## Order Cancellations

For various reasons, customers may decide to cancel their online orders or request CSRs for cancellations. The cancellation can either be made on the eCommerce platform and then updated in HotWax Commerce or cancellations can be made in HotWax Commerce and then updated in the eCommerce platform.

Given that online orders are initiated by customers on eCommerce platforms, HotWax Commerce recommends that cancellations should ideally be made on the eCommerce platform as well.

Now, let's explore what happens when orders are canceled on the eCommerce platform:

A dedicated job `Canceled Items` in HotWax Commerce downloads order cancellations from the eCommerce platform.

**For orders in the "Created" status:**

These are orders for which fulfillment has not yet started in HotWax Commerce. Once all canceled orders are downloaded from eCommerce, HotWax Commerce processes the file to verify the order IDs of the canceled orders and updates their status from <mark style="color:orange;">**"Created" to "Canceled".**</mark>These orders are then moved to the `General Ops Parking` queue.

**For orders in the "Approved" status:**

These are orders for which fulfillment has commenced in HotWax Commerce but they are not yet shipped. Once all canceled orders are downloaded, HotWax Commerce processes the file to verify the order IDs of the canceled orders and updates their status from <mark style="color:orange;">**“Approved” to “Canceled”.**</mark>These orders are then moved to the `Rejected order parking` queue.

If an approved order has been allocated to the store, HotWax Commerce also automatically rejects it in the Store Fulfillment App.

**Orders canceled in HotWax Commerce:**

Similar to order cancellations initiated on the eCommerce platform, in HotWax Commerce, orders can be canceled whether they are in the "Created" or "Approved" status, provided that the order has not yet been shipped. When an order is canceled, its status is updated from <mark style="color:orange;">**"Created" to "Canceled"**</mark> or from <mark style="color:orange;">**"Approved" to "Canceled,"**</mark> depending on the current stage of the order.

## Managing Completed and Canceled Orders from eCommerce

When orders are downloaded from eCommerce into HotWax Commerce in a <mark style="color:orange;">**“Completed” or “Canceled”**</mark> status, they are automatically placed in the `General Ops Parking`.

**So, which orders move to the** `General Ops Parking` **?**

* **Historical orders:** These are orders that were already marked as <mark style="color:orange;">**“Completed” or “Canceled”**</mark> in eCommerce before being downloaded into HotWax Commerce during the implementation phase. For example, a retailer might request that all orders from the last two months also be imported during implementation, even though they have already been fulfilled or canceled. Storing these historical orders separately allows for easy access in case of customer inquiries or returns, without them entering the fulfillment workflow.
* **Newly canceled orders:** Any orders that are canceled in eCommerce before being downloaded into HotWax Commerce are automatically moved to the `General Ops Parking` in a <mark style="color:orange;">**“Canceled”**</mark> status, ensuring that they are not processed further.
* **Completed digital product orders:** Orders for digital products, such as digital gift cards, are downloaded as <mark style="color:orange;">**“Completed”**</mark> and are also placed in the `General Ops Parking` since they require no further processing.

This ensures that only open and actionable orders are processed for fulfillment, while orders that no longer require any operational steps are kept for record-keeping.

## Managing POS Orders

In the previous sections, we discussed various stages of the order lifecycle, primarily focusing on online orders. HotWax Commerce also manages sales made through physical retail locations via POS systems. These in-store purchases, which involve real-time fulfillment, are also downloaded into HotWax Commerce and are automatically assigned a <mark style="color:orange;">**"Completed"**</mark> status. This ensures that the inventory is updated instantly and provides a unified view of both online and in-store sales.

{% hint style="success" %}
The comprehensive process outlined in the Order Lifecycle Business Process Model demonstrates how HotWax Commerce ensures that every order, regardless of its type, is managed efficiently and fulfilled accurately, providing retailers with the control and flexibility needed in an omnichannel environment.
{% endhint %}


# Store Fulfillment Lifecycle

The Store Fulfillment Lifecycle BPM illustrates how HotWax Commerce Store Fulfillment App enables store associates to Pick, Pack & Ship online orders received at stores.

HotWax Commerce, being as an Order Management System, finds the best location to fulfill an online order from. When approved orders are brokered and allocated to a store location, they are automatically reflected in HotWax Commerce Store Fulfillment App.

<figure><img src="/files/e35ymEkMLYfCDG1Iqs2Q" alt=""><figcaption><p>Store fulfillment lifecycle business process model</p></figcaption></figure>

An order will have multiple fulfillments in case it has been split. Each fulfillment will have its independent lifecycle. For example, consider an order containing two items: one item is backordered while the other is in stock. Once the in-stock item is fulfilled, it will follow its lifecycle, and when the backordered item is fulfilled later, it will have its own separate lifecycle.

## Store fulfillment flow

1. Analyze items and generate picklist
2. Pick items
3. Pack items
4. Ship items

## Analyze items and generate picklist

Items that have been successfully allocated to stores have fulfillment status <mark style="color:orange;">**"Reserved"**</mark> in HotWax Commerce.

By default items are arranged in a "First In, First Out" sequence, ensuring that the ones ordered earlier are prioritized. Store managers can filter them based on the shipping method (such as same-day, next-day, or standard) or customer loyalty status.

For example, if store managers wish to prioritize items with tight SLAs, they can filter out those that have a same-day shipping method to initiate batch processing for them.

### Pick items

When store managers determine items they wish to fulfill first, they generate a picklist for them and subsequently, assign a picker so that they can start picking items.

Once the picklist has been generated, the fulfillment status is updated from <mark style="color:orange;">**"Reserved"**</mark> to <mark style="color:orange;">**"Picking"**</mark> in HotWax Commerce.

### Rate shop and book shipment

While pickers scan and pick items, HotWax Commerce rate shops to determine the most cost-effective shipping method offered by the carrier that also meets the SLA, then proceeds to book the shipment.

For example, when a customer opts for 2-day delivery, rate shopping compares shipping methods offered by carriers capable of meeting the specified timeframe. Let's say FedEx provides both Air and Ground Shipping options. In this scenario, HotWax Commerce evaluates these shipping methods, and if both Air and Ground Shipping can deliver the order item within two days, Ground Shipping is automatically booked, as it achieves the same delivery timeframe at a lower cost.

### Generate shipping labels in advance

After booking the shipment, HotWax Commerce fetches advance shipping labels in bulk with tracking codes from the carrier, thereby reducing packing time.

{% hint style="info" %}
It's crucial to note that shipping labels are valid only when an item requires a single package. In the event where an order has multiple items and the packing team uses more than one box for packing, the pre-generated shipping label will not be applicable, as it has been auto-generated for a single package.
{% endhint %}

### Picking failure

#### When does picking failure occur?

* When a picker is unable to find an item listed in the picklist

#### What happens in this scenario?

* Store managers have the authority to reject the specific item.
* The fulfillment status **"Picking"** is automatically removed in HotWax Commerce.

#### Next steps

* The rejected item is processed based on rejection handling rules.
* It may be reallocated or handled through further workflows.

Learn more about [rejection handling](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/store-operations/fulfillment/rejection.md#rejection-reasons) in the relevant documentation section.

## Pack items

Now, when the items have been picked and brought to the packing station, they can be quickly packed since the shipment has already been booked and shipping labels have been pre-generated.

If an order contains multiple items and one box isn’t sufficient to fit all of them, the packing team can add more boxes. In this scenario, the pre-generated shipping label will not serve the purpose, as it has been generated by default for a single package. While packing, the packing teams can regenerate shipping labels as needed.

Once items have been packed, the packing team places them at the designated location in the store from where the carrier will collect them.

The fulfillment status for packed items is updated from <mark style="color:orange;">**"Picking"**</mark> to <mark style="color:orange;">**"Packed"**</mark> in HotWax Commerce.

### Unpack items

If the packing team discovers that they have mispacked an item, they have to unpack it. The fulfillment status is then updated from <mark style="color:orange;">**"Packed"**</mark> to <mark style="color:orange;">**"Picking"**</mark> in HotWax Commerce.

Once the item has been correctly repacked, the fulfillment status in HotWax Commerce is updated to <mark style="color:orange;">**"Packed"**</mark> once again.

## Ship items

Finally, the fulfillment team hands over the packed items to the shipping carrier.

The `Ship Packed Orders` Job in HotWax Commerce checks if packed items have tracking codes assigned and automatically ships them. Fulfillment teams can also manually ship items once the carrier collects them.

Once an item is shipped, its fulfillment status is updated from <mark style="color:orange;">**"Packed"**</mark> to <mark style="color:orange;">**"Shipped"**</mark> in HotWax Commerce.

In the event of a partial shipment, the fulfillment status of the shipped items will be updated to <mark style="color:orange;">**"Shipped"**</mark>, while the order itself will remain in the <mark style="color:orange;">**"Approved"**</mark> status until all items have been shipped.

When all items of an order are <mark style="color:orange;">**"Shipped"**</mark>, the order status is updated from <mark style="color:orange;">**"Approved"**</mark> to <mark style="color:orange;">**"Completed"**</mark> in HotWax Commerce.


# BOPIS Fulfillment Lifecycle

The Buy Online, Pick Up In Store (BOPIS) Fulfillment Lifecycle Business Process Model (BPM) illustrates how HotWax Commerce's BOPIS Fulfillment App enables store associates to manage BOPIS orders from the moment an order arrives at the store to the moment a customer walks out with their purchase.

HotWax Commerce, acting as an Order Management System, routes approved BOPIS orders directly to the customer's chosen pickup store with no brokering needed. The fulfillment location is pre-selected by the customer at checkout. Once the order is allocated, it surfaces automatically in the BOPIS Fulfillment App for store associates to act on.

## BOPIS fulfillment flow

1. Receive order notification
2. Pick items
3. Pack and mark ready for pickup
4. Hand over to customer

## Assign pickup orders

When a customer places a BOPIS order on eCommerce, HotWax Commerce downloads it alongside all other orders using the Import Orders job.

HotWax Commerce automatically assigns the order to the customer's selected pickup store without entering the standard brokering queue. Items allocated to a store are assigned a fulfillment status of "Reserved" in HotWax Commerce.

### Why BOPIS skips brokering

Unlike standard orders, BOPIS orders don't compete for the optimal fulfillment location. The customer has already chosen where to pick up. HotWax Commerce honors that choice and sends the order directly to the designated store.

## Receive order notification

Once a BOPIS order lands in the store's queue, the BOPIS Fulfillment App sends a notification to store associates. A bell icon in the top right of the app shows new incoming orders so associates can take action without delay.

The `Open Orders` page lists all orders awaiting action. Each order card shows the order name, product image, SKU, time since order creation, and current inventory count. Associates can tap the card to open the full `Order Details` page, which includes the customer's name, contact information, payment details, other shipments, and a complete order timeline.

The order list shows the newest orders first by default. Use the order date shown on each card to understand when an order was created.

## Picking

Store associates locate the items in the store and prepare them for the customer. To begin, associates can print a picklist directly from the order card using the printer icon. The picklist opens as a PDF and shows the order number, product details, and quantities to pick.

For orders containing kit products, a Kit tag appears on the order card. Associates can tap the three-dot menu to see the individual components of the kit.

### Picking failure

If a store associate cannot locate an item because it is out of stock, damaged, or mislabeled, a store manager can reject the order or individual items.

### When does picking failure occur?

A picking failure happens when the physical inventory does not match what HotWax Commerce shows as available. Common causes:

* Item is out of stock at the store
* Item is damaged and unfit for sale

Store managers have two rejection options when inventory is missing for an order with multiple items:

* **Partial rejection:** Reject only the unavailable item. The remaining items stay in the order, and the rejected item is sent to the BOPIS Rejected Queue for rerouting or customer notification.
* **Full rejection:** Reject the entire order. The full order is sent to the BOPIS Rejected Queue.

When an order is rejected, an email is automatically sent to the customer outlining alternative fulfillment options such as pickup from another store or home delivery. Retailers configure which options are available based on their fulfillment strategy.

## Pack and mark ready for pickup

Once items are picked, the associate packs the order and taps `Ready for Pickup` on the order card. This moves the order to the `Packed Orders` page and triggers a pickup-ready email to the customer.

On the `Packed Orders` page, associates can resend the pickup notification using the mail icon on the order card, or generate a packing slip using the print icon. If picker tracking is enabled in settings, a prompt will appear when associates tap `Ready for Pickup` on the `Open Orders` page, allowing them to select their name from the list before the order moves to the `Packed Orders` view.

### Gift card activation

If an order includes a physical gift card, a gift box icon appears on the order card. Associates activate the gift card before handing it over by scanning or typing the serial number printed on the card, then tapping `Activate`. Once activated, the code cannot be changed.

### Unpacking an order

If a packing mistake is discovered, associates can open the `Order Details` page to unpack the order. This returns the items back to the `Open Orders` tab so they can be re-verified and corrected before handover.

## Hand over to customer and order completion

When the customer arrives, the store associate locates the order on the `Packed Orders` page and taps `Handover`. A confirmation prompt appears to verify the items are correct and the customer has received them. Once confirmed:

* The order status updates from "Approved" to "Completed" in HotWax Commerce.
* The Completed Orders job in HotWax Commerce marks the order as "Fulfilled" in eCommerce.
* The order moves to the `Completed Orders` page.

If the Proof of Delivery (POD) setting is enabled, associates record the name, ID number, relationship to customer, phone, and email of the person picking up the order. This creates a verifiable handover record. If the pickup person is the billing customer, the `same as the customer` checkbox pre-fills their details.

### Completed orders

The `Completed Orders` tab shows all orders that have been successfully handed over. Each card displays the order ID, customer name, and product details. Associates can download a packing slip using the `Print Customer Letter` button. No further fulfillment actions such as rejection or cancellation can be taken from this page. The `Order Timeline` on the details page logs every event from order creation to pickup.

## Ship to Store

Ship to Store handles BOPIS orders where the requested item is not available for same-day pickup at the customer's chosen store. Instead of rejecting the order, store associates can initiate a Transfer Request to have the item shipped from another store or warehouse to the pickup location.

When the `Show Request Transfer` toggle is enabled in `Settings`, the `Request Transfer` button replaces the standard `Reject` action on order cards and detail pages.

### Ship to Store page

The Ship to Store page is organized into three tabs:

* **Incoming:** Orders that have been shipped from the fulfillment location and are in transit. When the shipment arrives, the associate marks it as `Arrived`. A notification goes to the customer and the order moves to the `Ready for Pickup` tab.
* **Ready for pickup:** Orders physically at the store, waiting for the customer. When the customer collects the order, the associate marks it as `Handover`. The order moves to `Completed`.
* **Completed:** All Ship to Store orders handed over in the past 24 hours.

The BOPIS Fulfillment Lifecycle demonstrates how HotWax Commerce gives store associates everything they need to fulfill pickup orders quickly and accurately. From the moment an order lands in the app to the moment a customer picks it up, every step, including notification, picking, packing, handover, and proof of delivery, is tracked and reflected in both HotWax Commerce and eCommerce in real time.


# Warehouse Fulfillment Lifecycle

The Warehouse Fulfillment Lifecycle BPM illustrates the process of fulfilling an order allocated to a warehouse, followed by synchronizing fulfillment updates to HotWax Commerce.

<figure><img src="/files/8PnG272mrcpHpTdlJNAG" alt=""><figcaption><p>Warehouse fulfillment lifecycle business process model</p></figcaption></figure>

HotWax Commerce, being as an Order Management System, finds the best location to fulfill an online order from. In the event where an approved order is brokered and allocated to warehouse fulfillment location, HotWax Commerce synchronizes allocation details with the Warehouse Management System (WMS) or ERP systems like NetSuite. Once the order is fulfilled, HotWax Commerce then also synchronizes the fulfillment updates from the WMS or ERP systems.

## Orders Pending Fulfillment

Items that have been successfully allocated to warehouses have fulfillment status <mark style="color:orange;">**"Reserved"**</mark> in HotWax Commerce. A scheduled job in HotWax Commerce then synchronizes the allocation details of orders with the ERP or WMS leveraged to fulfill warehouse orders.

Most of our customers use NetSuite ERP to fulfill orders from their warehouses. In this scenario, the order is already present in NetSuite with a status of <mark style="color:orange;">**"Pending Fulfillment"**</mark> because HotWax Commerce synchronizes orders to NetSuite as soon as they are <mark style="color:orange;">**"Created"**</mark> in HotWax Commerce.

For orders allocated to warehouses, a scheduled job in HotWax Commerce generates a feed containing order line items with their respective fulfillment locations and synchronizes it with NetSuite. Once NetSuite’s script reads and consumes this feed, the fulfillment location details is updated on the order item.

Learn more about order [synchronization from HotWax Commerce to NetSuite](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-netsuite/integration-flows/sales-order/order-approval/README.md#synchronize-customers-from-hotwax-commerce-to-netsuite)

## Prepare Shipment

When the warehouse fulfillment team begins the fulfillment process for an order item, an item fulfillment record is automatically generated in NetSuite. Upon picking, packing, and shipping the item, multiple actions take place in NetSuite:

* The item fulfillment record is marked as <mark style="color:orange;">**"Shipped"**</mark>.
* The initial order status <mark style="color:orange;">**"Pending Fulfillment"**</mark> is updated to <mark style="color:orange;">**"Pending Billing"**</mark>.
* Finally, once the invoice is auto generated, the order status is updated from <mark style="color:orange;">**“Pending Billing”**</mark> to <mark style="color:orange;">**“Billed”**</mark>. This marks the completion of the order lifecycle in NetSuite.

### Fulfillment Failure

In the event where a fulfillment team is unable to find an order item to be fulfilled, they reject that specific order. A scheduled job in HotWax Commerce imports the rejected order item feed from NetSuite. Subsequently, all rejected orders are moved to the rejected queue in HotWax Commerce so that they can be rebrokered and allocated to a new fulfillment location.

## Order Item Shipped

A scheduled job in HotWax Commerce synchronizes all the fulfilled order item details from NetSuite and multiple actions take place:

* The fulfillment status of the order item is updated from <mark style="color:orange;">**“Reserved”**</mark> to <mark style="color:orange;">**“Shipped”**</mark>.
* In the event of a partial shipment, the fulfillment status of the shipped items will be updated to <mark style="color:orange;">**"Shipped"**</mark>, while the order itself will remain in the <mark style="color:orange;">**"Approved"**</mark> status until all items have been shipped.
* When the fulfillment status of all items in an order is marked as <mark style="color:orange;">**“Shipped”**</mark>, the order status is updated from <mark style="color:orange;">**"Approved"**</mark> to <mark style="color:orange;">**"Completed"**</mark> in HotWax Commerce.

## Synchronize Fulfillment Updates to eCommerce

Once the order is marked as <mark style="color:orange;">**“Completed”**</mark> in HotWax Commerce, a scheduled job in HotWax Commerce sends the tracking details to eCommerce and marks the orders <mark style="color:orange;">**“Fulfilled”**</mark>.

{% hint style="success" %}
If a retailer uses another WMS or ERP to fulfill warehouse orders:

* HotWax Commerce will synchronize allocation details with the ERP or WMS in place.
* HotWax Commerce will also synchronize fulfillment updates from the ERP or WMS to mark order "Completed" in HotWax Commerce and "Fulfilled" in eCommerce.
  {% endhint %}


# Inventory Lifecycle

The Inventory Lifecycle BPM illustrates how HotWax Commerce calculates the online ATP of a product to maintain accurate sellable inventory on eCommerce platforms

The inventory count of a product is regularly updated due to various factors such as customer purchases made both in-store and online, as well as the receipt of new inventory. These transactions are recorded across different systems. In the Inventory Lifecycle BPM, we've provided detailed insights into how these operational inventory transactions impact the sellable inventory count, that is, `Online ATP` of a product.

<figure><img src="/files/IbxNXcs298eg7GoUUZQr" alt=""><figcaption><p>Inventory lifecycle business process model</p></figcaption></figure>

Before delving into the specifics of Inventory Lifecycle BPM, it's important to understand HotWax Commerce's role in maintaining inventory levels and calculating inventory availability. <mark style="color:orange;">**HotWax Commerce serves as the master of inventory availability**</mark>. Now, what exactly does this mean, and how does HotWax Commerce compute it? Let's see:

In HotWax Commerce, you'll come across three inventory-related terms: **Quantity On Hand (QOH), Available To Promise (ATP), and Online ATP**

* <mark style="color:orange;">**QOH**</mark><mark style="color:orange;">:</mark> Represents the total physical quantity of a product available at stores or warehouses. HotWax Commerce receives daily inventory feeds from the ERP system and real-time inventory updates from the Point of Sale (POS) system to maintain up-to-date inventory data. Additionally, in cases where an ERP system isn't in use, HotWax Commerce also receives inventory feeds from Warehouse Management Systems (WMS) and POS systems.
* <mark style="color:orange;">**ATP**</mark><mark style="color:orange;">:</mark> Represents the physical quantity of a product at stores or warehouses after deducting the reserved inventory, that is, inventory that has been allocated to online orders from the QOH.
* <mark style="color:orange;">**Online ATP**</mark><mark style="color:orange;">:</mark> Represents the unified inventory pool of actual sellable inventory count that is published on eCommerce platforms and can be promised to customers.

### Calculating Online ATP

To calculate `Online ATP`, HotWax Commerce deducts inventory that is not available for sale from the ATP. This includes safety stock, threshold quantities, orders in the brokering queue, and inventory from locations that are not participating in online selling.

* <mark style="color:orange;">**Safety stock**</mark><mark style="color:orange;">:</mark> Inventory set aside at each store specifically for walk-in customers.
* <mark style="color:orange;">**Threshold**</mark><mark style="color:orange;">:</mark> Inventory buffer established at a company level to prevent inventory discrepancies and overselling on eCommerce platforms.
* <mark style="color:orange;">**Orders in the brokering queue**</mark><mark style="color:orange;">:</mark> eCommerce orders awaiting inventory allocation.
* <mark style="color:orange;">**Non participating facilities' ATP**</mark><mark style="color:orange;">:</mark> Inventory at fulfillment locations that have online selling disabled in HotWax Commerce.

#### How it works

HotWax Commerce integrates with ERP, POS, and WMS, to create a unified pool of inventory. After synchronizing inventory totals from all systems, HotWax Commerce calculates the `Online ATP` for eCommerce by subtracting any inventory set aside as safety stock, thresholds, orders in the brokering queue, and inventory at non participating facilities from the physical ATP. This makes HotWax Commerce the ultimate authority on inventory availability and prevents overcommitting on eCommerce platforms.

**Now, let’s understand the breakdown of inventory transactions involved throughout the inventory lifecycle and their recording across various systems:**

## Inventory Transactions in ERP/WMS

ERP systems often serve as the central hub for inventory management within a company. When retailers want to procure new inventory from vendors, they create purchase orders and in the event where they want to transfer inventory between their locations, they create transfer orders. Both purchase orders and transfer orders are created in the ERP systems like NetSuite.

### Inventory Receipts in Warehouses

When new purchase orders are received in warehouses, inventory receipts are directly recorded in the ERP system. A scheduled job in HotWax Commerce performs a daily synchronization of inventory data from the ERP.

In the event inventory for a product is reduced in warehouses for any reason, including incidents of damage, theft, and write-offs or increased due to receipts from returns, is also automatically included when HotWax Commerce performs the daily inventory reset from the ERP. This ensures that a product’s actual physical inventory is accurately reflected as QOH in HotWax Commerce.

When inventory is reset in HotWax Commerce, `Online ATP` is recomputed for all products to ensure inventory availability is being calculated on the latest stock levels.

Most of our customers opt for a daily inventory sync, meaning HotWax Commerce performs inventory sync from the ERP once every day. Retailers seeking more real-time inventory updates from their ERP system have the flexibility to adjust the sync frequency.

### Inventory Receipts in Stores

Stores often face challenges when using ERP systems like NetSuite for inventory management, as these systems can be complex for the store environment and lead to resistance from store associates. HotWax Commerce offers a user-friendly Store Inventory Management Suite that includes an `Inventory Receiving App`, which allows store associates to record inventory receipts, and a `Cycle Counting App`, which facilitates periodic cycle counting and logs any variances that may occur.

HotWax Commerce synchronizes purchase orders and transfer orders created in the ERP system so that store associates can receive inventory arriving at their stores.

#### Purchase Orders

Many retailers receive purchase orders at their warehouse locations and then make distribution plans for sending inventory to other stores through transfer orders. However, for those retailers who exclusively operate through store locations, purchase orders are received directly at the stores.

When new purchase orders are created in the ERP, a scheduled job in HotWax Commerce imports them and they are automatically reflected at the destination store location for inventory receiving.

<mark style="color:orange;">**Auto increase QOH & ATP:**</mark> When the inventory physically arrives at the store, store associates receive items using the Inventory Receiving App. As and when new items are received in the app, QOH and ATP for those products are automatically increased in HotWax Commerce.

When a product’s QOH and ATP is updated in HotWax Commerce, its `Online ATP` is recomputed to ensure sellable inventory for eCommerce is calculated on the latest stock levels.

Learn more about [purchase orders](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-netsuite/integration-flows/purchase-orders.md)

#### Transfer Orders

When new transfer orders are created in the ERP, a scheduled job in HotWax Commerce reads them and automatically creates new inbound shipments at the destination store location for inventory receiving.

<mark style="color:orange;">**Auto increase QOH & ATP:**</mark> When the shipment physically arrives at the store, store associates receive items using the Inventory Receiving App. As and when new items are received in the app, QOH and ATP for those products are automatically increased in HotWax Commerce.

When a product’s QOH and ATP is updated in HotWax Commerce, its `Online ATP` is recomputed to ensure sellable inventory for eCommerce is calculated on the latest stock levels.

Transfer orders can be categorized into three types: store to store, warehouse to store, and store to warehouse. To explore each type, refer to the Transfer Order Lifecycle BPM. In the Inventory Lifecycle BPM, we have taken warehouse to store to explain the concept.

Learn more about [transfer orders](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-netsuite/integration-flows/transfer-order/README.md)

## Inventory Variances in Stores

Maintaining accurate inventory levels in a retail environment is challenging, especially for omnichannel retailers. Discrepancies between physical stock and system records can arise from factors such as theft, damage, or human error during transactions. To address these inconsistencies, stores conduct periodic cycle counts. This helps reconcile actual inventory with system records, ensuring accuracy across all platforms.

HotWax Commerce offers a `Cycle Count App` designed to make the process simple and efficient for operations teams as well as store associates.

Operations teams can schedule cycle counts at specific stores, assigning them to the store associates for execution. Once assigned, store associates are notified and can begin the counting process using the app, scanning products and recording the quantities they find.

These periodic checks help clear inventory discrepancies in real time, so store records reflect accurate quantities.

After completing the cycle count, store associates submit their results, which are then reviewed by operations managers. Once the cycle counting results are approved, HotWax Commerce automatically adjusts the QOH and ATP.

It’s also important to account for these variances in the ERP and keep inventory up-to-date for stores. Before understanding how HotWax Commerce pushes inventory variances to the ERP, let's first see how inventory adjustments resulting from cycle counting are accounted for in HotWax Commerce:

<mark style="color:orange;">**Auto increase QOH & ATP:**</mark> When results show that the physical count exceeds the systemic inventory, the QOH and ATP are increased.

<mark style="color:orange;">**Auto decrease QOH & ATP:**</mark> When results show that the actual physical count is less than what the system shows, the QOH and ATP are reduced accordingly.

When inventory adjustments resulting from cycle counting are recorded in HotWax Commerce, the online ATP for the product is recalculated. This ensures that the sellable inventory available for eCommerce is accurately calculated based on the latest stock levels.

## Push Inventory Variances to ERP

Inventory variances are also pushed to the ERP system. Let’s see how:

HotWax Commerce generates an inventory variance feed and synchronizes it with the ERP platform. Once this feed is consumed by the ERP, inventory levels are automatically updated.

For example, in case of NetSuite as the ERP, HotWax Commerce generates the inventory variance feed, after that HotWax Commerce integration platform transforms this feed and synchronizes it to NetSuite. Once NetSuite’s script consumes this feed, inventory levels of the affected products are automatically updated.

Learn more about [inventory variance synchronization](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-netsuite/integration-flows/cycle-count.md#workflow)

Similarly, in the event where inventory is managed in another third party system, HotWax Commerce inventory variance feed can be used to update inventory in other ERP or WMS.

## Inventory Transactions in POS

When new sales happen in physical retail locations, they are directly recorded in the POS system, which also tracks inventory reductions resulting from these transactions.

<mark style="color:orange;">**Auto decrease QOH & ATP:**</mark> A scheduled job in HotWax Commerce synchronizes in-store sales recorded in the POS system and automatically reduces QOH and ATP for products in HotWax Commerce.

When a product’s QOH and ATP is updated in HotWax Commerce, its `Online ATP` is recomputed to ensure sellable inventory for eCommerce is calculated on the latest stock levels.

## Inventory Transactions in eCommerce

Online orders are captured on the eCommerce platform, a scheduled job in HotWax Commerce downloads these orders so that inventory can be allocated for them.

### Inventory Allocated to Online Orders

**How does HotWax Commerce reduce inventory promised to online sales?**

Online orders are sent to the brokering queue for inventory allocation. As orders are waiting in the brokering queue, HotWax Commerce deducts promised inventory from the `Online ATP`. The reason being, even if the fulfillment location is not yet decided, the captured order has been promised inventory and so it’s important to reduce the sellable inventory, that is, `Online ATP` to prevent overselling on eCommerce platforms.

<mark style="color:orange;">**Auto decrease ATP:**</mark> After the order is allocated to the most suitable store or warehouse, HotWax Commerce automatically reduces ATP at the chosen fulfillment location.

Once the online orders are fulfilled, HotWax Commerce also automatically reduces the QOH of products. HotWax Commerce already has fulfillment updates for the orders fulfilled using the `Fulfillment App`. While, for orders fulfilled from warehouses, HotWax Commerce receives fulfillment updates from WMS or ERP and subsequently reduces the QOH for those products.

This step ensures that the count for physical available inventory is accurately reflected at that specific location.

In the event where a store cannot fulfill an online order allocated to them, HotWax Commerce checks the rejection reasons for the rejected orders and automatically updates ATP and Online ATP.

Learn more about [rejection handling and its impact on inventory](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/store-operations/fulfillment/rejection.md).

When rejections happen in a warehouse, inventory is automatically updated during the daily reset.

## Push Online ATP to eCommerce

All the inventory transactions happening across various systems and scenarios discussed above primarily explains how HotWax Commerce, being the master of inventory availability, consistently recalculates and updates the `Online ATP`.

Other factors that impact the `Online ATP` calculation in HotWax Commerce include <mark style="color:orange;">**updating safety stock, adjusting product thresholds, and reconfiguring fulfillment locations participating in online selling**</mark>.

For example, let's consider a scenario where the initial ATP for a product is 100. The safety stock for a product is set at 5 for four locations, the global threshold is 10, and one of the fulfillment locations, the Brooklyn store, is not participating in online selling and has an inventory count of 50 for that product.

In this scenario, the `Online ATP` would be calculated as follows:

100 - (5 \* 4) - 10 - 50 = <mark style="color:orange;">**20**</mark>

Now, if the safety stock is updated to 2 for four locations, the global threshold to 5, and the Brooklyn store with 50 inventory is made available for online selling, then HotWax Commerce will recalculate online ATP and the updated online ATP would be:

100 - (2 \* 4) - 5 = <mark style="color:orange;">**87**</mark>

Whenever there's a change in a product's inventory, HotWax Commerce recalculates the online ATP in real-time. Now, let's see how this calculated online ATP is pushed to eCommerce platforms.

HotWax Commerce has a ready integration with Shopify eCommerce, here’s how sellable inventory is pushed to Shopify:

A scheduled job in HotWax Commerce checks the inventory records of HotWax Commerce's products and identifies products that have undergone inventory changes since the last inventory synchronization to Shopify.

HotWax Commerce then retrieves information from Shopify about products that have undergone changes in HotWax Commerce. The inventory counts for these products in Shopify are then compared with the inventory counts that HotWax Commerce. After comparing inventory changes, a scheduled job in HotWax Commerce records the difference and generates an inventory feed for the affected products. This feed is then pushed to Shopify, which reads it and updates to either add or deduct inventory based on the changes.

Learn more about [Inventory Synchronization](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-shopify/shopify-integration/inventory/inventory-sync.md)

Similarly, in the event where a retailer has another eCommerce platform, HotWax Commerce can generate a sellable inventory feed with additional development efforts. HotWax Commerce will then calculate sellable inventory, retrieve the products inventory counts from that eCommerce platform, and synchronize the latest inventory difference.


# Transfer Orders Lifecycle

The Transfer Orders Lifecycle BPM illustrates the internal movement of inventory in omnichannel landscape facilitated by warehouses to stores, between stores, or stores to warehouses transfer orders.

Transfer orders are created in the ERP system, they serve various purposes, including:

* <mark style="color:orange;">**Warehouse to Store:**</mark> When there is a need to replenish inventory at retail stores from the central warehouse or distribution center, transfer orders can be initiated to move the required items from the warehouse to the stores.
* <mark style="color:orange;">**Between Stores:**</mark> In cases where one store has excess inventory that another store requires, transfer orders can be used to transfer inventory directly between stores, optimizing stock levels across the retail network.
* <mark style="color:orange;">**Store to Warehouse:**</mark> Sometimes, stores might need to return excess or unsold inventory back to the warehouse for consolidation or redistribution. Transfer orders facilitate this movement from the stores back to the warehouse.

To explain the Transfer Order Lifecycle BPM, we've opted NetSuite as the ERP system, Shopify for eCommerce, and HotWax Commerce for the OMS because most of our customers use this tech stack.

## Warehouse to Store Transfer Orders

<figure><img src="/files/1kpd55KtxKEXXpTWzoSU" alt=""><figcaption><p>Warehouse to store transfer orders lifecycle business process model</p></figcaption></figure>

### 1. Transfer Orders Created in NetSuite

* Inventory planners create transfer orders in NetSuite, specifying the source location as warehouse and the destination location as store. These transfer orders are automatically assigned a <mark style="color:orange;">**“Pending Fulfillment”**</mark> status.
* Fulfillment teams start preparing the transfer order items for dispatch from the warehouse. Once they pick, pack and ship the transfer order items, item fulfillment records are automatically generated in NetSuite with the status <mark style="color:orange;">**“Shipped”**</mark>.
* As soon as the item fulfillment records are marked as <mark style="color:orange;">**“Shipped”**</mark>, inventory counts for the items shipped are reduced in NetSuite and the transfer order status is updated from <mark style="color:orange;">**“Pending Fulfillment”**</mark> to <mark style="color:orange;">**“Pending Receipt”**</mark>.

### 2. Create Inbound Shipments in HotWax Commerce and Start Receiving

* A scheduled script in NetSuite exports the feed of item fulfillment records in <mark style="color:orange;">**“Shipped”**</mark> status. A scheduled job in HotWax Commerce reads this feed and creates inbound shipments at the destination facility.
* HotWax Commerce provides an `Inventory Receiving App` for store associates to easily receive any new inventory arriving at stores.
* Inbound shipments that have been created are automatically reflected in the `Inventory Receiving App`, allowing store associates to receive them in store.

  For example, if a transfer order specifies the Central Warehouse as the source and the Brooklyn Store as the destination, the items from this transfer order will be automatically reflected in the `Inventory Receiving App` at the Brooklyn Store.
* Store associates scan the transfer order items and start receiving inventory. Upon receiving shipments, item receipt records are generated in HotWax Commerce and subsequently, the inventory counts for the items received in the store are increased.

{% hint style="success" %}
It’s crucial to note that inventory counts for the items shipped from the warehouse are reduced in HotWax Commerce on performing daily inventory sync with NetSuite.
{% endhint %}

### 3. Generate and Export Item Receipt Feed from HotWax Commerce

* A scheduled job in HotWax Commerce generates an item receipt feed containing the latest transfer order items that have been received in the store so that this update can be synchronized to NetSuite.

### 4. Item Receipt Records Created in NetSuite

* A scheduled SuiteScript in NetSuite reads the item receipt feed and two actions take place:
  * Item receipt records are created in NetSuite, and inventory counts at the store for the corresponding items are increased.
  * The transfer order status is updated from <mark style="color:orange;">**“Pending Receipt”**</mark> to <mark style="color:orange;">**“Received”**</mark>.

## Store to Store Transfer Orders

<figure><img src="/files/kIdqSIepmQ8buOT1fGZb" alt=""><figcaption><p>Store to store transfer orders lifecycle business process model</p></figcaption></figure>

### 1. Transfer Orders Created in NetSuite and Imported into HotWax Commerce

* Similar to warehouse to store transfer orders, store to store transfer orders are also created in NetSuite, specifying the source location as store and the destination location also as a store. These transfer orders are automatically assigned a <mark style="color:orange;">**“Pending Fulfillment”**</mark> status.
* A scheduled SuiteScript in NetSuite exports transfer orders that have a Pending Fulfillment status and the source location as the store. After that, a scheduled job in HotWax Commerce reads the transfer orders feed and downloads transfer orders in HotWax Commerce with a default <mark style="color:orange;">**“Created”**</mark> status.
* These transfer orders are synchronized to HotWax Commerce so that they can be fulfilled from stores. HotWax Commerce provides a dedicated `Store Fulfillment App` for store associates to fulfill transfer order items from stores.

### 2. Approve Transfer Orders in HotWax Commerce

A scheduled job in HotWax Commerce identifies transfer orders that have a <mark style="color:orange;">**“Created”**</mark> status and automatically marks them <mark style="color:orange;">**“Approved”**</mark>.

**What happens when transfer orders are approved?**

* Upon approval, HotWax Commerce reduces the Available to Promise inventory for the transfer order items that will be fulfilled from the store.
* Approved transfer orders are automatically reflected in the `Store Fulfillment App`.
* Store associates pick the transfer order items they want to fulfill from their store. After picking the items, store associates pack them and proceed to create fulfillments for each item.
* Once the fulfillment has been created, store associates fetch shipping labels from the carrier and the corresponding tracking codes.
* After all items are shipped, transfer orders status is automatically updated from <mark style="color:orange;">**“Approved”**</mark> to <mark style="color:orange;">**“Completed”**</mark> in HotWax Commerce.

Once transfer order items are fulfilled from the store, the QOH for the corresponding items is automatically reduced in HotWax Commerce.

### 3. Generate and Export Item Fulfilled Feed from HotWax Commerce

* A scheduled job in HotWax Commerce generates a fulfilled transfer order items feed containing the latest transfer order items that have been fulfilled from the store so that this update can be synchronized to NetSuite.

### 4. Item Fulfillment Records Created in NetSuite

* A scheduled SuiteScript in NetSuite reads the fulfilled transfer order items feed and two actions take place:
  * Item fulfillment records are created in NetSuite and marked as <mark style="color:orange;">**“Shipped”**</mark>. Subsequently, inventory counts at the source store for the corresponding items are reduced.
  * The transfer order status is updated from <mark style="color:orange;">**“Pending Fulfillment”**</mark> to <mark style="color:orange;">**“Pending Receipt”**</mark>. This step concludes the store to warehouse transfer orders flow.

### 5. Create Inbound Shipments in HotWax Commerce and Start Receiving

* As discussed in `warehouse to store` transfer orders lifecycle, for store to store transfer orders, the receiving process in stores remains consistent. A scheduled SuiteScript in NetSuite exports the feed of item fulfillment records in <mark style="color:orange;">**“Shipped”**</mark> status. After that, a scheduled job in HotWax Commerce reads this feed and creates inbound shipments at the destination facility.
* Inbound shipments that have been created are automatically reflected in the `Inventory Receiving App`, allowing store associates to receive them in store.

  For example, if a transfer order specifies the Times Square Store as the source and the Brooklyn Store as the destination, the items from this transfer order will be automatically reflected in the `Inventory Receiving App` at the Brooklyn Store.
* Store associates scan the transfer order items and start receiving inventory. Upon receiving shipments, item receipt records are generated in HotWax Commerce and subsequently, the inventory counts for the items received in the store are increased.

### 6. Generate and Export Item Receipt Feed from HotWax Commerce

* A scheduled job in HotWax Commerce generates an item receipt feed containing the latest transfer order items that have been received in the store so that this update can be synchronized to NetSuite.

### 7. Item Receipt Records Created in NetSuite

* A scheduled SuiteScript in NetSuite reads the item receipt feed and two actions take place:
  * Item receipt records are created in NetSuite, and inventory counts at the destination store for the corresponding items are increased.
  * The transfer order status is updated from <mark style="color:orange;">**“Pending Receipt”**</mark> to <mark style="color:orange;">**“Received”**</mark>. This step concludes the store to store transfer orders flow.

## Store to Warehouse Transfer Orders

<figure><img src="/files/HeDj0ApzP4dEisCUM2Vb" alt=""><figcaption><p>Store to warehouse transfer orders lifecycle business process model</p></figcaption></figure>

### 1. Transfer Orders Created in NetSuite

* Even when store managers want to transfer inventory to warehouses, the transfer order will be created in NetSuite, specifying the source location as a store and the destination location as a warehouse.
* Once created, these transfer orders are automatically assigned a <mark style="color:orange;">**“Pending Fulfillment”**</mark> status.

{% hint style="info" %}
Similar to the `store to store` transfer order lifecycle we discussed above, <mark style="color:orange;">**(2)**</mark> importing transfer orders into HotWax Commerce, approving them, fulfilling them using the `Store Fulfillment App` and <mark style="color:orange;">**(3)**</mark> ultimately synchronizing item fulfillment records with NetSuite remains the same.
{% endhint %}

### 4. Receive Transfer Orders in NetSuite

* Finally, the inventory planning team manually initiates the receiving process in NetSuite for the store transferred inventory upon its arrival at the warehouse.
* After the receiving process is completed, the transfer order status is automatically updated from <mark style="color:orange;">**“Pending Receipt”**</mark> to <mark style="color:orange;">**“Received”**</mark>, indicating that all transfer order items have been successfully received at the warehouse. Additionally, the inventory count for the newly received inventory is updated in NetSuite.

{% hint style="success" %}
It’s crucial to note that inventory counts for the items received in the warehouse are increased in HotWax Commerce on performing daily inventory sync with NetSuite.
{% endhint %}


# Gift Card Orders Lifecycle

The Gift Card Orders Lifecycle BPM illustrates the process of fulfilling digital as well as physical gift card orders placed by customers on eCommerce.

Gift cards are stored-value cards that carry a value determined at the time of the card's purchase. They are often given as gifts or rewards and are redeemable for products up to the value stored on the card.

To explain the Gift Card Orders Lifecycle BPM, we use NetSuite as the ERP system, Shopify for eCommerce, and HotWax Commerce as the OMS because most customers use this technology stack.

**What is the role of NetSuite?**

NetSuite serves as an ERP system and often as a fulfillment solution in warehouse locations.

HotWax Commerce downloads all orders from Shopify, including gift card orders. Physical and digital gift cards differ in the following ways:

**Physical Gift Cards:**

Physical gift cards are tangible cards that customers can buy online or in-store. These cards come with a unique serial number that customers can use to redeem the value stored in the card. Let’s see what happens when customers place online orders for physical gift cards:

**Preparation and processing:** These cards are assigned a unique serial number and predefined value loaded onto them when they are processed and prepared for shipping.

**Activation:** After processing, gift cards are activated in Shopify so that when customers receive their physical gift card, they can use the gift card serial number to redeem their purchase.

**Digital Gift Cards:**

Digital gift cards, also known as e-gift cards, are virtual equivalents of physical gift cards. Customers receive them via email or text message along with a unique serial number that they can use to redeem the value stored in the card.

**Preparation and processing:** Customers instantly receive digital cards upon purchase via email and therefore they are immediately fulfilled.

**Activation:** Digital gift cards are auto-activated in Shopify.

## Physical Gift Cards

<figure><img src="/files/668sdjnLMvvPT0pRa6sJ" alt=""><figcaption><p>Physical gift card orders lifecycle business process model</p></figcaption></figure>

### 1. Order Creation

As discussed in the [Order Lifecycle BPM](/documents/learn-hotwax-oms/business-process-models/order-lifecycle), a dedicated Import Orders job in HotWax Commerce downloads new orders from eCommerce platforms like Shopify. HotWax Commerce downloads physical gift card orders from Shopify in the same way like any other order item.

### 2. Order Synchronization

The process of synchronizing physical gift card orders from HotWax Commerce to NetSuite remains straightforward like any other order item. A dedicated job in HotWax Commerce prepares and exports a feed of orders marked as <mark style="color:orange;">**"Created"**</mark> to NetSuite.

NetSuite's SuiteScript then consumes this order data and generates orders in the <mark style="color:orange;">**"Pending Fulfillment"**</mark> status.

### 3. Synchronize order IDs and item line IDs to HotWax Commerce

HotWax Commerce confirms successful order-item synchronization with NetSuite. A dedicated job downloads NetSuite internal IDs, while another downloads NetSuite item line IDs. This process triggers multiple actions in HotWax Commerce and NetSuite:

* A scheduled job in HotWax Commerce also creates customer deposit records in <mark style="color:orange;">**“Undeposited”**</mark> status in NetSuite.
* A scheduled job in HotWax Commerce updates the order status from <mark style="color:orange;">**"Created"**</mark> to <mark style="color:orange;">**"Approved".**</mark>

As discussed in Order Lifecycle BPM, only orders with approved status are eligible to be brokered in HotWax Commerce and orders without approval remain in the <mark style="color:orange;">**"Created"**</mark> status.

Approved physical gift card order items are brokered in HotWax Commerce. After allocation, HotWax Commerce begins syncing them to the systems responsible for fulfillment.

### 4. Order Brokering in HotWax Commerce

Now that physical gift card orders have been approved, they are automatically sent to the `Brokering Queue` which serves as a waiting area for orders awaiting processing. Just like regular order items in this queue, gift card items are also analyzed and picked in the brokering run and subsequently the order routing engine allocates them to optimal fulfillment location.

In the event where a gift card order is allocated to a warehouse fulfillment location, HotWax Commerce synchronizes allocation details to NetSuite.

When a gift card is allocated to stores for fulfillment, they automatically show up in the HotWax Commerce `Fulfillment App`.

### 5. Orders Allocated to Warehouse

A dedicated job in HotWax Commerce synchronizes gift card items with their respective fulfillment locations to NetSuite.

NetSuite’s SuiteScript consumes this feed and updates the fulfillment location for corresponding gift card orders.

When the warehouse fulfillment team begins the fulfillment of a gift card, an item fulfillment record is created in NetSuite. As soon as the item is picked, packed and shipped multiple actions take place in NetSuite:

* The item fulfillment record is marked as <mark style="color:orange;">**“Shipped”**</mark>.
* The initial order status is updated from <mark style="color:orange;">**“Pending Fulfillment”**</mark> to <mark style="color:orange;">**“Pending Billing”**</mark>.
* Finally, once the invoice is auto generated, the order status is updated from <mark style="color:orange;">**“Pending Billing”**</mark> to <mark style="color:orange;">**“Billed”**</mark>.

### 6. Activation of Gift Cards

NetSuite’s script generates a feed containing gift card items, their assigned serial numbers, and values corresponding to the gift card orders.

A scheduled job in HotWax Commerce Integration Platform reads this feed, runs a transformation, and generates a JSON file with the relevant data required for the gift card activation, including gift card items, their assigned serial numbers, and corresponding values in NetSuite.

Finally, once the JSON is prepared, HotWax Commerce Integration Platform initiates the gift card activation process in the eCommerce platform. Because most of our customers are using Shopify as their eCommerce platform, in this scenario HotWax Commerce Integration Platform calls Shopify API to activate the gift card.

### 7. Order Item Shipped

NetSuite's script exports item fulfillment records marked as <mark style="color:orange;">**"Shipped"**</mark>. A scheduled job in HotWax Commerce consumes this feed, and following actions take place:

* The fulfillment status of the corresponding gift card order item in HotWax Commerce is updated to <mark style="color:orange;">**"Shipped"**</mark>.
* The order status is automatically updated from <mark style="color:orange;">**"Approved"**</mark> to <mark style="color:orange;">**"Completed"**</mark> in HotWax Commerce.

### 8. Allocate orders to store

Let's take a look at how physical gift card orders are fulfilled from stores.

When physical gift cards are allocated to a store, they automatically appear in the HotWax Commerce `Fulfillment App`. The store’s fulfillment team uses the app to prepare these gift card orders for shipment.

* Once a gift card item is successfully picked, the fulfillment status changes to <mark style="color:orange;">**"Picked"**</mark>.
* After packing, the status updates to <mark style="color:orange;">**"Packed"**</mark>.
* As part of the process, store associates assign a unique serial number to each gift card and load the corresponding value onto it.
* Finally, when the item is marked as shipped in the `Fulfillment App`, the fulfillment status is then updated to <mark style="color:orange;">**"Shipped"**</mark>.

### 9. Activate gift cards

HotWax Commerce **Fulfillment App** also enables store associates to activate gift cards directly. During fulfillment, when a unique serial number is applied and the value is loaded onto the card, HotWax Commerce runs a scheduled job to sync these codes to Shopify, where the gift cards are activated.

This activation step ensures that the gift card is fully functional and customers can use the unique serial number they received in their email to redeem the value stored in the gift card.

### 10. Ship order items

When all items of an order are marked <mark style="color:orange;">**“Shipped”**</mark> in the `Fulfillment App`, the order status is automatically updated from <mark style="color:orange;">**“Approved”**</mark> to <mark style="color:orange;">**“Completed”**</mark> in HotWax Commerce.

In HotWax Commerce, a scheduled job prepares and exports a feed containing gift card items marked as <mark style="color:orange;">**“Shipped.”**</mark> NetSuite’s script consumes these records and multiple actions take place:

* The item fulfillment record is created and marked as <mark style="color:orange;">**“Shipped.”**</mark>
* The initial order status is updated from <mark style="color:orange;">**“Pending Fulfillment”**</mark> to <mark style="color:orange;">**“Pending Billing”**</mark>.
* Finally, once the invoice is auto generated, the order status is updated from <mark style="color:orange;">**“Pending Billing”**</mark> to <mark style="color:orange;">**“Billed”**</mark>.

This marks the completion of physical gift card orders in NetSuite.

### 11. Synchronize fulfillment updates to eCommerce

Once a gift card order reaches the <mark style="color:orange;">**"Completed"**</mark> status in HotWax Commerce, a scheduled job in HotWax Commerce sends the tracking details to Shopify and marks the gift card orders as <mark style="color:orange;">**“Fulfilled”**</mark>.

This process remains consistent regardless of whether the gift card order fulfillment is performed in NetSuite or the `Fulfillment App`.

{% hint style="success" %}
This marks the completion of the physical gift card order lifecycle.
{% endhint %}

{% hint style="info" %}
When walk-in customers purchase a physical gift card from the store, it is treated as a regular POS order in HotWax Commerce. HotWax Commerce syncs those orders with NetSuite in the POS sales synchronization to NetSuite.
{% endhint %}

## Digital Gift Cards

<figure><img src="/files/m1LQxW0ljEFc4I1Upf9w" alt=""><figcaption><p>Digital gift card orders lifecycle business process model</p></figcaption></figure>

### 1. Order Creation

When customers order a digital gift card on Shopify, after the order is created, Shopify immediately auto fulfills the order, assigns a serial number to digital gift card, loads the value to activate the gift card and consequently, when HotWax Commerce downloads that order from Shopify, it is automatically marked as <mark style="color:orange;">**“Completed”**</mark>.

{% hint style="info" %}
Digital gift cards are auto-activated and customers can directly redeem them by entering a unique serial number provided with the card.
{% endhint %}

### 2. Order Synchronization

Digital gift cards are already in the <mark style="color:orange;">**“Completed”**</mark> status in HotWax Commerce. HotWax Commerce also synchronizes them with NetSuite so that customer deposits can be created against them and invoices can be generated.

* A scheduled job in HotWax Commerce Integration Platform generates a feed of gift card orders that are in <mark style="color:orange;">**“Completed”**</mark> status and do not have NetSuite order item line IDs. This helps make sure that only relevant orders are synchronized to NetSuite and regular orders that are <mark style="color:orange;">**“Completed”**</mark> in HotWax Commerce are not synchronized again to NetSuite.
* NetSuite’s script reads this feed and creates gift card orders in the <mark style="color:orange;">**“Pending Fulfillment”**</mark> status.

### 3. Synchronize order IDs and item line IDs to HotWax Commerce

A dedicated job in HotWax Commerce downloads NetSuite's internal IDs, while another job downloads NetSuite's item line IDs.

* Once NetSuite order ID and item line IDs are synced to HotWax Commerce, a scheduled job in HotWax Commerce creates customer deposits for corresponding gift card orders in the <mark style="color:orange;">**“Undeposited”**</mark> status in NetSuite.
* By default, non-inventory items such as digital gift cards are not eligible for physical fulfillment in NetSuite. NetSuite automatically marks them as fulfilled and updates their status from <mark style="color:orange;">**“Pending Fulfillment”**</mark> to <mark style="color:orange;">**“Pending Billing.”**</mark>
* Subsequently, NetSuite automatically generates an invoice with the status <mark style="color:orange;">**“Paid,”**</mark> and updates the customer deposit status from <mark style="color:orange;">**“Not Deposited”**</mark> to <mark style="color:orange;">**“Fully Applied.”**</mark>

{% hint style="success" %}
This marks the completion of the digital gift card order lifecycle.
{% endhint %}

{% hint style="success" %}
It's crucial to note that both physical and digital gift cards, once activated on Shopify or Shopify POS, can be redeemed by customers either online or in-store.
{% endhint %}


# Returns Lifecycle

HotWax Commerce, being an Order Management System, forwards the responsibility of managing returns to specialized Return Management Systems. This means that most of the process in the return lifecycle will be handled by a third-party Return Management System (RMS).

Many of our customers use Loop as their RMS to process web returns. When it comes to in-store returns, some of our customers use Shopify POS, while others opt for the Loop POS App.

When Loop processes web returns and the Loop POS App handles in-store returns, HotWax Commerce simply downloads returns for reconciliation purposes. While, when Shopify POS is used to process in-store returns, HotWax Commerce is responsible for syncing returns to ERP systems like NetSuite to ensure accurate ledger posting.

Now, let's delve into how the lifecycle of web and in-store returns is managed with these systems in play:

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Web returns with Loop</td><td><a href="/pages/Rf6ztFCmOyKnFpw0NedR">/pages/Rf6ztFCmOyKnFpw0NedR</a></td></tr><tr><td>In-store returns with Shopify POS</td><td><a href="/pages/Og6brsVSHl3ywH3s4V50">/pages/Og6brsVSHl3ywH3s4V50</a></td></tr><tr><td>In-store returns with Loop</td><td><a href="/pages/H5o6wmpXoEMtGZVSFknE">/pages/H5o6wmpXoEMtGZVSFknE</a></td></tr></tbody></table>


# Web Returns with Loop

The Web Return Lifecycle BPM illustrates how returns are managed between RMS, eCommerce, ERP, and HotWax Commerce.

<figure><img src="/files/uNwZkEY9xRVWj08uiN7m" alt=""><figcaption><p>Web returns lifecycle business process model</p></figcaption></figure>

Customers start their return process in Shopify, and Loop manages the return process. From there, HotWax Commerce Integration Platform connects the systems by transforming and syncing return data to NetSuite. This keeps every step, from return creation to refund and inventory updates, in sync.

To explain the return lifecycle, we've taken Shopify as the eCommerce platform, Loop as the Return Management System (RMS), NetSuite as the ERP, and HotWax Commerce as both the Order Management System (OMS) and the Integration Platform.

## 1. Customers Initiate Online Returns

The return process begins in Shopify, where the customer initiates a return. They are then automatically redirected to the Loop interface to complete their request, where they provide return details, including:

* Order ID and items being returned
* Return reason
* Preferred resolution (refund, exchange, or store credit).

Once a customer submits their return request, Loop creates an RMA in <mark style="color:orange;">**"Open"**</mark> status.

## 2. Create Return in Shopify

Loop automatically syncs this new return to Shopify, adding the <mark style="color:orange;">**"Return in Progress"**</mark> status to the original sales order. This helps retailers track the entire return process directly in Shopify, their primary sales platform, for better traceability and control.

## 3. Download and Transform Returns Data From Loop

To maintain accurate financial records and inventory updates, every return created in Loop must be synced to NetSuite, and that’s where HotWax Commerce Integration Platform plays a key role. HotWax Commerce Integration Platform has subscribed to Loop’s webhook, so whenever a return is created in Loop, it automatically receives the return data file.

* Loop only sends basic return info like the Loop Return ID, Return Total, and Shopify Order ID. However, NetSuite needs more specific data to record returns and link each return (RMA) to the correct original order.
* HotWax Commerce Integration Platform adds more details to this data by fetching the HotWax Order ID, NetSuite Order ID, and Shopify Product SKU from HotWax OMS.

Once all the necessary details are fetched, HotWax Commerce Integration Platform transforms the return data into a format compatible with NetSuite.

**Why is this important?**

Most third-party tools like NovaModule only move data from one system to another. HotWax Commerce brings together return, order, and product details to create a clear link between the return and the original sales order.

## 4. HotWax Commerce Exports Return Data for NetSuite

Once the RMA data is transformed, HotWax Commerce Integration Platform exports this data.

## 5. NetSuite Imports and Creates RMA

A scheduled SuiteScript in NetSuite runs at regular intervals and checks for new return files.

If a new return file is found, NetSuite reads and processes it. Then, it creates an RMA and marks it as <mark style="color:orange;">**"Pending Receipt"**</mark>.

The RMA is also linked to the original sales order. This helps keep track of the return and lets the warehouse team know in advance that the item will be coming back.

## 6. Process and export Item Receipt records

After a few days, when the customer's returned item is physically received at the warehouse, the following actions take place:

* An Item Receipt record is created and linked to the RMA.
* The returned product is restocked, and the inventory count is updated in NetSuite.
* The RMA status updates from <mark style="color:orange;">**"Pending Receipt"**</mark> to <mark style="color:orange;">**"Pending Refund”**</mark>.

When the Item Receipt record is created in NetSuite, a CSV file is generated containing Loop’s return ID for reference. This file is then placed at the designated location.

This step is important for completing the return process in Loop; let’s see how in the next steps.

## 7. Import Item Receipt Records From NetSuite

A job in the HotWax Commerce Integration Platform regularly checks for new CSV files. When it finds one, it extracts the Loop Return IDs so that Loop can initiate the refund process for items that have been returned.

## 8. Close Returns in Loop

Based on the Loop return IDs, HotWax Commerce triggers Loop to take the next steps in the return process:

* The return status is changed from <mark style="color:orange;">**“Open”**</mark> to <mark style="color:orange;">**“Closed”**</mark>.
* Once the return is marked as Closed in Loop, different actions happen depending on what the customer chose in their return request:
  * If the customer opted to receive a refund on their original payment method, Loop triggers Shopify to process the refund.
  * If the customer selects "Return for Store Credit," Loop automatically issues a gift card to the customer for the corresponding amount.
  * If the customer selects "Exchange," Loop creates a new exchange order in Shopify.

## 9. Refund Initiated and Return Closed in Shopify

As soon as Shopify processes the refund to the customer’s original payment method, it updates the return status from <mark style="color:orange;">**“In-Progress”**</mark> to <mark style="color:orange;">**“Returned”**</mark>, marking the return as Complete in Shopify. At the same time, Shopify syncs the refund details back to Loop.

## 10. Refund Data is Fetched and Transformed

HotWax Commerce subscribes to Loop’s webhook to receive refund details, which it then transforms and exports to NetSuite for further processing.

## 11. Import Refund Details in NetSuite

A SuiteScript in NetSuite imports and processes this data, then triggers multiple actions:

* A Credit Memo is created in the <mark style="color:orange;">**"Open"**</mark> status and linked to the RMA.
* A Customer Refund record is automatically created based on the refund method and linked to the Credit Memo.
* Once the Customer Refund record is created, the Credit Memo is updated from <mark style="color:orange;">**"Open"**</mark> to <mark style="color:orange;">**"Fully Applied"**</mark>, and the RMA status is updated from <mark style="color:orange;">**"Pending Refund"**</mark> to <mark style="color:orange;">**"Refunded"**</mark>.

## 12. Download Completed Returns From Shopify in the OMS

HotWax Commerce uses a scheduled job to sync all Completed returns from Shopify, ensuring consistency across systems.

## 13. Restock inventory in HotWax Commerce

* A scheduled inventory sync job regularly updates stock levels from NetSuite to HotWax Commerce.
* HotWax then synchronizes the updated inventory levels to Shopify, ensuring accurate stock levels across all channels.

To prevent duplicate inventory updates, HotWax recommends disabling the inventory restock feature in Loop, as NetSuite and HotWax manage inventory adjustments.

### How HotWax Commerce OMS Helps with Return Reconciliation

To maintain data integrity, HotWax Commerce provides an auditing tool, OReSA, that automatically compares return totals from the eCommerce platform with the ERP.

In case any inconsistencies are found, the returns audit dashboard provides a gap analysis report that highlights the monetary gaps in both systems.


# In-Store Returns with Shopify POS

The In-Store Returns Lifecycle BPM illustrates how in-store returns are managed between POS as RMS, ERP, and HotWax Commerce.

<figure><img src="/files/zuO2lgXwBFdY0QN2RNVI" alt=""><figcaption><p>In-store returns lifecycle business process model</p></figcaption></figure>

Many Shopify retailers allow customers to return items directly in stores using the Shopify POS App. Whether the item was purchased online or in person, store associates can easily look up the order, process the return, and issue a refund all within the app.

Once the return is completed, Shopify POS creates a return record and restocks the inventory. HotWax Order Management System syncs the return, updates inventory, then HotWax’s Integration Platform transforms the data, and syncs it to NetSuite for final processing. This ensures all systems stay in sync, and the return is reflected end-to-end, from store to backend systems.

## 1. In-Store Return by Customer

Customers visit their preferred store to return an in-store purchase or an online order. The store associate looks up the order using the customer’s order ID. Once the order is found, the return is processed by:

* Selecting the item being returned
* Choosing the reason for return
* Issuing a refund to the customer

## 2. Returns Created in Shopify POS

Once the refund process is completed in Shopify POS, multiple actions take place:

* Returned inventory is restocked at the designated store location.
* A return under the order is created in Shopify POS with the returned item marked as <mark style="color:orange;">**“Returned”**</mark>, and the payment status is updated as <mark style="color:orange;">**“Refunded”**</mark>.

## 3. Import POS Returns in HotWax Commerce

HotWax OMS automatically downloads return data from Shopify at regular intervals. Once downloaded, the returned orders are marked as <mark style="color:orange;">**“Completed”**</mark> and with payment as <mark style="color:orange;">**“Refunded”**</mark> status.

HotWax Commerce also updates the inventory, restocking the returned item at the same store where it was received.

## 4. Transform and Export Returns Data

HotWax’s Integration Platform fetches POS returns data from HotWax Commerce OMS, transforms the data into a format compatible with NetSuite and exports it.

## 5. Import POS Returns in NetSuite

A scheduled SuiteScript in NetSuite automatically reads and downloads the returns data and takes the following steps:

* An RMA is created with <mark style="color:orange;">**"Pending Receipt"**</mark> status and linked to the original order.
* An Item Receipt record is created to confirm that the returned item has been received. This record is linked to the RMA, and the item is restocked at the same store where it was returned.
* Once the Item Receipt record is created, the RMA is automatically updated to <mark style="color:orange;">**"Pending Refund status"**</mark>.
* A Credit Memo is created in <mark style="color:orange;">**"Open"**</mark> status and linked to the RMA.
* A Customer Refund record is automatically created based on the refund method and linked to the Credit Memo.
* Once the Customer Refund record is created, the Credit Memo is updated from <mark style="color:orange;">**"Open"**</mark> to <mark style="color:orange;">**"Fully Applied"**</mark>, and the RMA status is updated from <mark style="color:orange;">**"Pending Refund"**</mark> to <mark style="color:orange;">**"Refunded"**</mark>.

This entire process, from receiving the returned item to issuing the refund, begins automatically as soon as a customer completes an in-store return.

HotWax ensures that all return data is synced to NetSuite, allowing everything from creating a return record to issuing a refund to happen smoothly and automatically. This also keeps financial records accurate and makes reconciliation easier.

{% hint style="info" %}
When retailers record in-store purchases as cash sales in NetSuite, POS returns do not require an RMA. Instead, a Cash Refund record is created, and the inventory is automatically restocked at the store. However, if in-store purchases are recorded as sales orders in NetSuite, the return follows the full RMA process, just like web returns.
{% endhint %}


# In-Store Returns with Loop

The In-Store Returns Lifecycle BPM illustrates how in-store returns are managed between RMS, POS, ERP, and HotWax Commerce.

<figure><img src="/files/CSHwTY3V7s9lH8n8fPKz" alt=""><figcaption><p>In-store returns lifecycle business process model</p></figcaption></figure>

Customers who live near a brick-and-mortar store or those who prefer to get instant refunds opt for returning their purchases directly in-store.

To explain the POS Returns lifecycle, we've taken Loop POS App as the RMS, Shopify POS as POS, and NetSuite as the ERP system, while HotWax Commerce serves as the OMS.

## Customers Return in Store

Customers visit their preferred store to return their purchases. Upon arrival, they provide order details to the store associate, who then looks up the order using either the order number or the customer's name.

## Look-Up Specific Order

Store associates use the Loop POS App to search the customer's order. Once identified, they start processing the order return.

## Return Initiated

Store associates choose the item being returned, designate the restock location to facilitate inventory replenishment, and also specify the reason for the return. Upon completion of these steps, the order is ready to be returned.

## Refund Initiated

Store associates complete the return process by initiating the refunds to customers. Once refunds are processed from the Loop POS App, the return status is marked as <mark style="color:orange;">**"Processed"**</mark>.

## Returns Created in Shopify POS

Once the return process is completed in the Loop POS Returns App, multiple actions take place in Shopify and NetSuite, let’s understand them in detail:

* Loop creates a return under the order in Shopify POS.
* For a return under order, Loop marks the returned item as <mark style="color:orange;">**“Returned”**</mark>, updates the payment status as <mark style="color:orange;">**“Refunded”**</mark> and restocks the returned inventory in Shopify POS.
* Loop creates a cash refund record in NetSuite and also adds the associated cash sale ID in the memo so that the original order can be easily looked up. When cash refund records are created, inventory is automatically restocked in NetSuite.

{% hint style="success" %}
It's crucial to understand that in-store returns are instantaneous because the return request and receipt happen simultaneously. This is the reason why these in-store returns are initially processed and completed in Loop and subsequently sent to other systems like Shopify POS, NetSuite, and HotWax Commerce, unlike web returns.
{% endhint %}

## POS Returns Downloaded from Shopify POS to HotWax Commerce

A scheduled job in HotWax Commerce downloads the return data from Shopify POS. These returns are downloaded in <mark style="color:orange;">**“Completed”**</mark> status and the payment in <mark style="color:orange;">**“Refunded”**</mark> status in HotWax Commerce.

HotWax Commerce also restocks the returned inventory because of the visibility into the specific location where the inventory is received.

These POS returns are not synchronized to NetSuite again because this part has already been handled by Loop.

#### Why is Downloading POS Returns Crucial in HotWax Commerce? <a href="#why-is-downloading-returns-crucial-in-hotwax-commerce" id="why-is-downloading-returns-crucial-in-hotwax-commerce"></a>

To ensure data integrity, HotWax Commerce provides an auditing tool OReSA that automatically compares in-store return totals of the POS system with the ERP.

In case any inconsistencies are found, the returns audit dashboard provides a gap analysis report that highlights the monetary gaps in both systems.


# Exchanges Lifecycle

Exchanges involve customers purchasing a new item as a replacement for a returned one. Our customers use Loop as their RMS to process the returned item and create a new exchange order on eCommerce platform.

For both web returns and in-store exchanges, HotWax Commerce being an OMS takes the responsibility of downloading and processing new exchange orders from eCommerce as well as synchronizing them with ERP systems such as NetSuite.

We are currently in the process of designing the workflow for in-store exchanges when Shopify POS is used. In the meantime, let's delve into how the lifecycle of web and in-store exchanges is managed with these systems in play:

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Web exchanges with Loop</td><td><a href="/pages/h476ziqqcRqOn8GI7mVl">/pages/h476ziqqcRqOn8GI7mVl</a></td></tr><tr><td>In-store exchanges with Loop</td><td><a href="/pages/SOmGhLTgoYIeeomj7cUH">/pages/SOmGhLTgoYIeeomj7cUH</a></td></tr></tbody></table>


# Web Exchanges with Loop

The Web Exchange Lifecycle BPM illustrates how exchanges are processed between RMS, eCommerce, ERP, and HotWax Commerce.

<figure><img src="/files/0mDzFDDFdWqesyKJl1WC" alt=""><figcaption><p>Web exchanges lifecycle business process model</p></figcaption></figure>

In the context of returns, an exchange refers to a transaction in which a customer returns a purchased item and, instead of receiving a refund or store credit, opts to swap the returned item for a different product. This lets the customer exchange the initially purchased item for another one.

To explain the exchange lifecycle, we've taken Loop as the RMS, Shopify as the eCommerce platform, and NetSuite as the ERP system, while HotWax Commerce serves as the OMS.

## 1. Exchanges Initiated in Loop

As discussed in [Web Returns Lifecycle](/documents/learn-hotwax-oms/business-process-models/returns-lifecycle/loop-web-returns-lifecycle), Loop lets customers directly initiate returns against their web orders. If customers want to buy another product by returning an item, the Loop customer portal lets them submit an exchange request.

When customers complete their exchange process, a Return Merchandise Authorization (RMA) is created in Loop in the <mark style="color:orange;">**“Open”**</mark> status against the return item.

## 2. Return Under Order Created in Shopify

Loop updates the order details in Shopify by creating a return under order, reflecting that a return has been requested by the customer.

## 3. RMA Created in NetSuite

Loop also generates an RMA in the <mark style="color:orange;">**“Pending Receipt”**</mark> status in NetSuite using a third-party integration app like Novamodule. This gives the warehouse teams a heads-up that an order item will be coming back.

## 4. Return Item Successfully Received in the Warehouse

To receive the requested new order item in exchange, customers must return the original order.

Customers print the shipping label provided by Loop and prepare the return package to ship their items back to the retailer so that they can receive the new item they requested.

When the return package reaches the warehouse, the warehouse teams initiate receiving of the return item against the RMA and the following actions take place:

* Item receipt records are created in NetSuite against the RMA, and the returned inventory is restocked.
* The status of RMA is updated from <mark style="color:orange;">**“Pending Receipt”**</mark> to <mark style="color:orange;">**“Pending Refund”**</mark>.

## 5. Return Receipt Records Created in Loop

Item receipt records created in NetSuite are synchronized to Loop using a third-party integration app. Consequently, return receipt records are generated in Loop.

## 6. Refund Records Created

When item receipt records are generated in Loop, multiple actions take place in NetSuite and Shopify, let’s understand them in detail:

Creating refund records is essential to mark the completion of the return process and closing RMA in NetSuite.

* Return receipt records trigger the creation of refund records in Loop.

  Customers receive their refund amount when they return an item. In the event where they are returning an item in exchange for another, refunds will not be issued to them because that amount is used as payment for the exchanged product.

  Once refund records are created, Loop creates a credit memo in <mark style="color:orange;">**"Open"**</mark> status of $0 in NetSuite using a third party integration app. This marks the completion of RMA in NetSuite, with its status updating from <mark style="color:orange;">**“Pending Refund”**</mark> to <mark style="color:orange;">**“Refunded”**</mark>. Loop also creates a customer refund record against the credit memo and then the status of the credit memo is updated from <mark style="color:orange;">**“Open”**</mark> to <mark style="color:orange;">**“Fully Applied”**</mark>.
* The creation of refund records in Loop also marks the completion of RMA in Loop, with its status updating from <mark style="color:orange;">**“Open”**</mark> to <mark style="color:orange;">**“Closed”**</mark>.
* Return receipt records in Loop trigger marking the original order as <mark style="color:orange;">**“Returned”**</mark> in Shopify and creating a new order in the <mark style="color:orange;">**“Unfulfilled”**</mark> status. Loop also applies a 100% Loop discount on the new order and links the original order in the extended fields.

## 7. Exchange Orders Downloaded in HotWax Commerce

Exchange orders are basically new web orders that require fulfillment, so HotWax Commerce processes them similar to how regular web orders are fulfilled.

A dedicated `Import Orders` job in HotWax Commerce downloads web orders from Shopify. These downloaded orders are automatically assigned a <mark style="color:orange;">**"Created"**</mark> status in HotWax Commerce, including exchange orders.

An important aspect to note is that for an exchange order, Loop saves details of the original order in the extended fields in Shopify. Therefore, when downloading exchange orders from Shopify, HotWax Commerce also retrieves these details of the original order and saves them in the communication event.

Learn more about how [HotWax Commerce fulfills web orders](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-shopify/shopify-integration/order-fulfillment/README.md)

## 8. Exchange Orders Synchronized to NetSuite

HotWax Commerce synchronizes all web orders to NetSuite in the <mark style="color:orange;">**“Created”**</mark> status and similarly, exchange orders in the <mark style="color:orange;">**“Created”**</mark> status are also synchronized to NetSuite. When NetSuite imports them, they are automatically assigned a <mark style="color:orange;">**“Pending Fulfillment”**</mark> status and the details of the original order are saved in the memo.

Learn more about [order synchronization between HotWax Commerce and NetSuite](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/learn-netsuite/integration-flows/sales-order/README.md)

### What about Inventory Updates for the Returned & New Exchange Item

Inventory synchronization process remains the same for the returned item that we discussed in the [Web Returns Lifecycle](/documents/learn-hotwax-oms/business-process-models/returns-lifecycle/loop-web-returns-lifecycle).

When an item from the original order is returned on Shopify, it provides an option to enable the restock returned inventory flag. However, HotWax Commerce does not automatically increase the inventory count even if the restocked return flag is enabled on Shopify. This is because HotWax Commerce lacks visibility into the specific location where the inventory is received. Instead, inventory is updated only when new item receipt records are synchronized to HotWax Commerce from NetSuite.

A scheduled job in HotWax Commerce performs a daily sync of inventory data from NetSuite which means new receipts from returns are automatically synchronized to HotWax Commerce. HotWax Commerce also performs regular inventory synchronization to Shopify which means that any changes in inventory in HotWax Commerce, such as increases resulting from returns, are also synchronized to Shopify.

Upon downloading an exchange order from Shopify, HotWax Commerce automatically reduces inventory from the online sellable count once the exchange item enters the brokering queue. Subsequently, it decreases the quantity on hand once the exchange item is fulfilled, just like HotWax Commerce updates inventory for other web orders.

HotWax Commerce also sends fulfillment updates to NetSuite which updates inventory levels in NetSuite, and provides regular inventory updates to Shopify which also keeps inventory up-to-date in Shopify.


# In-Store Exchanges with Loop

The In-Store Exchanges Lifecycle BPM illustrates how in-store exchanges are managed between RMS, eCommerce, ERP, and HotWax Commerce.

<figure><img src="/files/YP3pcVhb3805IhMkuPvS" alt=""><figcaption><p>In-store exchanges lifecycle business process model</p></figcaption></figure>

The process of returning an item mirrors the steps previously discussed in the [In-Store Returns Lifecycle Business Process Model](/documents/learn-hotwax-oms/business-process-models/returns-lifecycle/loop-pos-returns-lifecycle). More specifically, customers visiting the store location, store associates looking up the customer’s order in the Loop POS App, and initiating the return process remains the same.

## Exchange Processed

Often, customers opt to purchase alternative products by returning an item, especially when there are size-related concerns. In this scenario, while processing in-store return, store associates add new items that are being purchased as replacements for the returned item and complete the return process.

Once new exchange items are added, store associates initiate refunds against the returned item and then the return status is marked as <mark style="color:orange;">**"Processed"**</mark>.

## Return & Exchange Created in Shopify POS

Once the return process is completed in the Loop POS Returns App, multiple actions take place in Shopify and NetSuite, let’s understand them in detail:

* Loop creates a return under the order in Shopify POS and marks the returned item as <mark style="color:orange;">**“Returned”**</mark>, restocks the returned inventory and updates the payment status as <mark style="color:orange;">**“Refunded”**</mark>. In case of exchanges, Loop also creates a new <mark style="color:orange;">**“Fulfilled”**</mark> order in Shopify POS.
* Loop creates a cash refund record in NetSuite and also adds the associated cash sale ID in the memo so that the original order can be easily looked up. When cash refund records are created, returned inventory is automatically restocked in NetSuite.

## In-Store Returns Downloaded from Shopify POS to HotWax Commerce

This process again mirrors the steps discussed in the [In-Store Return Lifecycle](/documents/learn-hotwax-oms/business-process-models/returns-lifecycle/shopify-pos-returns-lifecycle). The only additional step performed is creating a new exchange order.

* As discussed earlier, for exchanges, Loop creates a new exchange order in Shopify POS. Exchange orders that are created in Shopify POS are downloaded in HotWax Commerce just like regular POS sales. A scheduled job downloads exchanges from Shopify POS in the <mark style="color:orange;">**"Completed”**</mark> status and also reduces the inventory for the item sold as part of the exchange process.

## Synchronize New POS Exchanges from HotWax Commerce to NetSuite

A scheduled job in HotWax Commerce synchronizes exchanges in the form of new POS sales to NetSuite and cash sale records are created in the <mark style="color:orange;">**“Deposited”**</mark> status. Once cash sale records are created, the inventory for the exchange item is automatically reduced in NetSuite.


# How to Configure BOPIS

Learn how to configure BOPIS when setting up HotWax Commerce

BOPIS, or Buy Online, Pick Up In-Store, is a feature offered by HotWax Commerce that increases conversions on PDP by showing real-time inventory availability to customers for immediate pickup at their preferred stores so that they pick up their orders on the same day.

This document gives a sequential walkthrough of how to enable your facilities for BOPIS and ensure that the pickup facilities are available on Shopify PDP.

## Create a Facility for Store Pickup Options

To facilitate BOPIS operations, retailers need to [set up and configure facilities](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/add-new-facilities/README.md) for store pickups where customers can collect their purchases by ordering online.

### Set up Facilities

1. Log in to Launchpad with your user credential.
2. Navigate to the `Facilities` App in the Launchpad.
3. The default tab that opens when you access the `Facilities` app is the `Facilities` tab with a list of all existing facilities.
4. Click on the `+` button at the bottom right corner to create a new facility.
5. Select the type of facility, whether the facility is a Warehouse or Store.
6. Add the name of the facility, internal IDs, and external IDs of the facility on the `Create Facility` page.
7. Click on the `Create Facility` button.

### Add Address and Facility Location

1. Add the facility address, city, and the Zip code.
2. Select country and state from the dropdown.
3. Add the contact number and further add `latitude and longitude` details (to ensure the exact geolocation of the facility).

{% hint style="info" %}
HotWax Commerce App uses ["storeLookup](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/integrate-with-hotwax/api/facility/store-lookup/README.md)" API to display the distance of stores from a customer's current location. The API relies on the latitude and longitude coordinates of facilities to determine their proximity to the customer. Make sure that latitude and longitudes are added for both new and existing facilities.
{% endhint %}

### Add Product Store

Facilities can have products from multiple brands which are configured as product stores in HotWax Commerce. If the retailer has multiple brands, retailers have to specify that the facility is containing the product of which brand. This function enables users to link/unlink a facility to one or multiple product stores.

1. Click the `Add` function under Product Store.
2. Select the store/s from the dropdown menu
3. Click the `Save` icon to save the changes.

## Fulfillment Configuration of Facilities

The Facility groups are used to define the scope and functionality of the facility for omnichannel order management. If a retailer wants to configure the fulfillment settings of facilities in bulk, they can add facilities to the [group](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-groups/README.md). `Pickup` is a default facilities group type to ensure that facilities are available to the customer on Shopify PDP as a pickup option. Only facilities that are added to this group will be available to the customer on Shopify PDP. Turning the toggle `on` when creating facilities or from the facility details page for `allow pickup` adds the facility to this facility group.

Facilities have the option to choose whether or not to participate in selling their inventory online. If a facility is capable of fulfilling orders and wants its inventory to be sold online, it has to be included in the `Online facility` group. Retailers can also turn the toggle on from 'sell online card' to add the facility to `Online facility` group. Similarly, if the facility supports HotWax Commerce Fulfillment app, then turn the toggle on of `Use Native Fulfillment App` or add the facility to `OMS Fulfillment group`.

## Manage BOPIS Inventory

### Inventory Sync in HotWax Commerce

For a product to be available for pickup at Shopify PDP, it must have inventory at the retail store (facility). HotWax Commerce offers automated and manual bulk [Inventory upload through CSV](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/inventory/inventory-upload/README.md). Additionally HotWax commerce gets inventory feed from ERP, WMS, or POS systems, to update the inventory in its system. The external system places the order on the SFTP location HotWax commerce processes these files and updates the inventory in its system.

### ATP Computation

When the inventory is received, a product’s QOH and ATP is updated in HotWax Commerce. HotWax Commerce calculates [Available to Promise](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/inventory/available-to-promise/README.md) (ATP) of a facility by considering various factors, such as safety stock, threshold, reserved quantity, and orders in the queue.

ATP = QOH - (Reserved quantities + Safety stock + Threshold + Orders in brokering queue)

For each store that allows BOPIS, HotWax Commerce uses the [BOPIS Check Inventory](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/integrate-with-hotwax/api/inventory/bopis-check-inventory.md) or [Shipping Check Inventory](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/integrate-with-hotwax/api/inventory/shipping-check-inventory.md) API to check the available to promise (ATP) inventory for the desired product. Display all the facilities with non-zero inventory numbers on the product detail page (PDP) for customers to select and place a BOPIS order.

## Configure Shopify BOPIS Scripts

Retailers can configure Shopify BOPIS scripts from the Shopify Shop page in HotWax Commerce, enabling PDP changes on Shopify. Retailers who install the HotWax Commerce Integration App gain access to PDP customization functionality as a default feature. By installing the default JavaScript (JS) and Cascading Style Sheets (CSS) scripts from the Shopify Shop page into HotWax Commerce, retailers can effortlessly start offering BOPIS to their customers.

### Steps to add scripts

1. Login to HotWax Commerce.
2. Open the Hamburger menu and navigate to Shopify Shop Menu.
3. Click the Shop Id and go down to the Shopify Script section.
4. Click Add button and select BOPIS JS from the dropdown menu and press `Add`.
5. Ensure the `BOPIS JS` file is added successfully and is reflecting with its version.
6. Go to the Shopify Tag id column and click Add function.
7. Ensure the Shopify Tag id is added and reflected.
8. Now again click the `Add` button and select the `BOPIS CSS` from dropdown menu
9. Ensure that the `BOPIS CSS` is also added below. (Since the BOPIS CSS is already associated with BOPIS JS, adding Shopify Tag for BOPIS css is not required.)

This ensures seamless integration and reflects the modifications on the Shopify storefront instantly. Users can verify the pickup button at Shopify PDP and confirm that both the scripts are added successfully.

## Verify Pickup Button at Shopify

Once you have set up a facility for BOPIS, you can verify the BOPIS availability through the following steps:

1. Login to Launchpad.
2. Navigate to the `Facilities` App in the Launchpad.
3. Click on the `Group` and select `Pickup` group type.
4. Click on `Facilities` to view all the facilities which support Pickup.
5. Note down any facility.
6. Login to HotWax Commerce and navigate to the `Find Inventory` page using the hamburger menu.
7. Use `Facility` filter to view all the products and its inventory available on the selected facility. (Ensure that the selected facility is the same as selected from the Facility app, associated with the pickup group type.).
8. Search for the selected product on Shopify and navigate to the product display page.
9. Ensure the `Pickup` button is available for the product. Click on `Pickup` button to view the facilities available for pickup.

{% embed url="<https://youtu.be/Ra7nEUeW5lc>" %}


# Configure Estimated Delivery Dates

Learn how storefront estimated delivery dates are calculated and configured with HotWax Commerce.

An estimated delivery date tells a shopper when an item can arrive before they place an order. The date is calculated on the storefront from current fulfillment information and the retailer's delivery rules. It is not a fixed date stored on the product.

The exact rules vary by retailer. For example, one retailer may promise standard delivery by adding transit days based on the distance from the fulfillment location, while another may use a carrier service level. Define these rules with the team responsible for the storefront before enabling the experience.

## How the date is calculated

The storefront follows this sequence when a shopper checks an estimated delivery date:

1. Identify the destination from the shopper's postal code, saved location, or browser location.
2. Find stores and warehouses that can serve that destination.
3. Check the selected product's available to promise (ATP) inventory at those facilities.
4. Select an eligible fulfillment location according to the retailer's priority rules.
5. Calculate a date for each customer-facing shipping method.
6. Move dates that fall on configured non-delivery days to the next delivery day.
7. Display the default shipping method's date and let the shopper view other available methods.

A common calculation is:

`Estimated delivery date = request date and time + processing delay + transit days`

The processing delay can account for order cut-off times, weekends, and the type of fulfillment location. Transit days can depend on the shipping method, the distance between the fulfillment location and destination, or a carrier service level.

The calculation must define what happens at every boundary. For example, distance ranges must not leave a gap, and orders placed exactly at the cut-off time must follow a defined rule.

## Data used by the calculation

| Input                            | How it affects the estimate                                                                         |
| -------------------------------- | --------------------------------------------------------------------------------------------------- |
| Destination                      | Determines which fulfillment locations are close enough or otherwise eligible.                      |
| Product identifier               | Connects the selected storefront variant to inventory in HotWax Commerce.                           |
| Facility address and coordinates | Allow the integration to find facilities and calculate their distance from the destination.         |
| ATP inventory                    | Prevents the storefront from promising a date from a location that cannot fulfill the item.         |
| Fulfillment priority             | Determines which eligible facility supplies the estimate when more than one location has inventory. |
| Shipping method                  | Supplies the processing and transit rule for standard, expedited, overnight, or other services.     |
| Cut-off time and time zone       | Determine whether processing starts on the request day or the next processing day.                  |
| Non-delivery days                | Move an estimate past weekends, holidays, or other days when delivery is unavailable.               |

## Set up the experience

### 1. Prepare fulfillment locations

[Create each facility](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/administration/facilities/add-new-facilities.md) that can fulfill online orders. Add a complete address and accurate latitude and longitude coordinates. Associate each facility with the correct product store and include only participating locations in the relevant facility or inventory group.

The [Store Lookup API](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/integrate-with-hotwax/api/facility/store-lookup.md) uses the destination and facility coordinates to return nearby locations. Missing or incorrect coordinates can produce the wrong facility order or no eligible location.

### 2. Prepare inventory

Make sure product identifiers used by the storefront match the identifiers available in HotWax Commerce. Configure [ATP rules](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/retail-operations/inventory/available-to-promise/README.md) so the inventory response reflects safety stock, thresholds, reservations, and other availability policies.

The storefront integration uses the [Shipping Check Inventory API](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/integrate-with-hotwax/api/inventory/shipping-check-inventory.md) to check ATP for the selected product and candidate facilities. Decide whether zero-ATP locations should be removed from the estimate or handled with a separate unavailable message.

### 3. Define delivery rules

Document the following rules for every shipping method shown to shoppers:

* Customer-facing name and default method
* Eligible facility types and fulfillment priority
* Processing time and daily cut-off
* Time zone used for the cut-off
* Transit days or distance ranges
* Weekend, holiday, and other non-delivery days
* Fallback message when the destination, facility, inventory, or date cannot be determined

If shipping methods are also configured in HotWax Commerce, keep their names and delivery commitments aligned with the storefront rules. The **Delivery Days** value in a HotWax Commerce shipping method does not change the storefront estimate unless the storefront integration is built to read it.

### 4. Add the storefront integration

The storefront implementation must:

* Pass the selected variant's product identifier and the shopper's destination.
* Request eligible facilities and current ATP from HotWax Commerce.
* Apply the approved fulfillment priority and delivery rules.
* Recalculate when the shopper changes the destination or product variant.
* Display a clear unavailable state instead of a stale or partial estimate.

Place the estimated delivery date near the product's purchase action so shoppers see it before adding the item to the cart. If multiple shipping methods are available, show the default estimate first and provide a way to compare the other methods.

## Jobs and services

The estimated delivery date is calculated when the shopper requests it. A scheduled Job Manager job does not generate or store the displayed date in this pattern.

Background integrations still affect the result because they keep the source data current:

* Facility synchronization keeps addresses, coordinates, facility types, and group membership current.
* Inventory imports and adjustments keep facility-level ATP current.
* Product synchronization keeps storefront and HotWax Commerce product identifiers aligned.

Monitor those integrations according to the retailer's system-of-record design. A successful date calculation with stale facility or inventory data can still produce an incorrect promise.

## Validate the setup

Test the experience with products and postal codes that cover:

* Inventory at one eligible location and at multiple eligible locations
* No ATP at any eligible location
* A destination outside the supported area
* Each shipping method and distance range
* Times immediately before, at, and after the cut-off
* Friday, Saturday, Sunday, and a configured holiday
* A product variant change after the page loads
* An invalid postal code or unavailable location permission

For every test, confirm the selected fulfillment location, processing delay, transit rule, final displayed date, and unavailable message. Repeat the test in the configured time zone rather than relying on the shopper's browser time zone.


# How to Configure Store Fulfillment

Learn how to configure Store Fulfillment when setting up HotWax Commerce

HotWax Commerce's intelligent Order Routing and efficient Store Fulfillment feature optimizes order processing for retailers. They can prioritize fulfillment based on proximity and inventory availability to ensure swift, cost-effective same-day, next-day delivery from the nearest retail fulfillment centers.

This document gives a sequential walkthrough of how to enable your facilities for store fulfillment and ensure orders are brokered according to your preference

## Create a Facility for Store Fulfillment Option

To facilitate Store Fulfillment operations retailers need to set up and configure facilities for store pickups where retailers can route orders for fulfillment

### Set up Facilities

1. Login to Launchpad with your user credential
2. Navigate to the `Facilities App` in the Launchpad.
   * The default tab that opens when you access the `Facilities App` is the `facilitie`s tab with a list of all existing facilities
3. Click on the `+` button at the bottom right corner to create a new facility.
4. Select the type of facility, whether the facility is a Warehouse or Store.
5. Add the name of the facility, internal IDs, and external IDs of the facility on the `Create Facility` page
6. Click on the `Create Facility` button.

### Add Address and Facility Location

* Add the facility address, city, and the Zip code. Make sure to add the correct Zip codes as HotWax Commerce uses Zip Codes to identify the stores in proximity to the customers.
* Select country and state from the dropdown.
* Add the contact number and further add latitude and longitude details (Contact number and address are necessary for shipping label generation)

### Add Product Store

Facilities can have products from multiple brands which are configured as product stores in HotWax Commerce. If the retailer has multiple brands, retailers have to specify that the facility contains the product of which brand. This function enables users to link/unlink a facility to one or multiple product stores.

1. Click the `Add` function under Product Store.
2. Select the store/s from the dropdown menu
3. Click the `Save` icon to save the changes.

## Fulfillment Configuration of Facilities

The [Facility groups ](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/manage-groups/README.md)are used to define the scope and functionality of the facility for omnichannel order management.

Facilities have the option to choose whether or not to participate in selling their inventory online. If a facility is capable of fulfilling orders and wants its inventory to be sold online, it has to be included in the Facility Group with the `CHANNEL_FAC_GRP` subtype. Retailers can create different facility groups for different sales channels under the `CHANNEL_FAC_GRP` subtype and add the respective facilities to that group.

## Configure Online Fulfillment Capacity

Fulfillment capacity is defined on the basis of the number of orders a facility will be able to fulfill in a day. It is set up considering various resources such as facility size, staff, and footfall. Users can set up the maximum order limit that can be allocated to that facility through the `Online Order Fulfillment` card. Read our [user manual](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/facilities/configure-fulfillment-capacity/README.md) to learn how to configure online fulfillment for a capacity.

## Configure Brokering for Facilities

To include a facility in brokering, it must be added to a facility group with the Brokering Group subtype. This ensures that when the facility group is included in the brokering run, all facilities in that group are available for brokering. For guidance on setting up and configuring brokering rules according to your preferences, refer to our [order brokering user manual](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/orders/order-routing/brokering-runs/README.md).

## Setup Shipment Method from Facilities

In HotWax Commerce, the ability to add shipping carriers to facilities is essential for order fulfillment. Once a shipment gateway is set, adding carriers to facilities enables rate shopping and shipping label generation specifically for those carriers associated with the selected facility. This feature enhances workflow efficiency by allowing the HotWax Commerce Store Fulfillment App to intelligently select the most cost-effective shipping carrier for each order. Read our [shipping gateway user manual](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/shipping-gateway.md) to learn how to add shipping carriers to facilities.

Retailers need to turn the toggle on for the ‘Generate Shipping Label' in the `facility details` page to ensure that the shipping label is generated from the store.

## Manage Inventory

### Inventory Sync in HotWax Commerce

For a product to be available for store fulfillment, it must have inventory at the retail store (facility). HotWax Commerce offers automated and manual bulk inventory upload through CSV. HotWax Commerce gets inventory feed from ERP, WMS, or POS systems or manual uploads, to update the inventory in its system. The external system places the order on the SFTP location, HotWax Commerce processes these files, and updates the inventory in its system.

### Inventory Sync to Shopify

When the inventory is received, a product’s QOH and Online ATP are updated in HotWax Commerce. HotWax Commerce calculates the Physical Available to Promise (ATP) of a facility by considering various factors, such as safety stock, threshold, reserved quantity, and orders in the queue.

Online ATP = QOH - (Reserved quantities + Safety stock + Threshold + Orders in brokering queue + Excluded facilities' ATP)

For each store that allows online fulfillment, HotWax Commerce calculates the Online ATP that is available to sell and synchronize the inventory with Shopify through [Hard Sync and \`Update recent inventory changes jobs](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/retail-operations/workflow/job-workflows/inventory/README.md).

### Verify Store Fulfillment

Once you have set a facility for store fulfillment, you can verify that the orders are being brokered to that facility through the following steps:

1. Import the orders from Shopify through `Import Orders` job
2. Navigate to the `Facilities App` in the Launchpad.
3. Turn off the fulfillment from the Warehouse for the time being.
4. Wait for the brokering run, or go to the `Order Routing` App, click on the brokering run, and click on the `Run now` for brokering.
5. Login to HotWax Commerce and navigate to the `sales order` page using the hamburger menu.
6. Verify that the orders are brokered to the store based on the preferred inventory rules.
7. Navigate to the `Fulfillment App`, and select the facility where the order is brokered, from the settings page. Verify that the order is visible in the `Fulfillment App`.
8. Fulfill the order to verify that the shipping label is being generated from the store. If not, check our troubleshooting doc for the Shipping Label error.


# Launchpad

The Launchpad serves as the central hub for all HotWax Commerce apps, providing easy access to development, user acceptance testing (UAT), and production versions of the applications all in one place.

**This document outlines key pages and functions within the Launchpad.**

**Key items:**

1. Home page
2. Application categories
3. Application instances

***

## Home page

Allows accessing all HotWax Commerce applications.

**Characteristics:**

**Single Sign-On (SSO):** Enables users to log in applications using their credentials. After the initial login in the Launchpad, they gain automatic access to all associated applications without the need to enter their login details again.

## Application categories

Launchpad groups applications by the work they support.

#### Orders

Use these applications to manage order fulfillment workflows:

* **BOPIS (Buy Online, Pick Up In Store):** Hand over store pickup orders to customers
* **Fulfillment:** Pick, pack, and ship orders assigned to a store
* **Pre-Orders:** Manage pre-orders and backorders that use planned future inventory

#### Workflow

Use these applications to manage inventory availability, scheduled jobs, and order routing:

* **Available to Promise:** Manage the inventory available to sell
* **Job Manager:** Schedule and monitor jobs
* **Order Routing:** Configure how orders are routed to fulfillment locations

#### Inventory

Use these applications to receive, count, and move inventory:

* **Receiving:** Manage incoming shipments, purchase orders, and return orders
* **Cycle Count:** Count store inventory and reconcile system and physical inventory
* **Transfers:** Move inventory between facilities

#### Administration

Use these applications to manage data, users, facilities, and company configuration:

* **Import:** Import inventory and purchase orders
* **Users:** Create and manage users
* **Facilities:** Manage stores, warehouses, and their fulfillment settings
* **Company:** Manage company configuration

***

## Application Instances

Users can access specific instances of the HotWax apps.

**Instances:**

**1. Production Instance:** To access the production instance of an app, users can click on the respective app card.

**2. UAT (User Acceptance Testing) Instance**: Users can access the UAT instance of an app by clicking on the bottom right icon of the respective app card.

**3. Dev (Development) Instance:** Users can access the dev instance of an app by clicking on the bottom left icon of the respective app card.

{% embed url="<https://youtu.be/J2imie7z0eU>" %}
Video: Application Instance
{% endembed %}

***

**Related flows:**

1. [Launchpad](https://launchpad.hotwax.io/home/)
2. [User management](https://docs.hotwax.co/documents/system-admins/administration/users/manage-user)


# BOPIS Fulfillment App

Pick, pack, and hand over store pickup orders in the BOPIS Fulfillment App.

The BOPIS Fulfillment App is designed for store managers and associates, providing a focused interface to pick, pack, and hand over store pickup orders. The app also includes features to manage Ship-to-Store items, activate gift cards, and view notifications for new and open orders.

## Key Features

Along with pick and pack, the BOPIS App includes key features for order fulfillment:

### Catalog Page

The Catalog page lets store staff search for products and see if they’re available for pickup at the store. It shows useful details like product name, SKU, and how many units are in stock.

### Orders Page

The Order Details page in the BOPIS App provides comprehensive information about orders and is for store associates to perform key functions such as order picking, packing, and marking orders as ready for pickup or picked up.

### Ship-to-Store Page

This page is used when a customer places a pickup order for a product that is not available at their selected store. In such cases, the item is shipped from another location to the store, where the customer can pick it up once it arrives.

### Gift Card Activation

When a customer buys a gift card online, store staff can activate it before handing it over during pickup.

### Notifications

Whenever a new BOPIS order is placed for store pickup, store associates receive a notification to take action. To access the notifications, tap the bell icon in the top right corner of the page.

## Pre-requisites

To access the BOPIS Fulfillment App, users must have the `BOPIS_APP_VIEW` permission.

{% hint style="info" %}
This permission only allows viewing. To perform actions like Pick, Pack, view the `Order Details` page, and manage other store operations, store staff must also have the `COMMON_ADMIN` and `STOREFULFILLMENT_ADMIN` permission.
{% endhint %}


# Open Orders

View and manage newly assigned orders that are pending fulfillment.

The `Open Orders` page allows store associates to view and manage newly assigned orders that are pending fulfillment. On this page, store associates can filter orders, review order details, pick individual orders or pick orders in batches, print picklists, and begin the fulfillment process.

## Order Details Card

The order card shows details that store staff need at a glance. To check the number of units currently in stock, select the `box` icon next to the product details. Select the `info` icon to view inventory details such as quantity on hand, safety stock, reserved quantities, and online ATP. The order card displays the order name, product image, SKU, and the time since the order was created.

At the bottom of the card, three action buttons are available:

* **Ready for Pickup:** Marks the order as packed and moves it to the Packed Orders page.
* **Reject:** To reject the order.
* **Printer Icon:** To print the picklist.

### Print Picklist

To print the picklist, store associates can click the `printer` icon. The picklist opens in a new tab as a PDF and displays details such as the order number, product information, and picking quantity.

### Kit Product Identification

Orders that include a kit product show a `Kit` tag on the order card across the `Open`, `Packed`, and `Completed` pages.

To view the list of individual items included in the kit, store associates can tap on the `three-dot` menu on the order card. The process for handling kit orders, including `picking`, `packing`, and `handover`, is the same as for regular orders.

To view complete information about an order, store associates can click the order details card, which opens the `Order Details` page.

## Order Details Page

The `Order Details` page displays all order-related information for that order, such as the customer’s name, order ID, customer's contact details, item details, reason for rejection, and order item rejection history. On the top right, there are two icons. The `watch` icon opens the order item rejection history, and the `print` icon allows store staff to print the picklist.

### Item Details

The top of the page includes the order name and the order ID. Below that, the items in the order are listed along with a box icon for inventory computation and a bin icon to reject the order.

### Reject Orders

To reject an order, store associates can click the `bin` icon, choose a reason in the pop-up, and confirm by clicking `Reject Items`.

To partially reject an order, the `bin` icon can be used for the specific item that needs to be rejected, followed by selecting a reason and clicking `Reject Item`.

After an item is rejected, a notification email is sent, and the order may be rerouted. For more details, see [Re-route Fulfillment](/documents/store-operations/orders/bopis/re-route-fulfillment).

### Customer and Payment Details

#### Customer Details

The Customer Details section displays the following information:

* **Customer name:** Displays the name of the customer who placed the order
* **Phone number:** Provides a contact number for the customer, which can be used if the store needs to reach out regarding pickup or order updates.
* **COD amount:** Shown only for Cash on Delivery orders

#### Payment Details

The Payment section appears next to Customer Details and includes:

* **Payment method:** The payment method used by the customer
* **The payment gateway:** The payment gateway through which the payment was processed
* **Amount paid:** Shows the total amount the customer has paid for the order
* **Payment status:** Possible payment statuses include Authorized, Cancelled, Not Authorized, Not Received, Received, Refunded, Settled, and Declined.

### Other Shipments

This section shows other shipments linked to the order. Each shipment is shown as a card with the fulfillment location, such as a warehouse or store, and the shipment number.

When an order is split across locations, the shipments appear side by side so staff can see them together.

The card includes product details and the shipment status. For example, `Pending Allocation` means inventory hasn’t been assigned yet, while `Packed` indicates the item is ready for the next step.

### Order Timeline

The Order Timeline shows the fulfillment journey of the order so far, starting from when it is created in Shopify. The timeline records every key update, such as when the order is imported into HotWax Commerce, assigned to a location, rejected, reassigned, prepared for pickup or shipping, and when it is finally picked up or marked complete.

On the top right of the timeline, the current order status is always visible. This provides a quick summary of the current status of the order.

This section helps store staff understand the full progress of the order and makes it easier to respond to customer questions or check for any delays.


# Packed Orders

View packed orders that are ready for customer handover.

The `Packed Orders` tab displays all orders that have been packed and are ready to be handed over to the customer. From this tab, store associates can view order details, print the packing slip, and send pickup reminder emails.

## Order Details Card

The order card in the `Packed` Orders page shows the same basic details as in the `Open` Orders page, like order ID, product info, and customer name. However, a few things are different here. Instead of a picklist, store staff can generate a packing slip using the `print` icon.

There is also a `mail` icon to resend the pickup email to the customer, and a `Handover` button that is used to mark the order as `completed` once the customer picks up the order.

When the `Handover` button is clicked, an alert appears to verify that the items are valid and the customer has received their order. Once the order is handed over, it moves to the `Completed` tab.

Store associates can record Proof of Delivery (POD) details for completed orders from the `Completed Orders` page.

## Order Details Page

The `Order Details` page in the `Packed` Orders page shows all the usual order information. At the top, there is a `mail` icon that lets store staff resend an email to notify the customer that their order is ready for pickup, a `watch` icon to view the order item rejection history, and a `print` icon to generate the packing slip.

The page also allows store associates to edit the assigned picker for an order. If tracking is enabled, you can update the picker for an order from the **Order Details** page. To do this, click on the **picker name chip** (identified by a person icon ![person icon](https://ionicframework.com/docs/ionicons/person-outline.svg)) to open the edit picker modal and update the assignment. Once an order is packed and marked as Ready for Pickup, store staff will see the `Handover` and `Cancel Item` buttons on the Order Details page. At this stage, rejecting or unpacking items is no longer possible.

Selecting `Cancel Item` opens a pop-up displaying a list of cancellation reasons. When an item is cancelled, an email is sent to the customer.

Below this section, the [cancellation sync job](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/retail-operations/workflow/job-workflows/orders.md) status is shown. The behavior of cancellation and refund depends on the following settings:

* If both the `cancellation sync` job and the Shopify setting to process refunds are enabled, the cancellation and refund will be sent to Shopify.
* If the `cancellation sync` job is enabled but the Shopify refund setting is disabled, only the cancellation will be sent to Shopify.
* If the `cancellation sync` job is disabled, neither the cancellation nor the refund is sent to Shopify, even if the Shopify refund setting is enabled.
* If both settings are disabled, no data is sent to Shopify.


# Completed Orders

The Completed Orders page allows store staff to view and refer to all orders that have been successfully handed over to customers.

## Order Details Card

The order card in the `Completed` page shows the same set of details found in the `Open` and `Packed` pages, such as the order ID, customer name, and product information.

To download the packing slip, store associates can click the `Print Customer Letter` button. The full `Order Details` page can be accessed by clicking the order card.

## Order Details Page

The `Order Details` page in the `Completed` Orders page shows all the main information related to the order. This includes the order ID, product details, customer name, contact details, shipping address, payment method, and payment status. There is a watch icon on the top right, which shows the order item rejection history.

A timeline on the right shows key events like when the order was `created`, `approved` for fulfillment, and `picked up`. Since the order is already completed, store staff can only view the details here. No further actions, like `cancellation` or `rejection`, can be taken from this page.

## Proof of Delivery (POD)

Store associates can record or view Proof of Delivery (POD) details for any completed order. This feature is enabled via the `HANDOVER_PROOF` product store setting.

To record POD details:

1. Locate the order on the `Completed` tab.
2. Click the `Proof of Delivery` button on the order card.
3. In the pop-up, enter the following details:
   * **Name**: Name of the person picking up the order.
   * **ID Number**: Identity proof number.
   * **Relation to Customer**: Relationship of the pickup person to the customer.
   * **Phone**: Contact number.
   * **Email**: Contact email.

If the person picking up the order is the same as the billing customer, you can use the `Same as customer` checkbox to pre-fill the details from the order's billing information.

Once saved, the details are recorded as a Handover Proof communication event, and a pickup notification email is sent to the customer. For orders with existing POD details, the button label changes to `View Proof of Delivery`.


# Gift Card Activation

This page explains how gift cards can be fulfilled in the BOPIS App.

## When Does the Gift Card Activation Pop-up Appear?

Orders that include a gift card show a `gift box` icon on the order card and `Order Details` page across the `Open`, `Packed`, and `Completed` pages.

The activation pop-up appears when a staff member taps a gift card icon.

## Steps to Activate a Gift Card

### Step 1: Enter the Activation Code

The staff member can scan or manually type the serial number printed on the physical gift card. The number must be correct before moving forward because it cannot be edited later.

### Step 2: Tap the Submit Button

After entering the code, tap the Submit button (shown with a gift card icon). A confirmation message will appear: "This gift card code will be activated. The customer may also receive a notification about this activation. Please verify that all information is entered correctly."

### Step 3: Confirm Activation

Tapping `Activate` completes the process. After activation, the code cannot be changed but can be viewed by tapping the `gift card` icon.


# Ship to Store

Learn about the Ship to Store feature, allowing customers to place pickup orders for products not immediately available at their preferred location.

The `Ship to Store` feature helps customers in placing pickup orders for products that are not immediately available for same-day fulfillment at their preferred location. Users of the BOPIS app can find the `Ship to Store` page by clicking on the `Ship to Store icon (represented by a trail sign)` on the top right corner of the `Orders` page.

Shopify retailers can install the HotWax Commerce BOPIS PDP App within their Shopify stores enabling their customers to select a specific future timeframe for their pickup. Customers will see an estimated pickup timeframe directly on the product detail page, displayed as "Pick up in x days”.

Once the order is downloaded, HotWax Commerce categorizes it as a "Ship to Store" order and brokers it to a facility from where the inventory will be shipped to the pickup location. After a fulfillment location has been designated, store employees can use the following steps to monitor and fulfill `Ship to Store` orders:

1. **Locate the Ship to Store Section:** Click on the `Ship to Store icon (represented by a trail sign)` on the top right corner of the `Orders` page. This will redirect the user to the `Ship to Store` page.
2. **Search for Orders:** Users can use the `Search` bar on the top left of the page to find orders using customer name or order ID.

***

## 1. Setup and Configuration

**Note:** To view and modify these settings, the user must have the `Admin` role or the `APP_REQUEST_TRANSFER_UPDATE` permission.

To enable the Ship to Store feature:

1. Open the `Settings` menu in the BOPIS App.
2. Locate the `Show Request Transfer` toggle.
3. Turn the toggle `On`.

Once enabled, the `Request Transfer` button will automatically replace the standard "Reject" action on the order screens.

***

## 2. Requesting a Transfer

If you cannot fulfill a BOPIS order from your own inventory, you can initiate a transfer request.

**Steps:**

1. **Locate the Order:** Navigate to the order you need to transfer. The `Request Transfer` button is available on both the `Order Card` (list view) and the `Order Detail` view.
2. **Click Request Transfer:** Select the button to begin the process.
   * *Important:* This button replaces the standard "Reject" button when the feature is enabled.
3. **Confirm the Action:** A confirmation dialog will appear. Confirm that you want to move this order to Ship to Store.

**Post-Request Workflow:**

* The order moves to the `Store Pickup Rejected` queue.
* The system includes an automated brokering logic to route the order to a fulfillment store or warehouse.
* You can track the status of these requested orders by clicking the `Ship to Store icon (represented by a trail sign)` in the top right corner of the page.

***

## 3. Fulfilling the Request (Fulfillment App)

*This section applies to the warehouse or store fulfilling the transfer request.*

When you receive a Ship to Store order in your fulfillment queue:

1. **Pick and Pack:** Process the order items as per standard operating procedures.
2. **Select Carrier:** When generating the shipping label, the carrier list is automatically filtered.
   * You will only see carriers that support the `SHIP_TO_STORE` shipment method.
   * This prevents shipping errors and ensures the package is routed correctly.
3. **Ship:** Complete the shipment steps. The package is now en route to the requesting store.

***

## 4. Lifecycle of a Ship to Store Order

The `Ship to Store` page in the BOPIS App is organized into three tabs to help you track orders through their lifecycle:

### Incoming

This tab displays inventory that has been shipped from the fulfillment center and is currently in transit to your store.

When the physical shipment arrives, locate the order in this tab and label it as `Arrived`. HotWax Commerce automatically sends a notification to the customer informing them that their order is now available for pickup, and the order moves to the `Ready for Pickup` tab.

### Ready for pickup

This tab displays orders that have physically arrived at your store and are waiting for the customer.

When the customer comes to collect their order, verify their identity and mark it as `Handover`. The system marks the order as fulfilled and moves it to the `Completed` tab.

### Completed

This tab displays a history of all completed Ship to Store orders that have been successfully handed over to customers within the past 24 hours.

<figure><img src="https://github.com/user-attachments/assets/1ce90a47-c320-4d12-8747-cd356667bdcd" alt=""><figcaption></figcaption></figure>


# Catalog Page

Discover the Catalog page in the BOPIS app, offering a comprehensive list of products available for store pickup, along with inventory availability and product details.

## Catalog Page

The Catalog can be accessed by selecting the `Catalog` button in the BOPIS App's bottom tab. It displays products available for store pickup on the e-commerce platform and can be used to search for products, view product details, and check inventory availability.

#### Search Product

The users can search for a specific product within the catalog by entering the product name or product ID in the `Search` bar located at the top of the Catalog page.

#### View Product Details

The parent product name is visible on the BOPIS App Catalog page to help with product identification. On clicking any specific product card, the users will be redirected to the Product Details page. The Product Details page provides an overview of the product, including its image, available variants, and their respective inventory across all the associated facilities. By clicking on the stock quantity button next to the “Other stores” option, a pop-up window will appear displaying the inventory for that product in the other facilities.

<figure><img src="/files/jzYcg1Ko0f6kLD6s0BKl" alt=""><figcaption><p>Image: Catalog Page</p></figcaption></figure>

## Product Details Page Overview

The Product Details Page provides in-depth information on individual products. It not only showcases core product attributes like available sizes, colors, and Product ID but also highlights real-time availability insights.

### Key metrics include

* **Quantity on Hand**: The total stock available in store at any given time.
* **Safety Stock**: Buffer inventory to prevent stockouts.
* **Order Reservations**: Quantities reserved for pending orders.
* **Available to Promise (ATP)**: The quantity available for online orders

Additionally, the system provides information on inventory availability across various facilities, ensuring that customers can be provided information about the product availability across all the stores.

<figure><img src="/files/vKPp88AUviTKBSAqfDtl" alt="" width="563"><figcaption></figcaption></figure>


# Settings Page

Learn about the Settings page in the BOPIS app, providing configuration options to streamline processes and optimize efficiency.

Settings for the BOPIS app can be accessed by clicking on the `Settings` button on the bottom tab of the app. It displays a list of all the settings that can be configured to streamline processes and optimize BOPIS efficiency.

Settings are categorized as either **product store wide** (apply across the entire company for all users), **facility-specific** (apply to the selected facility), or **user-specific** (apply only to the individual user).

## OMS

### Facility

`Facility-specific`

Users can use this setting to select the facility they want to operate from. Orders, inventory and other configuration data will be specific to the facility that the users select.

<figure><img src="/files/pLoCYP8qV1NkQ15I8LDd" alt="" width="375"><figcaption></figcaption></figure>

### Order Edit Permissions

`Product store wide`

If an order is rejected by the store, the customer receives an email notifying them of the rejection and outlining the alternate fulfillment options that are available. Users can use toggle buttons to conveniently enable or disable permissions for various aspects of the orders that customers are allowed to edit when updating their orders on Re-route Fulfillment.

* **Delivery Method:** Enable or disable the permission for customers to edit the delivery method for their orders.
* **Delivery Address:** Enable or disable the permission for customers to edit the delivery address for their orders.
* **Pickup Location:** Enable or disable the permission for customers to edit the pickup location for their orders.
* **Order Item Split:** Enable or disable the permission for customers to split order items for their orders.
* **Cancel Order Before Fulfillment:** Enable or disable the permission for customers to cancel their order before it's fulfilled.
* **Shipment Method:** Allow the customers to edit the shipment method for their orders using a dropdown menu with available options.

<figure><img src="/files/oKX0YQXzLjIdI9FzGo6m" alt="" width="375"><figcaption></figcaption></figure>

### Partial Order Rejection

`Product store wide`

Store managers can use this setting to control whether a BOPIS order can be partially rejected in case there is insufficient inventory of specific items at the store.

## App

### Product Identifier

`User-specific`

Users can choose primary and secondary product identifiers (such as product ID, product title, SKU, etc.) to view products with preferred identifiers in the app.

<figure><img src="/files/xNWHYpIU6yeUye3Mf2OH" alt="" width="375"><figcaption></figcaption></figure>

### Timezone

`User-specific`

This option allows users to select an appropriate timezone to maintain consistency and optimize operations according to local time.

### Language

`User-specific`

This option allows users to select a preferred display language for the app.

### Shipping Orders

`Product store wide`

For stores managing both `BOPIS` and `Ship from Store` orders, switching between apps can be challenging. To optimize this process, the `Show Shipping Orders` feature can be enabled. This will allow users to view and fulfill regular orders brokered to their store by the OMS directly within the BOPIS app. Users can easily control this setting using the toggle button to enable or disable it as needed.

<figure><img src="/files/87IMq9kRrzEi9Uj7nEgb" alt="" width="375"><figcaption></figcaption></figure>

### Packing Slip

`Product store wide`

Packing slips help customers reconcile their orders against the delivered items. Store managers can use the `Generate Packing Slips` toggle to control whether or not packing slips are generated for orders.

<figure><img src="/files/NAIlRhDf4nMnOE9EvgoQ" alt="" width="375"><figcaption></figcaption></figure>

### Track Pickers

`Product store wide`

Store managers can assign store pickup orders to store associates and track associates who picked orders, by entering their picker IDs when packing an order. They can use the `Track Pickers` card to manage picker tracking and picklist printing. This is important for managing picker commission.

* **Enable Tracking:** Turn on picker tracking to require store associates to enter their picker ID when packing an order.
* **Print Picklists:** Enable automatic printing of picklists when packing orders to help store associates identify and gather the items to be fulfilled.

<figure><img src="/files/e8AOCuLMJX6PAVigoVwl" alt="" width="375"><figcaption></figcaption></figure>

### Request Transfer

`Product store wide`

This setting allows store associates to request an item from another store when it is not available in their current stock. When enabled, a `Request Transfer` option becomes available on order detail pages so associates can initiate inter-store transfer requests directly from the app.

### Proof of Delivery

`Product store wide`

This setting allows store associates to capture and verify proof of delivery when handing over a pickup order to a customer. When enabled, associates are prompted to confirm handover of the order, providing a verifiable record of the delivery.

### Notification Preferences

`User-specific`

Users can select the notifications they want to receive in the BOPIS app.

* **New order notification:** Enable or disable notifications for any new orders.
* **Open order notification:** Enable or disable notifications for pending open orders.
* **Ready for pickup order notification:** Enable or disable notifications for orders that are ready to be picked up by customers.

<figure><img src="/files/G0sdnZ0J8p4x9oT4hUmI" alt="" width="375"><figcaption></figcaption></figure>


# Re-route Fulfillment

Help customers choose a new fulfillment option after a BOPIS item is rejected.

When a store rejects one or more items from a Buy Online Pick-Up In Store (BOPIS) order, the customer can receive a Re-route Fulfillment link. The options shown in that experience are controlled by the product-store `Order Edit Permissions` in the BOPIS app.

## Before you begin

In the BOPIS app, go to `Settings` > `Order Edit Permissions` and enable the customer actions that your product store supports. These can include changing the delivery method or address, choosing another pickup location, splitting items, requesting cancellation, and changing the shipment method.

## Re-route a rejected order

1. Reject the unavailable item from the BOPIS order.
2. The customer receives the rejection notification with the Re-route Fulfillment link.
3. The customer opens the link and reviews the available options for the rejected items.
4. The customer selects a new fulfillment option and submits the update.

The available actions depend on the product-store permissions and the inventory available at eligible locations.

## Choose a pickup location

When pickup-location editing is enabled, the experience suggests a location that can fulfill all the affected items. If no single location can fulfill every item, it suggests the nearest location with the most available items, using the original pickup location as the proximity reference.

### Allow item splitting

When `Order Item Split` is enabled, customers can select a different pickup location for each affected item. Updated items are grouped by their selected fulfillment location.

### Keep items together

When item splitting is not enabled, customers are shown pickup locations that can fulfill all affected items together. After a location is selected, the customer can review and edit that selection before submitting it.

## Handle items unavailable everywhere

Items that are unavailable at every eligible pickup location appear in an `Out of Stock` group. Customers can request cancellation for those items from the Re-route Fulfillment experience, including when the product store does not normally allow direct item cancellation.

## Change another fulfillment detail

Depending on the enabled permissions, customers can also update the delivery method, delivery address, or shipment method. They can request cancellation before fulfillment when that permission is enabled.

{% hint style="info" %}
The Re-route link is secured for the affected order. Do not share it outside the customer-support interaction for that order.
{% endhint %}


# Troubleshooting

Troubleshoot issues related to BOPIS in HotWax.


# Notification Error

Discover how to troubleshoot BOPIS notifications in the HotWax Commerce OMS for efficient customer communication.

## Not Receiving Notifications

If you are not receiving BOPIS notifications, consider the following troubleshooting scenarios:

### Check Internet Connection

Ensure that your device has a stable internet connection. Notifications rely on an active connection for delivery.

### Verify BOPIS App settings

Confirm that the BOPIS app has the necessary settings to send notifications. Go to the BOPIS app's settings page, and ensure that notifications are enabled for required topics.

### Confirm System Compatibility

Verify that OMS instance meets compatibility requirements:

* For BOPIS notifications to work, the instance should be on v5.2.0 or above.

### Review Browser Notification Settings

If you are using browser notifications, check the settings for your specific browser:

* **Safari:** [Manage Website Notifications on Safari](https://support.apple.com/guide/safari/manage-website-notifications-sfri40734/mac)
* **Chrome:** [Manage Notifications on Chrome](https://support.google.com/chrome/answer/3220216?co=GENIE.Platform%3DDesktop\&hl=en)
* **Firefox:** [Push Notifications on Firefox](https://support.mozilla.org/en-US/kb/push-notifications-firefox)

If you have blocked notifications in your browser, follow these steps to unblock and enable them:

* **Safari:** [Unblock Notifications on Safari](https://support.apple.com/guide/safari/manage-website-notifications-sfri40734/mac)
* **Chrome:** [Unblock Notifications on Chrome](https://support.google.com/chrome/answer/3220216?co=GENIE.Platform%3DDesktop\&hl=en)
* **Firefox:** [Unblock Notifications on Firefox](https://support.mozilla.org/en-US/kb/push-notifications-firefox)

### Review Operating System Notification Settings

Ensure that operating system notifications are enabled:

* **MacOS:** [Change Notification Settings on MacOS](https://support.apple.com/guide/mac-help/change-notification-settings-mchlpx1065/mac)
* **Windows:** [Change Notification Settings on Windows](https://support.microsoft.com/en-us/windows/notifications-and-do-not-disturb-in-windows-feeca47f-0baf-5680-16f0-8801db1a8466)

## Not Receiving Reminder Notifications

If you are not receiving reminder notifications, follow these steps to check the configuration of the `Open BOPIS Order Notifications` job in the Job Manager app's Fulfillment category:

* Open the Job Manager app.
* Navigate to the Fulfillment category.
* Confirm the configuration of the `Open BOPIS Order Notifications` job.
* Ensure that the job is set up with the desired frequency for reminder notifications.

<figure><img src="/files/DlNyerPgGDBznji1Q66J" alt="" width="375"><figcaption></figcaption></figure>

**Contact Support**

If issues persist, reach out to our support team for further assistance. Provide details about your device, operating system, and any error messages encountered for resolution.


# Fulfillment App

Pick, pack, and ship orders in the Fulfillment App.

The Fulfillment App is designed for store managers and associates, providing a focused interface to pick, pack, and ship orders. The app also includes features to create and update rejection reasons, manage carriers and shipping methods, and more.

## Key Features

Along with core functions like Pick, Pack, and Ship, the app includes helpful tools for both associates and managers:

* **Download Shipping Manifest for Carriers**: Managers can generate and download a shipping manifest. It is a detailed list of all ready-to-ship packages that will be shipped by a carrier.
* **Gift Card Activation**: Associates can activate gift cards directly from the app to speed up in-store gift card fulfillment.

## Pre-requisites to Use the App

To access the Fulfillment App, users must have the `FULFILLMENT_APP_VIEW` permission.


# Open Orders

View and manage newly assigned orders that are pending fulfillment.

The `Open Orders` page allows store associates to view and manage newly assigned orders that are pending fulfillment. On this page, store associates can filter orders, review order details, pick individual orders or pick orders in batches, print picklists, and begin the fulfillment process.

## Notifications

Whenever a new order is assigned to a store for fulfillment, store associates receive a notification to take action. To access the notifications, tap the bell icon in the top right corner of the page.

## Filters

### Shipping Methods

Store associates can filter orders by shipping method.

* To see same-day delivery orders, filter them by `Same Day`.
* To see next-day delivery orders, filter them by `Next Day`.
* To see standard delivery orders, filter them by `Standard`.

### Picklist Size

By default, you see 10 orders in a page. To increase the number of orders to be displayed, tap the `Picklist Size` in the top right corner and choose the number of orders you want to see at once.

{% hint style="info" %}
You can use shipping-method filters and `Picklist Size` together. For example, to see 15 next-day delivery orders, filter them by `Next Day` and select `15 orders` in `Picklist Size`.
{% endhint %}

## Bulk Rejection

Store associates can use the `Reject All` button to reject all visible orders at once. This bulk action applies only to the orders currently visible on the screen. Associates can use filters to control which orders are rejected.

For example:

* If the view is filtered to show five orders with `Same Day` shipping method, tapping `Reject All` will apply only to those five orders.
* If no filters are applied, the action will affect all orders.

This functionality is also available in the `In Progress` tab.

## Print Picklist

To begin bulk order picking, store associates can tap the `Print Picklist` button. The generated picklist will only include the orders currently visible on the page.

For instance:

* If the view is filtered to show only five `Same Day` orders, the picklist will contain just those five orders.
* If no filters are active, the list will include all open orders.

After tapping the button, a pop-up window will appear, listing all pickers associated with the store. A search bar is available to help locate a specific picker.

* By default, only pickers from the current store are displayed.
* Users with `STOREFULFILLMENT_ADMIN` permissions can see all pickers across all stores.

The final output format of the picklist is determined by the `FF_DOWNLOAD_PICKLIST` setting:

* If enabled, the picklist will be downloaded as a CSV file.
* If not, it will open as a PDF in a new browser tab.

## Order Details Card

The Order Details Card displays key order information:

* **Customer name, date, and time**: so they know who placed the order and when.
* **Order ID**: this can be tapped to open more actions.
* **Shipping method and last brokering time**: helps them see if it’s a standard or next-day order, and when it was last processed.
* **Product image and details**: gives a quick view of the item, including its image, SKU, and name. The image can also be opened in full view.
* **Check stock button**: tapping on it displays the number of units currently in stock.

Store associates can pick individual orders using the Order Details Card.

To start picking, they can tap on the Order ID, and a pop-up appears with three options:

* **Copy ID** – if they just need to copy the order number.
* **Pick Order** – if they’re ready to start picking that order.
* **View Details** – takes them to the full Order Details page for more information.

## Order Details Page

The Order Details Page shows more detailed information about the order.\
It displays:

* Order ID
* Order number
* Payment methods (prepaid or cash on delivery)
* Order status
* Customer name & Date and time the order was placed
* Product details like the product name, SKU, and size
* Customer details (name, phone number, and full address)
* Details of other shipments in the order

The same details are also shown when viewing the `Order Details` page in the `In Progress` and `Completed` tabs.

From this page, store associates can:

* Pick the order if items are available
* Reject the order if items are not available
* Pack and ship the order

Once they tap `Pick Order`, the status changes and the order moves to the `In Progress` tab.\
After packing, the order moves to the `Completed` tab.


# In Progress Orders

Pack orders that have moved from the \`Open\` tab.

The `In Progress` tab contains orders that have been picked and moved from the `Open` tab. This page is dedicated to the packing stage of fulfillment. Here, associates can activate gift cards, generate documents such as shipping labels and packing slips, and complete the remaining fulfillment steps.

## Filter Orders by Picklist

Store associates can filter orders by picklist to view the orders associated with a specific picklist. A picklist may have multiple pickers assigned to it, and all their names will be displayed. Only one picklist can be selected at a time, and the page will display only the orders linked to that picklist.

In the top-right corner, a result size filter also allows associates to limit the number of orders they see at one time (e.g., 5, 10, or 20). This feature can be combined with the picklist filter. For instance, if an associate selects a picker and "5" from the result size filter, the page will show only five orders assigned to that picker.

## Print Picklist

Select a picklist to view options to reprint it or edit the assigned pickers.

In the bottom-right corner, they can reprint the list using the `Print Picklist` button or change the assigned picker by selecting the adjacent `Edit Picker` button.

## Bulk Packing

Store associates can pack all orders currently in view by tapping the `Pack Orders` button at the top of the list.

For example:

* If the view is filtered to show five orders for a specific picker, only those five orders will be packed.
* If no filters are active, the action will apply to all orders visible on the page.

Upon tapping the button, a confirmation pop-up will appear, indicating the total number of orders that will be affected. This window also provides an option to select which documents, such as packing slips or shipping labels, should be printed as part of the process.

Store associates can check or uncheck the boxes for:

* Shipping labels
* Packing slip

Once ready, tap `Pack` to complete the packing process and print the selected documents.

## Order Details Card

Store associates can pack orders individually. Each order is displayed on a card that contains the following information:

* **Left Side**: Customer name, order date, and time.
* **Center**: Order ID
* **Right Side**: Shipping method

Below this header, the card lists each product's details and image. For each item, associates can tap the `Check stock` button (box icon) to view its available inventory or the `Reject` button (bin icon) to reject the item from the order. When rejecting an item, a reason must be selected (e.g., "Mismatch," "Damaged," or "Worn Display").

To pack the items, associates use the [`Add Box`](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/shipping-box.md#adding-shipment-boxes-for-specific-carriers) button to assign products to boxes. The maximum number of boxes allowed is equal to the total number of items in the order. For instance, an order with two items can be packed into a maximum of two boxes. The `Add Box` button will become inactive once this limit is reached.

To pack an order, associates need to tap the `Pack Order` button on the order card. This opens a pop-up where they can choose whether to print the shipping labels and the packing slip. After confirming, they can tap `Pack` in the pop-up to complete the packing process.

After tapping the `Pack` button, if the shipping label generation fails, a pop-up displays:\
\&#xNAN;*"We couldn’t retrieve a shipping label from the carrier (UPS, FedEx, etc.). To pack this order, please add tracking details."*

To proceed, store associates:

* Generate a label using a different carrier.
* Manually enter tracking details.
* Reject the order with a reason if tracking information isn’t available.
* Follow the [shipping label troubleshooting document](/documents/store-operations/orders/fulfillment/shipping-label-generation) to identify and resolve common configuration issues.

The `Shipping Label Error` button is also available; it opens up a pop-up with the specific error details provided by the carrier partner.

To view more information about an order, store associates need to tap on the order name. A pop-up will appear with the options to **Copy ID** and **View Order Details**. Tapping on **View Order Details** will redirect them to the Order Details page.

## Order Details Page

The order details page here shows all the same basic details as in the Open Orders tab. Store associates can pack the order, mark it as shipped, or reject it if required. This page shows the **Shipment Method** card, which shows the carrier name, the shipping method, and the tracking code.

When an order has more than one shipment, this screen displays all of them. Staff can check which shipments are already fulfilled, which ones are in progress, and if any are pending or cannot be fulfilled.

### Payment details for COD orders

The order details page also includes a `Payment` card that lists each payment preference on the order. For every payment entry, store associates can view:

* The payment method
* The current payment status
* The payment amount

For Cash on Delivery orders with pending payment, the `Shipment Method` card displays an additional COD message while packing:

* **Cash on delivery order:** Indicates that the order is a COD order and payment is still pending.
* **This shipping label will include order level charges because it is the first label:** Shown when order-level charges, such as shipping fees or taxes, have not yet been billed to any shipment. Selecting this message opens the `COD Calculation` modal.
* **This shipping label will not include order level charges:** Shown for later shipments after those charges have already been applied to the first label. Selecting this message opens an informational prompt showing that the charges were already applied earlier. If available, associates can also copy the earlier tracking code for reference.

The `COD Calculation` modal gives associates a breakdown of the amount being collected on the current shipment. It can include:

* Shipment subtotal
* Order adjustments
* Shipment total
* Other shipment totals
* Order total

## Handling Order Rejections

Store associates can reject items from an order if they cannot be fulfilled from the current store. When this happens, the rejected items are moved to a virtual facility called **Rejected Item Parking**. These items are re-brokered to another location based on rules setup in the routing app.

For this to work, at least one brokering rule must be set to pick up orders from **Rejected Item Parking**. This helps make sure the order can still be fulfilled from a different store or warehouse.

To understand the full process, go to the [Rejection Workflow](/documents/store-operations/orders/fulfillment/rejection)

## Shipping Label Generation

A shipping label is provided by the carrier and pasted onto the package. The label includes details such as the shipping address, carrier name, shipping method, tracking number and barcode. As the package progresses through various steps, such as pickup, sorting, and delivery, the label is scanned. These scans update the tracking information, which is shared with the customer.

To generate the shipping label, tap the `Pack Order` button on the order card. A pop-up window will open, offering the option to print the shipping label and packing slip. After selecting the options, tap `Pack` to finish packing and get the label.

### Specific Details Included in the Shipping Label:

#### Multi-packaging Label Behavior

For carriers that support multi-package shipments, HotWax OMS generates individual shipping labels for each package under a single shipment ID. When a shipment includes multiple packages, the OMS sends a request to the carrier specifying the total number of packages, and the carrier returns labels for each package linked to the same shipment ID.

#### Label Display Format

Every carrier generates shipping labels in a different format. Some carriers provide labels as PDF files, while others send them as images. HotWax OMS supports most formats and can render them as images for printing.

#### Display Behavior

The Fulfillment App handles label display based on the format received from the carrier:

* **Single tab display**: When the carrier sends the label in an image format, the app opens a new tab that shows both the packing slip (generated by HotWax) and shipping label together. This combined view makes it easy to see all shipment information in one place.
* **Two-tab display**: When the carrier sends the label as a PDF url, it will open in two new tabs. One tab displays the packing slip, and the other tab shows the shipping label. This separation is necessary because PDF labels require a different rendering than the packing slip format.


# Completed Orders

Manage completed orders that are ready to ship.

The `Completed Orders` page shows all orders that have been picked, packed, and are ready to ship. On this page, store associates can ship orders in bulk, unpack them if needed, download the manifest, and regenerate shipping labels if required.

## Filtering

Store associates can filter orders based on the carrier partner handling the delivery.

* Selecting **FedEx** will show all orders with FedEx as the carrier.
* Selecting **UPS** will show only the UPS orders.
* They can also filter orders by **shipping method**.

One carrier partner can be selected at a time, like FedEx, but more than one shipping method can be selected.

For example:

* If FedEx is selected along with both Standard and Next Day, the page displays all FedEx orders with those two shipping methods.

If store associates do not want to see all packed orders at once, they can use the `result size` in the top right corner to select how many orders to view.

For example:

* If UPS is selected in the filter option and 5 is selected for the result size, then only 5 UPS orders will be shown.
* This also applies when filtering by both carrier and shipping method.

## Shipping Orders in Bulk

Store associates can ship orders in bulk using the `Ship` button.

* This action applies only to the orders visible on the page, based on the selected carrier, shipping method, or the number of orders chosen through the result size.
* For example, if 10 UPS orders are displayed, tapping the Ship button ships those 10 orders.

When the `Ship` button is tapped, a confirmation message appears. The message tells how many orders will be shipped and reminds that shipped orders can’t be changed. The associate can either cancel or confirm the action.

Packed orders are also shipped automatically by a background job called `Ship Packed Orders`. When enabled, job checks for orders that are packed and have a tracking number, if applicable.

## Order Details Card

Store associates can also ship orders individually. Store associates can see orders that need to be shipped as well as the ones that have already been shipped. Each order appears as a card with key details.

* **On the left**: Customer’s name along with the date and time of the order, product image, and product details like the SKU.
* **In the middle**: Order ID
* **On the right**: Shipment method, such as Standard or Next Day, and the tracking code if available.

Each order card shows action buttons such as:

* `Ship Now`
* `Print Shipping Label`
* `Print Customer Letter` (packing slip)
* `Regenerate Shipping Label`

When there is an issue with the shipping label, a `Shipping Label Error` button appears. Store associates can use the `Regenerate Shipping Label` button after fixing issues such as:

* No response from the carrier
* Incorrect address
* Switching the carrier
* When the file does not open

Once the issue is resolved, the shipping label can be regenerated.

The `Unpack` button lets associates move the order back to the **In Progress** stage if changes are required. Shipped orders remain visible on the page for the rest of the day.

Once unpacked, the shipping label that was previously generated must be voided manually. If there is a change in the shipment, the label will get voided automatically

* If the label is not voided and there are changes to the order, a new shipping label will be generated automatically.
* If there are no changes and the label is not voided, the same label can be printed again.

To view more information about an order, store associates need to tap on the order name. A pop-up will appear with the options to **Copy ID** and **View Order Details**. Tapping on **View Order Details** will redirect them to the Order Details page.

## Manifest and Historical Manifest

The `Generate Manifest` and `View Historical Manifest` buttons appear at the bottom right of the page once a carrier partner is selected. Store associates can also select one or more shipment methods for that carrier partner to generate manifests for specific types of shipments.

The `View Historical Manifest` option allows store associates to check manifests generated in the last seven days.

Once the `Generate Manifest` button is tapped, the app uses the packed orders to create the manifest. Store associates do not need to fill in any shipment details.

The app prints three copies:

1. One for the store
2. One for the carrier
3. One for the receiving location

The manifest lists all items in the shipment. It includes quantity, weight, size, and customs details if required.

This helps during carrier pickups, supports international shipping, and works as a record that the order was handed over. It also helps if something goes missing or gets damaged. The receiving location can use it to check the items that arrive.

## Order Details Page

The Order Details Page shows all the important information related to an order in one place, making it easier for store teams to process and fulfill shipments.

* Each product in the order is shown with its name, SKU, size, and quantity.
* Store staff can tap the `Ship Order` button to start shipping.
* They can use `Print Customer Letter` to download the packing slip.
* If any changes have to be made, they can tap `Unpack`.
* Below the product details, the delivery address and shipping method are shown.

Associates can select the carrier and method, then tap `Generate Label` or enter the tracking code manually.

There is a **Shipment Method** card that shows the carrier name, the shipping method, and the tracking code.

Next to the tracking code, there’s a three-dot menu. When tapped, it shows two options:

* **View Label** – opens the shipping label.
* **Void Label** – cancels the label if changes are needed.


# Rejection

The Fulfillment App allows store users to reject items from an order or complete an order when it can’t be fulfilled from the current facility. Rejected orders are moved to the ‘Rejected Item Parking’, to automatically reallocate them. Ensure that at least one brokering rule addresses orders at this parking.

## Reject Single Orders

1. Go to the **In-Progress** page.
2. Search for the desired order.
3. Click the **Trash Bin** icon next to it.
4. Select an appropriate reason from the dropdown.
5. Save the changes.

The OMS will route the order to another facility based on product availability, customer shipping preferences, and routing rules.

## Bulk Reject Orders

Stores may face issues with their fulfillment capabilities in some instances. When a store cannot fulfill orders for a given day, store managers with the permission of `COMMON_ADMIN` can reject all orders in bulk from the **Open** and **In Progress** order pages.

1. In the **Open** or **In Progress Orders** screens, click the **Reject All** icon at the top right corner.
2. All orders in that status will be rejected and removed from the facility.

{% hint style="info" %}
The Reject All button does not affect the inventory of the facility. To ensure that no new orders are brokered to the facility, set the **Online order fulfillment capacity** to **No Capacity**.
{% endhint %}

## Rejection Analytics

The Rejection Analytics Page provides a detailed view of order rejections, helping store associates and managers analyze trends and address inventory issues.

### Features

* **Total Rejections:** Displays the total count of all rejected items.
* **Frequently Rejected Items:** Highlights the products most often rejected.
* **Common Rejection Reasons:** Lists common causes like out-of-stock items or damaged products.
* **All Rejected Items:** Shows a complete list of rejected order items for detailed tracking.

### Filters and Search Options

* **Time Filters:** Analyze rejection data from the last 24 hours or 7 days.
* **Search:** Locate specific rejected items using Product SKUs or order details.

<figure><img src="/files/yu6KhAna3xpljFJSbAmd" alt=""><figcaption><p>Rejections Analytics</p></figcaption></figure>

## Rejection Reasons

Retailers can configure which rejection reasons they want to offer for their staff to choose from if they're unable to fulfill items in an order. To access this page, users must have `STOREFULFILLMENT_ADMIN` permission.

### Overview

* **Store Associates:** In the Fulfillment App and BOPIS App, store associates see rejection reasons specific to in-store operations, such as out-of-stock items or damaged products.
* **Customer Service Representatives (CSRs):** In the Order Management System, CSRs view broader rejection reasons suited for customer interactions, such as manual reallocation.
* **Admin Users:** Admin or operations managers can view all rejection reasons across roles for complete oversight.

### Filter rejection reasons in the Fulfillment App

Rejection reasons can be shown or hidden for store users directly from the `Rejection reasons` page in the Fulfillment App.

#### How to filter rejection reasons

1. Open the Fulfillment App.
2. Click the hamburger menu.
3. In the `Organization` section, select `Rejection reasons`.
4. Find the rejection reason you want to control.
5. Use the toggle on that row to decide whether the reason should be available in the Fulfillment App.

#### How the toggle works

* **When the toggle is ON:** That rejection reason is available to store users while rejecting items.
* **When the toggle is OFF:** That rejection reason is hidden from store users in the Fulfillment App.

<figure><img src="/files/QeIYCMPjinFRzcUOTsjg" alt=""><figcaption><p>Rejection Reasons</p></figcaption></figure>

### Rejection reason types that trigger inventory adjustments and how these types cause stock levels to be updated

Rejection reasons in the system are divided into specific types to define how they affect inventory. Each type explains what action should be taken on the inventory when a rejection reason is applied. This helps manage inventory updates smoothly and accurately.

* **REPORT\_NO\_VAR:**\
  Rejection reasons with this type do not affect inventory.
  * Stock levels remain unchanged when these reasons are used.
* **REPORT\_VAR:**\
  Rejection reasons with this type cause inventory to be adjusted.
  * The rejected quantity is deducted from the store’s inventory, reducing stock availability for the rejected item.
* **REPORT\_ALL\_VAR:**\
  This type eliminates all remaining inventory for the rejected item.
  * It is used in scenarios where the entire stock for the item needs to be depleted.

The table below lists the default rejection reasons and their assigned types, which define how they impact inventory levels. Retailers can also create custom rejection reasons with specific types to handle unique inventory adjustments as needed.

| Rejection Reason | Type             | Action                                                                                                                             | Purpose                                                                                                   |
| ---------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| NOT IN STOCK     | REPORT\_ALL\_VAR | Sets ATP and QOH inventory to 0 for the rejected product.                                                                          | Prevents new orders until the product is restocked.                                                       |
| MISMATCH         | REPORT\_VAR      | Decreases ATP and QOH inventory by the rejected quantity.                                                                          | Indicates the product is still in stock but unavailable for orders requiring the rejected size or color.  |
| DAMAGE           | REPORT\_VAR      | Decreases ATP inventory by the rejected quantity, and also decreases QOH when `Adjust QOH Along with ATP on Rejection` is enabled. | Shows the product is in stock but damaged and unsellable.                                                 |
| NO VARIANCE      | REPORT\_NO\_VAR  | Does not affect either ATP or QOH inventory.                                                                                       | Useful for scenarios where inventory levels remain unchanged, e.g., canceled orders without stock issues. |

## Adjust QOH Along with ATP on Rejection

The **Adjust QOH Along with ATP on Rejection** toggle provides control over inventory adjustments during order rejections.

### Why disable impact on QOH

The main reason to disable QOH impact from rejection reasons would be to limit the impact store associates have on your inventory record. Retailers that use HotWax Commerce’s store inventory management capabilities like Cycle Counting rely on the QOH level as a source of truth for physical inventory levels. Allowing rejections to impact QOH opens up the possibility of store staff accidentally creating massive inventory discrepancies by selecting the wrong rejection reason.

By suppressing ATP and not QOH, over-selling is still prevented and orders for those particular products won’t be routed to that store. When fulfillment administrators then review the rejections and inventory discrepancies, they are able to use the delta between the QOH and ATP to judge the validity of the store staff’s claim of inventory being unavailable.

Retailers that don’t utilize HotWax Commerce for store inventory management only need the OMS to maintain an accurate record of sellable inventory. In that case, retailers should allow rejections to impact both ATP and QOH.

<figure><img src="/files/nVMzEG1o1TXGIEw0LYQ2" alt=""><figcaption><p>Affect QOH on Rejection</p></figcaption></figure>

## Partial Rejection

When partial rejection is enabled, individual items get rejected from a facility without impacting the rest of the order. Here’s how it works:

1. **Reject the Item:** Click the trash bin icon next to the unfulfillable item.
2. **Choose a Reason:** Select a reason for rejection, like "not in stock" or "damaged."
3. **Process Remaining Items:** The rest of the items in the order remain at the allocated facility for fulfillment and will be shipped as usual.
4. **Rebrokering:** The rejected item is sent to another facility for fulfillment.

When partial rejection is disabled, rejecting any item in an order triggers the rejection of the entire order. Here’s how this works:

1. **Reject the Item:** Click the trash bin icon next to the unfulfillable item.
2. **Choose a Reason:** Select a reason for rejection, like "not in stock" or "damaged."
3. **Automatic Rejection:** The rest of the order is rejected with the reason "reject entire order". This will not impact inventory variance for remaining items (those were not rejected) and also not appear in rejection reports.

If additional items need to be rejected with a specific reason, click on the default rejection reason applied to the item and make a selection.

<figure><img src="/files/deKIeg1H8XZyLp0DtdX1" alt=""><figcaption><p>Configure Partial Rejection</p></figcaption></figure>

## Collateral Rejection

Collateral rejection helps manage situations where the product in a rejected order item is part of multiple pending orders at a facility. When this is enabled, rejecting an item automatically rejects it in all other orders containing the same product. The behavior depends on whether partial rejection is allowed:

* **If partial rejection is allowed:** Only the selected item will be rejected from all related orders, and the remaining items in those orders will still be fulfilled from the original facility.
* **If partial rejection is not allowed:** All orders containing the rejected item will be completely rejected, not just the individual item.

This feature ensures faster re-routing of unfulfillable items, minimizing delays across all orders containing the same product.

<figure><img src="/files/1mPM3htcv0K9uTchyXQh" alt=""><figcaption><p>Configure Collateral Rejection</p></figcaption></figure>


# Gift Card and Kit Products

This page outlines the process of gift card activation and kit product fulfillment within the HotWax Fulfillment App.

## Gift Card Fulfillment

Gift card activation can be done from the **In Progress** tab. Gift card items are marked with a gift box icon on the order details card.

To activate:

1. Tap the gift icon.
2. A pop-up opens where the activation code is entered.
3. After filling in the code, tap `Activate`.

A message appears:

*"This gift card code will be activated. The customer may also receive a notification about this activation. Please verify that all information is entered correctly. This cannot be edited after activation."*

4. Tap `Activate` again to confirm. Once submitted, the code can't be changed.
5. The gift icon can be tapped again later to view the entered code.

## Kit Product Fulfillment

Kit products are items sold together as a set, made up of multiple individual products. Here's the overview of how kit products appear in the Fulfillment App.

### Kit Badge

* When an order consists of a kit product, a **"Kit"** tag appears on the order card in the **Open**, **In Progress**, and **Completed** tabs.
* Store associates can tap on the three-dot menu on the order card to open a list showing all items included in the kit.
* The kit is fulfilled just like any other order.
  * In the **Open** tab, it's in the Pick stage.
  * After picking, it moves to the Pack stage in the **In Progress** tab.
  * Once packed, it shows up in the **Completed** tab for shipping.

### Kit Item Rejection

Managing kits, which combine multiple items into one product, can be challenging when one of the items is not available. Customers expect to receive the full kit, so if even one item is missing, the entire order needs to be rejected.

To keep inventory accurate, it is important to track which specific item caused the rejection.

**Example:**\
If a **Sunglasses Travel Kit** includes sunglasses, a cleaning cloth, and a case, and the cloth is out of stock, the associate can reject the kit and mark only the cloth as unavailable. This updates the inventory for the cloth without affecting the sunglasses and case.

**Steps for rejecting the kit order:**

1. In the **In Progress** tab, the order details card shows if the order is a kit order.
2. Select the kit order that needs to be rejected.
3. In the order details, to view rejection options, tap the `bin icon`.
4. A list of reasons will appear, such as:
   * Not in Stock
   * Mismatch
   * Damaged
   * No Variance
5. Choose the reason that applies.
6. Select the checkbox next to the item causing the issue. Multiple items can be selected if needed. This step records inventory variance only for the selected components.
7. Tap the `Reject` button.
8. A confirmation pop-up will appear. Select `Report` to confirm the rejection or `Cancel` to go back.
   * Choosing `Report` will reject the order.


# Transfer Order

The Transfer Orders Page helps store staff create and fulfill TOs easily. They can view all existing TOs, the current status of TOs, and create new ones.

## Find Transfer Orders

This is the default view when the Transfer Orders page is opened. Associates can search open and closed transfers on this page.

### Open and Completed Tabs

Associates can segregate between open and completed TOs by switching Open and Completed tabs from the top-right corner.

### Details Shown for Each Transfer Order

### Viewing Transfer Order Details

Through the **Find** page, users can view:

* **Transfer Order Name**: The name entered when creating the transfer order.
* **Transfer Order ID**: Unique identifier generated by the app for the transfer order.
* **Transfer Order Status**: The status appears next to the order name, as Approved or Completed.

> **Note:** The order status remains **Approved** until all items are fulfilled and only changes to **Completed** once every item has been fulfilled.

## Transfer Order Creation

To create a new TO, tap the `+` button located in the bottom-right corner of the Transfer Orders tab. This opens the Create Transfer Order screen.

### Steps to Create a Transfer Order

1. **Name the TO**
   * At the top left of the page, enter a unique name for the TO. This name helps to easily identify the TO later.
2. **Assign Destination**
   * Locate the Assign section in the left-hand menu.
   * Tap Assign to select the destination facility.
   * Select a destination facility.
3. **Select Shipping Method**
   * Locate the Shipping Method section below the Assign card.
   * Tap the dropdown to choose a Carrier.
   * Now, choose the Shipping Method supported by the carrier, such as Standard, Same Day, or Next Day.
4. **Plan Shipping and Delivery Dates**
   * Locate the Plan section in the left-hand menu.
   * Based on transfer type, select the appropriate lifecycle:
     * **Store to Store**: Select Fulfill and Receive (managed entirely in OMS).
     * **Store to Warehouse**: Select Fulfill only (post-fulfillment handled by WMS).
   * To know more about TO types, refer to this [document](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/learn-netsuite/integration-flows/transfer-order/README.md).
   * Set the Ship Date and tap `Done`.
   * Set the Delivery Date and tap `Done`.
5. **Add Products to the TO**

   * Use the set product identifier (like SKU or Shopify ID) to search, or scan the product.
   * Once it appears on the right side, tap the `+` button to add it to the TO.

   Upon adding a product, store associates can see three options for quantity selection:

   * Book QOH (Quantity on Hand): Use this when transferring the entire available stock from the origin facility.
   * Book ATP (Available to Promise): Select this to transfer only the available (unallocated) quantity.
     * *Use Case*: Ideal to avoid affecting future commitments or orders.
   * Book Custom Quantity: Use this option to specify a custom quantity to transfer.

   Use the checkbox top row to enable bulk edit for all added items.
6. **Finalize the TO**
   * Tap the `✓` button in the bottom right corner to finalize and create the TO.

{% hint style="warning" %}
A TO cannot be edited from the Fulfillment app after this step
{% endhint %}

### Upload CSV for Transfer Order

When creating a TO for multiple products, the Fulfillment App supports uploading a CSV for multiple products.

To efficiently create a TO with multiple products, follow these steps:

1. **Prepare a CSV File**
   * Create a CSV file containing the SKUs and quantities of the products to be transferred.
2. **Navigate and Upload**
   * On the Create Transfer Order page, navigate to the `Upload` button at the bottom left of the product selection section.
3. **Select and Upload the CSV File**
   * Tap the `Upload` button and choose the prepared CSV file.
4. **Map the Fields**
   * Select the correct product identifier (e.g., SKU).
   * Map the CSV fields to the system fields (e.g., SKU → Product ID, Quantity → Quantity).

This method eliminates the need to add each product manually and speeds up the TO creation process.

## Transfer Order Fulfillment

The Transfer Order Details page is used to fulfill TOs. To access this page, store associates simply tap on a transfer order from the Find page, which navigates them to this page.

At the top of the page, associates can view important details such as the total quantity of items they need to fulfill, the transfer order name, the order ID, and the current status of the TO, which will be marked as either Approved or Completed.

* Approved: The transfer order is active and pending fulfillment.
* Completed: All items in the transfer order have been fulfilled, and the TO is shipped.

While fulfilling the TO, associates can generate a picklist to view all the items that need to be picked. To do this, tap the `Picklist` button at the bottom of the page.

### Item Card

Item card displays key product information:

* Product image
* SKU
* Product name
* HotWax Commerce product ID
* Full image view
* Report an issue dropdown to reject an item

{% hint style="info" %}
The Report an Issue dropdown is only available if no prior shipments have been created against the TO.
{% endhint %}

* **View item quantity ordered**: Displayed next to the Report an Issue dropdown.
* **Partial Fulfillment**: If the full quantity of an item is not available, associates can create a shipment for the available quantity.

{% hint style="warning" %}
Over-fulfillment is not allowed.
{% endhint %}

### Complete Shipment

Once the items are fulfilled, associates can tap the `Create Shipment` button in the bottom-right corner. After this, they will be redirected to the Review Shipment page, where they can:

* Generate the shipping label
* Add the tracking code
* View the carrier name

{% hint style="info" %}

* Any errors encountered while generating the shipping label can be viewed by tapping the `file` button in the top-right corner.
* Once the tracking code is entered, the `Complete Shipment` button will be enabled in the bottom-right corner.
  {% endhint %}

- **Important**: Once a shipment is completed, it cannot be edited.

## Permission required for the Transfer Orders Page

| Permission                  | Description                                                                       |
| --------------------------- | --------------------------------------------------------------------------------- |
| `ORD_TRANSFER_ORDER_ADMIN`  | Grants full access to Transfer Orders, including viewing, creating, and updating. |
| `ORD_TRANSFER_ORDER_VIEW`   | Allows the user to only view the Transfer Orders page in the left-hand menu.      |
| `ORD_TRANSFER_ORDER_CREATE` | Allows the user to create and update transfer orders.                             |


# Settings Page

The Fulfillment App Settings page controls the user's OMS context, facility context, fulfillment capacity, product display, notifications, documents, scanning, and rejection behavior.

<div data-full-width="false"><figure><img src="/files/DHXwUvEwzTNPJSaoZiTA" alt="Fulfillment App Settings page with OMS and app configuration cards"><figcaption><p>Fulfillment App Settings page</p></figcaption></figure></div>

Use the Fulfillment App Settings page to confirm which OMS, product store, and facility you are working in before fulfilling orders. The page also controls user preferences, notification preferences, fulfillment capacity, scan requirements, and rejection behavior.

Settings are grouped by scope:

| Scope              | Applies to                                                               |
| ------------------ | ------------------------------------------------------------------------ |
| User-specific      | Only the current user.                                                   |
| Facility-specific  | The selected facility.                                                   |
| Product store-wide | The selected product store and all users who work in that product store. |

## OMS

### OMS instance

`User-specific`

The OMS instance card shows the OMS environment connected to the app. Use it to confirm that you are working in the right environment before changing settings or fulfilling orders.

### Product store

`User-specific`

A product store represents a company, brand, or catalog. If the OMS is connected to multiple eCommerce stores with different product collections, select the product store you want to work in.

<figure><img src="/files/8MSQAA3KZNlbkQQralVl" alt="Product store selector in the Fulfillment App Settings page" width="375"><figcaption><p>Select product store</p></figcaption></figure>

### Facility

`User-specific`

The facility setting controls the store or warehouse context for the app. Orders, inventory, notification topics, and facility settings depend on the selected facility.

<figure><img src="/files/1EucuRY5cCBj23YtSU5s" alt="Facility selection modal with searchable facility list" width="375"><figcaption><p>Select facility</p></figcaption></figure>

### Online order fulfillment

`Facility-specific`

Set the number of orders the selected facility can receive for fulfillment.

* `0` means no new orders are allocated to the facility.
* Empty means the facility has unlimited capacity.
* A custom number limits how many orders can be allocated.

The card also shows how many orders are allocated to the facility today.

<figure><img src="/files/7uHREr80bUTicIBOgA8G" alt="Online order fulfillment capacity card with allocated order count and capacity setting" width="375"><figcaption><p>Online order fulfillment</p></figcaption></figure>

### Sell inventory online

`Facility-specific`

Use `Sell online` to control whether inventory from the selected facility is available for online sales. If the toggle is off, inventory from that facility is not included for online selling.

## App

### App version

`User-specific`

The app version card shows the installed Fulfillment App version and build information. Use it when checking whether a reported issue is happening on the current app version.

### Product identifier

`User-specific`

Select the primary and secondary product identifiers shown in the app. For example, you can show SKU as the main identifier and product ID as the secondary identifier. The card includes a product preview so you can confirm how items will appear during fulfillment.

<figure><img src="/files/JOTDPWucZwUFMuzU16MK" alt="Product identifier settings with primary and secondary identifier selectors and product preview" width="375"><figcaption><p>Choose product identifier</p></figcaption></figure>

### Timezone

`User-specific`

Select the timezone used for app dates and scheduled automation times.

<figure><img src="/files/1QbjWNa193TOmdJafXyn" alt="Timezone setting showing browser timezone and selected timezone" width="375"><figcaption><p>Select timezone</p></figcaption></figure>

### Language

`User-specific`

Choose the display language for the app.

<figure><img src="/files/HMNryVwu5DU0qltipvxU" alt="Language selector in the Fulfillment App Settings page" width="375"><figcaption><p>Select language</p></figcaption></figure>

### Additional documents

`User-specific`

These settings control whether shipping labels and packing slips are printed along with each shipment by default.

#### Generate shipping label

A shipping label is used by the delivery carrier to send the package to the customer's address. This setting controls whether shipping labels should be printed for the selected location.

#### Generate packing slip

A packing slip shows the list of items in an order and helps match delivered products with what was ordered.

<figure><img src="/files/FmUsFTvoWDzgt8a3S8hI" alt="Additional documents settings with shipping label and packing slip toggles" width="375"><figcaption><p>Additional documents</p></figcaption></figure>

### Notification preference

`User-specific`

Select which fulfillment notifications you want to receive for the selected facility.

### Force scan

`Product store-wide`

This card contains two related settings for controlling barcode scanning behavior during order fulfillment:

* **Require scan:** Store associates must scan each product barcode to increase the shipped quantity.
* **Barcode identifier:** Select the product identifier used for barcode scans. If the selected identifier is not found, the scan falls back to the product internal name.

### Allow partial rejections

`Product store-wide`

When [partial rejection is enabled](/documents/store-operations/orders/fulfillment/rejection), store associates can reject individual items without rejecting the rest of the order.

### Collateral rejections

`Product store-wide`

[Collateral rejection](/documents/store-operations/orders/fulfillment/rejection) automatically rejects the same product from other pending orders at the facility when one order item is rejected.

### Affect QOH on rejection

`Product store-wide`

Use [Affect QOH on rejection](/documents/store-operations/orders/fulfillment/rejection) to control whether rejected quantities adjust quantity on hand (QOH) along with available to promise (ATP).


# Order Lookup

The HotWax Commerce Order Lookup page is designed for retailers who do not have Shopify POS. Store managers can use this page to help customers who inquire about their online orders while in the store. Store managers need to have a unified order visibility to quickly access accurate order details. Customers often have to contact customer service representatives (CSRs) to get information about their orders.

The Order Lookup Page enables seamless access to comprehensive order information. Store managers can search for orders using the order ID, customer's name, or product SKUs. Upon accessing the order details, store associates will be presented with information, including customer details, current order status, and a timeline tracking key order milestones such as creation, import, approval, and fulfillment.

The order detail page will display individual order items, ensuring store associates possess detailed information to effectively assist customers.

This feature helps store managers address customer inquiries about online orders without the need to contact customer service representatives (CSR), significantly reducing wait times.

## Find Order Page

The `Find Orders` page within the `Order Lookup` page helps store managers access a list of all orders along with order details. These details include order items, order ID, order date, facility name, order status, shipping method, and customer name. Store associates can ascertain the current status of each order and determine the fulfillment facility.

1. **Navigate to the Launchpad**
   * Within the Orders section, locate and select the "Fulfillment App".
   * In the Fulfillment App, within the Organization section, click on the "Order Lookup" option to view all orders irrespective of the facility and the channel.
2. **Search Orders**
   * Store managers can search for orders using identifiers such as Order ID, Customer name, and SKU to quickly locate specific orders.
3. **Show Order Items**
   * By enabling the toggle, store managers can see order item details such as product SKU, facility or parking, shipment method, and order item status.
4. **Sort Orders**
   * This feature helps in prioritizing orders based on the newest and oldest orders. Click on the sort icon next to the show order items to sort orders from newest to oldest or vice versa.

### Filter Orders

HotWax Commerce enables store managers to filter orders based on specific criteria, simplifying the analysis of particular order-specific subsets.

### Select Filter Criteria

Use the filter options on the top right of the "Find Orders" page to apply filters. Filtering can be done based on `Brand`, `Type`, `Fulfillment Status`, `Channel`, and `Date`. Store Managers can apply these filters by checking the respective boxes or selecting from the dropdown options.

**A. `Brand`** Choose a specific Product Store from the checklist to filter orders by brand. Staff will only be able to view orders for product stores that they are linked to.

**B. `Type`** Categorize orders based on their fulfillment types, such as `Store pickup` or `Ship from store`, aiding in the prioritization and management of different order categories.

**C. `Fulfillment Status`** Filter orders based on their current stage (e.g., Created, Approved, Completed, or Cancelled) by selecting one or more statuses under the `Fulfillment` section.

**D. `Channel`** Select a sales channel from the checklist to filter orders by their origin, such as Web, POS, etc.

**E. `Date`** Select a date range (e.g., Last 7 days, Last 30 days) or specify a custom date range to review and manage orders within a specific timeframe.

### View Order Detail

Store managers need to oversee order processing, address customer inquiries, and ensure timely fulfillment. The Order Details page in the order lookup page provides all the necessary information at a glance, reducing the time spent searching for order-related data and allowing managers to focus on critical tasks. The order details help store managers identify the exact status of the order and the timeline of its fulfillment. Detailed information helps store managers to better assist customers.

### Step-by-Step Usage Instructions

**1. Search for the Order**

* Use the search bar or filters within the order lookup page to find the specific order you need to view.
* Enter relevant information such as order ID, customer name, or date range to narrow down your search.
* Efficient searching saves time and helps quickly locate the desired order.

**2. Click on the Order**

* Once you find the order in the search results, click on it to open the Order Details page.
* This action will direct you to a page with comprehensive details about the selected order.

**3. View Customer Information**

* On the Order Details page, locate the section displaying customer information.
* Here, you can view the customer’s name, address, and contact number.
* This information is essential for communication and verification purposes.

**4. Check Order Source**

* Store managers will have visibility into the order's origin, including the channel from which it originated and the associated brand.
* Review the order origin section to see which channel the order originated from and the associated brand.

**5. Access Payment Method Details**

* Find the payment method section to view information on how the customer paid, including the total payment value.
* Identifying payment methods like Cash on Delivery (COD) is crucial for managing payment collection during fulfillment.

**6. Review Order Identifications**

* Look at the Order Identifications section for key information such as:
  * Shopify Order ID (with a direct link to Shopify for more details).
  * Shopify Order Name.
  * HotWax Order ID.
* These identifiers help in tracking and managing orders across different platforms.

**7. Examine Additional Data**

* Check additional Meta fields, such as Customer ID, and Municipio code.
* This information ensures compliance with regulatory requirements for order approval and brokering.

**8. Inspect Order Item Information**

* Scroll down to see the complete list of items and ship groups within the order.
* Detailed item information includes product identifiers, item prices, and fulfillment statuses.
* Understanding item-level details helps in managing inventory and fulfillment processes.

**9. Track the Order Timeline**

* View the Timeline section to see various order milestones:
  * Order Creation Time.
  * Import Time.
  * Approved for Fulfillment.
  * Order Completion Time.
* Tracking these milestones provides insights into the order's progress and timelines.

**10. Monitor Inventory Allocation**

* Look at the inventory allocation section to see when and from which store the inventory was allocated for the order.
* Visibility into inventory helps in understanding stock levels and fulfillment locations, ensuring accurate information is provided to customers.


# Shipping Label Generations

Learn how to troubleshoot issues with generating shipping labels in the HotWax Commerce Fulfillment App for seamless label creation.

## Shipping Label Generation

If you encounter difficulties generating a shipping label within the `HotWax Commerce Fulfillment App`, it may be attributed to incorrect configurations of the shipping carrier, incomplete facility associations, or missing customer details. Here are some cases that may result in shipping label generation errors:

### Verify Shipping Carrier is set up in HotWax Commerce

**Case: Shipping Carrier Not Set Up in HotWax Commerce**

HotWax Commerce relies on the accurate setup of shipping carriers to facilitate the generation of shipping labels. Without a properly configured carrier, the system lacks the necessary information to process and generate shipping labels for orders.

Resolution:

1. Verify if the shipping carrier corresponding to the desired shipping method is set up in HotWax Commerce.
2. For more details, refer to the [documentation on creating a carrier in HotWax Commerce](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/carrier-and-shipment-methods.md).
3. Ensure the carrier setup includes accurate details relevant to the shipping method.

**Case: Shipping Gateway Configurations Missing**

Shipping gateway configurations are essential for HotWax Commerce to communicate with external shipping services and facilitate the exchange of shipping data. Without proper configurations, the system cannot communicate with shipping gateways to process shipping labels.

Resolution:

1. Check if the carrier data has been successfully loaded into HotWax Commerce.
2. Follow the steps outlined in the documentation to [add shipping gateway configurations](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/shipping-gateway.md).
3. Ensure that the shipping gateway configurations are accurately entered and correspond to the carrier data.

**Case: Shipping Method Not Configured**

Shipping methods need to be configured within HotWax Commerce to map the shipping method the customer selected during the checkout process on Shopify with the shipping method provided by the carrier.

Resolution:

1. Verify if the shipment method corresponding to the carrier is set up in HotWax Commerce.
2. Follow the documentation to [set up shipping methods](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/shipping-gateway.md#add-shipment-methods).

**Case: Shipment Boxes Not Configured for Carrier**

Proper configuration of shipment boxes within HotWax Commerce ensures accurate label generation by providing the necessary dimensions and specifications for packaging orders.

Resolution:

1. Follow the steps outlined in the documentation to [configure shipment boxes for the carrier](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/shipping-box.md#adding-shipment-boxes-for-specific-carriers).
2. Ensure that the dimensions and specifications of the shipping boxes are accurately entered to facilitate accurate label generation.

### Check Facility Association

**Case: Facility Not Associated with Shipping Carrier**

In HotWax Commerce, shipping labels are generated based on the association between facilities and shipping carriers. If the facility for which a shipping label is being generated is not associated with the relevant shipping carrier, the label generation process will fail.

Resolution:

Verify Facility Association: Confirm that the facility for which the shipping label is being generated is properly associated with the corresponding shipping carrier. Refer to the [shipping gateway documentation](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/fulfillment/shipping-methods/shipping-gateway.md) for guidance on associating facilities with carriers.

**Case: Shipping Label Generation Disabled for Facility**

HotWax Commerce provides the option to enable or disable shipping label generation for individual facilities. If this feature is disabled for the facility from which orders are being fulfilled, shipping labels cannot be generated.

Resolution

1. Access Facility Details: Navigate to the Facility Detail page within the Facilities App to access the settings for the relevant facility.
2. Enable Label Generation: Locate the toggle for "Generate Shipping Label" and ensure it is switched on to allow for shipping label generation.
3. Retry Label Generation: After enabling shipping label generation for the facility, attempt to generate the shipping label again for the affected order.

**Case: Missing Facility Phone Number**

A valid phone number associated with the facility is often required by shipping carriers for shipment notifications and communication purposes. Failure to provide this information may result in errors during label generation.

Resolution

1. Edit Address Section in Facility detail page: Open the facility from the `Facilities App` and update the phone number from the [`Address and Contact Details`](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/administration/facilities/manage-facility-details.md#address-and-contact-details) section.
2. Retry Label Generation: After adding the phone number, attempt to generate the shipping label again for the affected order.

### Check Customer Information

**Case: Customer Address Not Compatible with Shipping Method**

Shipping methods may have specific requirements or restrictions based on the destination address. If the customer's address does not meet the criteria set by the shipping method (e.g., international shipments not supported), the shipping label generation process may fail.

Resolution:

1. Facility Rejection: Reject the order from the facility if the customer's address does not comply with the shipping method requirements.
2. Manual Release: Manually release the order and assign it to a facility located in the customer's country.
3. Fulfillment from Appropriate Facility: Fulfill the order from the facility aligned with the customer's country to ensure compatibility with the shipping method.

**Case: Incorrect Customer Zip Code**

Accurate zip code information is crucial for generating shipping labels, as it ensures the delivery of packages to the proper location. If the customer's zip code is incorrect, label generation may fail.

Resolution:

1. Facility Rejection: Reject the order from the facility to prevent incorrect label generation.
2. Edit Customer Address: Navigate to the Sales Order > View Order page for the affected order ID.
3. Update Zip Code: Access the Item Groups section and click on the pencil icon next to the address to edit the information.
4. Save and Broker Order: Enter the correct zip code, save the address changes, and broker the order again for fulfillment.

**Case: Missing Customer Contact Number**

Customer contact numbers are often required by shipping carriers for notification purposes and to facilitate communication regarding delivery. If the customer's contact number is missing, label generation may encounter errors.

Resolution:

1. Facility Rejection: Reject the order from the facility to prevent label generation until the issue is resolved.
2. Edit Customer Information: Access the order details and edit the customer's address to include the contact number.
3. Save and Broker Order: After adding the contact number, save the changes, and broker the order again for fulfillment.

If the issues persist despite following the troubleshooting steps, consider reviewing the specific requirements of the shipping method or contacting HotWax Commerce support for further assistance.

{% hint style="info" %}
If you are using test APIs, then there may be a slight delay in shipping label generation, wait for a few minutes and try generating label again, if it's not generated on the first try.
{% endhint %}

## Generate Shipping Labels from Preferred Carrier

Retailers can generate `shipping labels` from their preferred `carrier` using HotWax Commerce’s `Fulfillment App`, to have more control when working with multiple shipping providers. By toggling the feature in the facility details page `App link`, store associates can either automatically generate labels from the default carrier or `manually` select their preferred carrier after packing.

This feature provides enhanced flexibility, especially for stores using multiple carriers, allowing for easier switching between partners and optimizing the shipping process.

### Steps to Generate Shipping Labels from Preferred Carriers

1. **Access the Fulfillment App**: `Open` the HotWax Commerce `Fulfillment App` on your device.
2. **Go to the "In Progress" Section**: `Navigate` to the `In Progress` section where you’ll find details of `active orders`.
3. **Select the Order and Pack**: Choose the relevant order and click on the `Pack Order` option.
4. **Choose the Preferred Carrier**: Select from options like FedEx, UPS, or EasyPost based on the order's requirements and convenience, ensuring flexibility and control over shipping.
5. **Enter Tracking Code and URL**: Store associates can manually enter the `tracking code` in the provided field. Ensure that a `tracking URL` is configured for the selected carrier. If it’s not available, you may need to input the tracking URL `manually` to allow customers to track their `shipments` effectively.
6. **Generate the Label**: Once the carrier is selected, `generate` the `shipping label` for the order.

## Manual fallback: Generate tracking code

If automatic shipping label generation fails, store associates can manually provide tracking details to proceed with the shipment.

1. If a label generation error occurs, a `Shipping label error` button appears on the shipment card.
2. Click the button to open the `Generate tracking code` modal.
3. Manually enter the `Tracking code` provided by the carrier.
4. If a tracking URL is available, enter it in the `Tracking URL` field.
5. Select `Save` to update the shipment with manual tracking details.

<figure><img src="/files/A2DrB3vLWm8MZBU0CDJS" alt=""><figcaption></figcaption></figure>


# Change Shipping Method

Retailers often have to change the shipping method or carrier of the orders. For example, a customer might choose standard delivery, but due to unforeseen inventory delays, the retailer realizes the item won't be available until just a few days before the delivery deadline. To avoid disappointing the customer, the retailer can switch to a faster shipping method, such as two-day delivery, once the item is in stock. Similarly, if the initially chosen carrier cannot deliver to the customer's address, the retailer need to switch to a more reliable carrier.

Previously, if the order was allocated to a facility, CSRs had to reject the entire order and restart the fulfillment process to change the shipping method or carrier. Now CSRs can make these changes directly if the order is still in the created or approved state and the inventory has not yet been allocated through the `Sales Order View` page. For orders that have been allocated to a facility, store associates can make the necessary changes using the `Fulfillment` app. Store associates can also generate the shipping label again as per the new shipment method.

## Step-by-Step Usage Instructions

### For CSRs to Change Shipping Method and Carrier (Orders Not Yet Brokered)

1. **Accessing Sales Orders:**
   * Go to the Hamburger Menu in the OMS.
   * Navigate to the Order Management section.
   * Click on `Sales Orders` to open the `Find Sales Order` page.
2. **Selecting the Order:**
   * Search and select the specific order to open the `View Sales Order` page.
3. **Editing the Shipping Method:**
   * Click the `edit` function against the current shipping method.
   * Choose the desired shipping method from the list.
   * Click `Save` to apply the changes.

### For Store Associates to Change Shipping Labels After Order Allocation

1. **Accessing the `Fulfillment` app:**
   * Open the `Fulfillment` app, search for the order and click on the `Order ID` to open the submenu, and select `view details` to open the `Order Details` page
2. **Changing the Shipping Method and Carrier:**
   * Navigate to the `shipment method` card.
   * Select the appropriate shipping carrier and shipping method from the dropdown menus.
   * Click on the `Generate Label` button to print the shipping label again as per the new shipping method and carrier.

<figure><img src="/files/j6Edkiha0lkTgur03vU6" alt="" width="375"><figcaption></figcaption></figure>


# Troubleshooting

This document aims to provide detailed troubleshooting steps for resolving issues related to order fulfillment in HotWax Commerce.


# Change Language

The language switching feature in the HotWax Commerce platform is designed to enhance user accessibility and comfort by allowing users to operate the interface in their native or preferred language. This feature is particularly significant for a global user base, ensuring that language barriers do not hinder the efficient use of the platform.

### Steps to Follow

**Step 1: Navigate to Launchpad**

* [Launchpad](https://launchpad.hotwax.io/)

**Step 2: Open Any App**

* Access any of the apps, such as the Fulfillment App.

**Step 3: Go to Settings Page**

* The settings page contains various customization options, Scroll Down to Find the Language Section.

**Step 4: Choose Your Language from the Dropdown Menu**

* Select your desired language to update the interface language.

By following these steps, users can ensure that their interaction with the HotWax Commerce platform is seamless and tailored to their linguistic preferences.


# Unable to Login

The fulfillment process has many different configurations that are setup to help you tune your workflow to your organizations needs. This document will help you troubleshoot common configuration issues in the fulfillment process that may be causing unexpected behaviour.

## Unable to login

User unable to login into the Fulfillment App and view orders

If your user credentials are created and are able to log into Launchpad but are unable to login to the Fulfillment App you may not have permission to fulfill orders from any facility.

**Solution** In order to give a user permission to log into the Fulfillment App and view orders that are ready to be processed, the user must be associated with at least one facility. User’s can only fulfill orders from facilities that they are associated with, so add the user to all the facilities that they will be fulfilling from.

#### Admin user

If you’re setting up an Admin user, set their Security Group to “Administrator”. This will automatically allow them to access facilities in the Fulfillment App without having to link them to each location individually.

### Fulfillment managers

For other users simply add the user to the facility from the Users App. To learn more about how users are added to facilities, check out the [user management guide](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/system-admin/administration/users/manage-user.md).


# In-Store Returns

Learn how HotWax Commerce OMS simplifies in-store return processes for retailers, ensuring efficient handling of online orders in physical stores.

The **Creating In-Store Returns** feature in HotWax Commerce addresses challenges for retailers selling products across multiple channels. In the absence of online order information in POS systems, in-store returns can become complex. HotWax Commerce, an Omnichannel Order Management system, resolves this by maintaining records of online orders from e-commerce platforms, ensuring efficient in-store return processes on the HotWax Commerce platform, and improving workflow for store associates.

## How to Create In-Store Returns

1. Enter your user credentials (username and password) to log in to the HotWax Commerce Platform.
2. **Navigate to Create Order Return:**
   * In the main menu, click on `Order Management`.
   * From the dropdown, select `Create Order Return`.
3. **Search for the Order:**
   * On the Create Order Return page:
     * Utilize the search tab to locate specific orders.
     * Enter relevant details such as `Shopify Order ID`, `Customer Name`, `Order creation date`, `Customer Email Address`, or `Customer Phone Number`.
     * Click `Search` to find the specific sales order.
4. **Select Create Return:**
   * Once the order is located, click on the `Create Return` button associated with the order.
5. **Complete the Return Details:**
   * You will be redirected to the `Create Return` page.
   * Select the first checkbox for all items or individual boxes for selective returns.
   * Enter the `Facility ID` where the customer is returning the item.
   * Choose the `Return Reason` from the dropdown menu.
   * Optionally, enter the `Employee ID`.
   * Click the `Create Return` button to initiate a return request.

Alternatively, store associates can also create returns by going to the `sales order` for which the return needs to be created and clicking on the `Create RMA` button.

6. **View Returns Page:**
   * After creating the return, you will be directed to the `View Returns` page.
   * Store managers wanting to review and approve multiple return requests can also access the `View Returns` page through the following steps:
     * Navigate to the `Sales Return Page` from the hamburger menu.
     * Locate and track the status of the return (`Requested`, `Received`, or `Completed`).
     * Click on the order ID to access the `View Returns` page for detailed information about the return.
7. **Authorize Returns:**
   * On the `View Returns` page, click the `Accept` button to approve the return request.
   * To finalize the return process, click the `Receive Return` button.
   * The return status will be `completed` now on the `sales returns` page.
8. **Partial Returns:**
   * If only specific items need acceptance:
     * Select the checkboxes for those items.
     * Click the `Update` button to receive a return for the selected items.
9. **Ensure Returns Job is Scheduled:**
   * In the `HotWax Commerce Job Manager` app, ensure the `refunds` job to update returns on e-commerce for refund creation is scheduled from the `Orders` page. For more details on how in-store returns are updated on Shopify, you can visit our [Shopify integration guide](https://docs.hotwax.co/documents/v/learn-shopify/orders/how-does-hotwax-commerce-manage-order-returns/in-store-returns)
10. **Verify Returns on Shopify:**
    * To verify order returns on Shopify:
      * Go to the `Shopify admin panel`.
      * Navigate to `Orders` and access `Order Details` by clicking on the corresponding order ID.
      * Return information will be available for the corresponding order items.

By following these detailed steps, store associates can efficiently navigate through the HotWax Commerce platform, manage in-store returns, and contribute to a smooth and effective customer experience.


# Receiving

## Overview

The HotWax Commerce Receiving app helps store associates receive inbound inventory from transfer orders, purchase orders, and returns. It runs in a browser, supports barcode scanning, and updates inventory in HotWax Commerce as receiving is saved or completed.

## Getting started

### Logging in

1. Open the Receiving app URL provided by your organization.
2. If you are not already signed in, you will be redirected to HotWax Launchpad.
3. After authentication, you will return to the Receiving app.

### Navigation and dashboard

The left menu includes:

* Transfer Orders
* Returns
* Purchase Orders
* Settings

All list pages support search, open/completed filtering, pull-to-refresh, and load-more actions when additional records are available.

## Guides

* For transfer orders, see [Transfer Orders](/documents/store-operations/inventory/receiving/transfer-orders).
* For purchase orders and returns, see [Returns and Purchase Orders](/documents/store-operations/inventory/receiving/returns-and-purchase-orders).
* For app configuration, see [Settings](/documents/store-operations/inventory/receiving/settings).
* For permission mapping, see [Permissions](/documents/store-operations/inventory/receiving/permissions).


# Transfer Orders

Within the Transfer Orders section you will see an Open tab and a Completed tab. The Open tab displays transfer orders waiting to be received; the Completed tab contains orders that have already been closed. A search bar at the top lets you filter by transfer order number. When there are no open orders, an illustration appears with a message “There are no transfer orders to receive”.\
Each transfer‑order item shows the transfer order name (e.g., to-test-11), the corresponding internal ID. Clicking an item opens the detail page for that order. If the list is long, use the Load more transfer order button at the bottom to fetch additional entries.

## Receiving a transfer order

### Understanding the detail page

When you open a transfer order, you land on the Transfer Order Detail page. A banner at the top tells you how many items still need to be received. For example, it may state “There are 1 open item(s) to be received; enter a quantity for all items before completing” with a small info icon labelled Tap to learn more. Clicking this icon opens a modal explaining the steps needed to complete the order and reminds you to enter zero for items you did not receive. If Receive by fulfillment is enabled in Settings, the header also shows an Unfulfilled items count for items that have no fulfilled quantity.\
Below the banner are:

* A Scan items field and Scan button. The input field labelled Scan items accepts barcodes from a handheld 2D scanner in HID (keyboard) mode—simply scan a product and press Enter to increment its quantity. The matching item card automatically scrolls into view and a toast message (“Scanned MH09MRedHC successfully”) confirms the scan. The Scan button with a camera icon opens a camera‑based barcode scanner when permissions are enabled; if permissions are not granted, a message appears prompting you to allow camera access.
* A set of tabs labelled All, Open and Received and Completed. These tabs filter the item list.
  * All shows every item on the transfer order.
  * Open lists only items that still need quantities (blank or partially received).
  * Received and Completed lists items that have been closed.

Switching to the Open tab is useful when working through large orders.

### Item cards

Each item appears as a card containing:

* Product image and SKU – helps identify the product.
* On‑hand quantity – a chip (for example, “19 on hand”) shows how many units are currently in your store.
* Qty field – a numeric input where you type the quantity received. The field is blank by default. Clicking inside the field displays a cursor; you can type a value or use the up/down arrows to adjust.
* Receive All button – fills the quantity field with the remaining expected quantity for that item. Use this when you physically receive the full shipment.
* Progress bar and badges – a horizontal bar reflects how much of the expected quantity you have entered. To the right are two numbers: the first shows how many units were received in previous sessions, and the second shows the expected quantity (for example, “0 received 10 ordered”). When your entry equals the expected quantity, the bar turns green; if the number exceeds it, the bar turns red to highlight a potential error. If Receive by fulfillment is enabled, the expected quantity is the fulfilled quantity instead of the ordered quantity.

Enter the quantity you physically received for each line item. If you did not receive any units, type 0 instead of leaving the field blank; blank fields will prevent you from completing the order. You can also scan barcodes into the Scan items field to increment the quantity automatically; scanning the same code multiple times increases the quantity each time.

### Saving progress vs completing the order

At the bottom of the detail page you will see a bar showing your progress and two actions: Save progress and Receive and complete.

* Save progress – Use this when you need to leave the order open. Clicking Save progress brings up a modal that explains that inventory will be updated for the quantities entered but the transfer order will remain open. Confirming the modal saves your entries and returns you to the order. Fully received items (where the quantity equals the ordered amount) automatically move to the Received and Completed tab after saving, reducing clutter and letting you focus on the remaining open items.
* Receive and complete – Use this when you are ready to close the transfer order. The button is always enabled but its behavior depends on whether all quantities have been entered. If some items are still blank, clicking Receive and complete filters the view to show only those items, displays a red message instructing you to enter the actual quantity (or 0 if not received) and provides a Back to open items link. Once every item has a quantity, clicking Receive and complete opens a confirmation modal listing each item with any discrepancies, allowing you to finalize the order. The order then moves to the Completed tab on the Transfer Orders dashboard.
* Empty quantities – If you click Save progress or Receive and complete when no quantities have been entered on any item, the app shows a pop‑up alert requesting that you “Specify quantity for at least one of the items to receive”. The buttons are intentionally left enabled to prompt you to correct the issue rather than silently blocking progress.

If an error occurs while completing the order (for example, due to a backend issue), you may see an error banner such as “Error in receiving transfer order”. If this happens, try saving progress and attempt completion later or contact support.

### Using the scan feature

Scanning barcodes can speed up receiving, especially for large orders with many units. There are two scanning modes:

* HID scanner mode – At the top of every transfer‑order detail page is a Scan items input field. When you use a handheld 2D scanner configured in HID (keyboard) mode, each barcode you scan is typed into this field. Pressing Enter (or the scanner’s trigger) adds one unit to the matching item, scrolls that item card into view and displays a toast notification confirming the scan. Re‑scanning the same item increments the quantity again.
* Camera mode – Clicking the Scan button opens a camera‑based scanner. The app requests camera permission the first time; if granted, a scanning window appears. Align the barcode within the frame. When a barcode is detected, the app automatically increments the quantity for the matching item by one. If the barcode is not recognized or the product is not part of the transfer order, you will see a message.

Scanning can be repeated until the expected quantity is reached. If you later determine that the scanned count was incorrect, click inside the Qty field and edit the number before saving progress or completing the order.

## Tips for efficient receiving

* Use the search bar on the dashboard to quickly locate a specific transfer order.
* Work through the Open filter on the detail page to focus on outstanding items.
* Use Receive All when the full ordered quantity has arrived; otherwise, manually enter the quantity.
* Enter 0 for items you did not receive rather than leaving the field blank – blank fields prevent order completion.
* Save progress periodically on large orders to avoid losing work if you need to step away.
* If you encounter a scanning error (for example, camera permission denied), check your browser settings and grant camera access.
* Review the confirmation modal carefully before completing an order; once completed, the order moves to the Completed tab and cannot be reopened.

## Receiving unexpected items

At times, stores receive items that differ from the recorded shipment. This discrepancy could arise from mispicking at the warehouse or inadvertently shipping more items than intended. When stores unexpectedly receive these extra items, they require a process to receive and record these additional items effectively.

### How to receive unexpected items

1. **Add Product**: Click the `(+)` icon located at the top right corner of the Transfer Order Detail page. This will open a box to search for and add a product to the order.
2. **Search and Select**: Search for the product by its SKU or name. Once the product appears in the search menu, click the `Add to Transfer Order` button to include it.
3. **Enter Quantity**: The product will then appear on the Detail page. Enter the quantity of the unexpected item and proceed with the usual receiving process.

## Handling discrepancies and reconciliation

Before closing an order, the app checks whether any items have been received in quantities different from what was fulfilled. If you attempt to Save progress or Receive and complete with an over‑receipt or under‑receipt, a Save receiving progress modal appears summarising the affected items and highlighting how much was over or under. You must select the items or mark them as a discrepancy to proceed. This in‑app review step reduces accidental over‑receipts and ensures you acknowledge exceptions.\
The receiving app then integrates with NetSuite to automatically reconcile under‑receipts, over‑receipts and mis‑ships. When you close an item using Receive and complete, the app sets a custom field that triggers NetSuite automation:

* Under receipts – If you receive fewer units than were shipped, NetSuite creates an Item Receipt for the received quantity and an Item Adjustment for the shortfall, then closes the order item.
* Over receipts – If more units arrive than were fulfilled, NetSuite records the fulfilled quantity as an Item Receipt and logs the excess units as an Item Adjustment referencing the transfer order.
* Mis‑shipped items – NetSuite will create an Item Adjustment referencing the transfer order to account for the mis‑shipped goods.

***


# Returns and Purchase Orders

Manage purchase orders and returns while keeping inventory counts accurate.

The Receiving app also supports purchase-order receipts and return receipts. These flows share core actions such as barcode scanning, quantity entry, progress indicators, and inventory updates, but their screens are not identical to the transfer-order workflow.

## Purchase orders

Purchase orders are supplier-facing inventory orders that can be received directly in the app.

### Purchase orders list

The `Purchase Orders` page includes:

* A search bar.
* `Open` and `Completed` filters.
* Refresh and load-more controls.

Open purchase orders include records in `Created` or `Approved` status.

### Purchase order detail

The Purchase Order detail page shows:

* A scan field and camera-based scanning action while the order is still open.
* Pending and completed item sections.
* Item cards with product image, identifiers, facility location, `Qty`, `Receive All`, a progress bar, and received history.
* `Receive` and `Receive And Close` actions.

Use `Receive` to create and receive inventory for the quantities entered while keeping the purchase order open for later receipts. Use `Receive And Close` when you are ready to close the remaining items on the purchase order.

Purchase orders support partial receiving across multiple receipts, so users can receive inventory in stages as shipments arrive.

## Returns

The `Returns` section is used to receive return shipments and add returned stock back into inventory when applicable.

### Returns list

The `Returns` page includes:

* A search bar.
* `Open` and `Completed` filters.
* Refresh and load-more controls.

Users can search returns by values such as return shipment ID, tracking code, external ID, HotWax order ID, or Shopify order name.

### Return detail

The Return detail page shows:

* Return header information and status.
* A scan field and camera-based scanning while the return is still receivable.
* Item cards with product image, identifiers, QOH, `Qty`, `Receive All`, and a progress bar against the returned quantity.
* A floating action button to complete receiving when at least one quantity has been entered.

If the return is already completed or no longer receivable, the same field is used to search and highlight items instead of updating quantities.

## Related guides

* For transfer-order receiving, see [Transfer Orders](/documents/store-operations/inventory/receiving/transfer-orders).


# Reports

Track and manage discrepancies in fulfilled transfer orders, ensuring precise alignment between expected and received quantities.

## Discrepancy tracking for fulfilled transfer orders

Use this report to monitor discrepancies in fulfilled transfer orders. It compares expected shipped quantities with actual receipts.

## Receiving discrepancy report

Identify facilities where actual receipts do not match expected shipped amounts. Prioritize locations with higher discrepancies to investigate potential issues.

**In case of NetSuite**

In NetSuite, the report compares actual receipts with expected shipped amounts from transfer orders to highlight inventory accuracy issues.

**User:** Operations team

| Field                     | Details                                                           |
| ------------------------- | ----------------------------------------------------------------- |
| Shipment\_Id              | The ID of the shipment in external system                         |
| HotWax\_Shipment\_Id      | The ID of the shipment in HotWax                                  |
| Transfer\_Order           | The ID of the transfer order in external system                   |
| SKU                       | Unique identifier                                                 |
| Origin\_Facility\_Id      | The ID of the origin facility where the shipment originates       |
| Origin\_Facility          | The name of the facility where the shipment originates            |
| Destination\_Facility\_Id | The ID of the destination facility where the shipment is destined |
| Destination\_Facility     | The name of the facility where the shipment is destined           |
| Expected                  | Quantity expected to be shipped                                   |
| Received                  | Quantity actually received                                        |
| Difference                | Variance between expected and actual quantities                   |
| Status                    | Current status of the shipment                                    |


# Settings

In the Settings section you can:

* View your profile details such as user ID, name, and avatar (if available).
* Log out of the app (when not embedded) or return to Launchpad.
* View the order management system (OMS) instance and the facility you are connected to, and switch facilities when needed.
* View the app version information.
* Configure product identifiers. For example, select a primary identifier such as UPCA or SKU and a secondary identifier if needed.
* Change your time zone. The selected time zone determines how timestamps appear throughout the app.
* Enable Force scan. When enabled, associates can increment received quantities only by scanning barcodes.
* Choose the barcode identifier used for Force scan. If the identifier is not found, the scan defaults to the internal name.
* Set the receiving flow type for transfer orders by enabling or disabling Receive by fulfillment.
* Some options may be hidden or disabled based on your permissions.

## Receive by fulfillment (transfer orders)

Use this setting when receiving should be based on what the warehouse fulfilled instead of the original ordered quantity. It only impacts transfer orders.

When Receive by fulfillment is enabled:

* Item cards show fulfilled quantity instead of ordered quantity.
* The Unfulfilled items count appears in the header to highlight items with no fulfilled quantity.
* Receive All, progress bars, and completion checks use fulfilled quantity as the target.
* Save progress and Receive and complete totals compare received units against fulfilled units.
* Over- and under-receipt checks are calculated against fulfilled quantities.

When Receive by fulfillment is disabled, the app uses the ordered quantity for all of the above behaviors.


# Permissions

The receiving app uses application permissions that are derived from server permissions. Each app permission maps to a server permission in `Rules.ts`. If the rule is empty, the app permission is granted to all users who can log in.

Permissions affect:

* Navigation and route access (menu visibility and page access).
* Action controls (buttons and toggles are disabled or hidden).
* Facility access for admins.

## Navigation and route access

| App permission                  | Server permission             | Impact in the app                                                                         |
| ------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------- |
| `APP_SHIPMENTS_VIEW`            | `FULFILLMENT_LEGACY_APP_VIEW` | Allows access to the Shipments list and Shipment Details routes and menu item.            |
| `APP_TRANSFERORDERS_VIEW`       | `FULFILLMENT_APP_VIEW`        | Allows access to the Transfer Orders list and Transfer Order Detail routes and menu item. |
| `APP_RETURNS_VIEW`              | (none)                        | Allows access to the Returns list route and menu item (granted to all users).             |
| `APP_RETURN_DETAIL_VIEW`        | (none)                        | Allows access to the Return Detail route (granted to all users).                          |
| `APP_PURCHASEORDERS_VIEW`       | (none)                        | Allows access to the Purchase Orders list route and menu item (granted to all users).     |
| `APP_PURCHASEORDER_DETAIL_VIEW` | (none)                        | Allows access to the Purchase Order Detail route (granted to all users).                  |

**Special case behavior**

* If a user has both `APP_SHIPMENTS_VIEW` and `APP_TRANSFERORDERS_VIEW`, the Transfer Orders menu item is hidden and direct access redirects away from the Transfer Orders pages.
* When a user attempts to open a page they do not have permission for, they are redirected to the previous page (or Settings if landing from login).

## Receiving and order actions

| App permission        | Server permission | Impact in the app                                                                                                                                                                                  |
| --------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `APP_SHIPMENT_UPDATE` | `RECEIVING_ADMIN` | Enables receiving actions such as Receive, Receive and Close, Save progress, and Complete across shipments, transfer orders, purchase orders, and returns. Without it, those buttons are disabled. |
| `APP_SHIPMENT_ADMIN`  | `RECEIVING_ADMIN` | Enables the Add Product button on Shipment Details, Transfer Order Detail, and Purchase Order Detail screens.                                                                                      |

## Settings and configuration

| App permission                       | Server permission | Impact in the app                                                                                          |
| ------------------------------------ | ----------------- | ---------------------------------------------------------------------------------------------------------- |
| `APP_PRODUCT_IDENTIFIER_UPDATE`      | `COMMON_ADMIN`    | Allows editing product identifier preferences in Settings (applies within the Product Identifier control). |
| `APP_UPDT_FULFILL_FORCE_SCAN_CONFIG` | `COMMON_ADMIN`    | Enables the Force scan toggle in Settings.                                                                 |
| `APP_UPDT_RECEIVE_FLOW_CONFIG`       | `COMMON_ADMIN`    | Enables the Receive by fulfillment toggle in Settings.                                                     |
| `APP_PWA_STANDALONE_ACCESS`          | `COMMON_ADMIN`    | Shows the Go to Launchpad button in Settings.                                                              |

## Admin facility access

| App permission    | Server permission | Impact in the app                                                                                              |
| ----------------- | ----------------- | -------------------------------------------------------------------------------------------------------------- |
| `APP_RECVG_ADMIN` | `COMMON_ADMIN`    | Admins can access all facilities; non-admin users only see their assigned facilities in the facility switcher. |

## Reserved or currently unused

| App permission      | Server permission   | Impact in the app                             |
| ------------------- | ------------------- | --------------------------------------------- |
| `APP_COMMERCE_VIEW` | `COMMERCEUSER_VIEW` | Not currently referenced in the receiving UI. |


# Cycle Count

## Dashboard

When the store associate or manager logs into the application, all assigned cycle counts appear on the dashboard. Each count card shows the type (Hard/Directed), name of the count, start date & time, and due date.

## Cycle count workflow

* [Plan your count with a preview](/documents/store-operations/inventory/cycle-count/plan-cycle-count)
* [Create sessions and complete your count](/documents/store-operations/inventory/cycle-count/start-complete-session)
* [Review counts at the store before submitting for review](/documents/store-operations/inventory/cycle-count/count-progress-review)
* Review and approve variances at head office
* [Go back and review old counts and export](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/retail-operations/inventory/cycle-count/closed.md)


# Plan Cycle Count

## Accessing your assigned counts

Store counts are accessed via the Counts tab. Each card represents a cycle count at your facility and shows:

* Count name and creation time: Helps identify the task.
* Due date: When the head office expects the count to be completed.
* Start date: Scheduled start time for counting.
* Sessions list: Names of existing sessions (usually one session per associate).
* Action buttons – vary according to status:
  * Created counts show `Start counting` (to begin the first session) and `Preview count` (to view details without starting).
  * In progress counts show `Review progress and complete` (to open the progress page) and `New session` (to add more counters).

## Required permissions

* Open the Counts tab and see cycle count cards: any of `FULFILL_INVCUNT_ADMIN` or `INV_COUNT_ADMIN`.
* See item details in Preview before counting begins: any of `PREVIEW_COUNT_ITEM`, `INV_COUNT_ADMIN` or `COMMON_ADMIN`.
* Start a count before its planned start time: any of `COMMON_ADMIN`, `INV_COUNT_ADMIN` or `INV_COUNT_PRE_START` (otherwise the `Start counting` button is disabled until the start time).

## Preview (before counting starts)

Selecting `Preview count` for a count in the `Created` state opens a `Track progress` page. At this point no items have been counted. The page includes:

* Count header card: Displays due date, start date and a status badge (`Created`). A Sessions section shows the default session.
* **Products counted widget:** Shows how many products have been counted (usually 0) and how many are remaining. This number gives managers an idea of the workload.
* Tabs for uncounted, undirected and counted: These categories display item lists once counting begins. Before the count starts, the `Uncounted` tab shows the total number of items to be counted. If your user has access, you can also preview the exact products that will be counted.

### Planning tips

* Estimate labor. Use the products remaining figure to determine how many associates you’ll need. If there are hundreds of SKUs, schedule more counters or spread the work across multiple days.
* Check start and due dates. Ensure counting begins on or before the start date and will finish by the due date. Communicate this timeline to your team.
* Create sessions wisely. When you’re ready to start, return to the counts list and click `Start counting` to create the first session. Add more sessions via `New session` once counting is in progress.


# Start & Complete Session

a comprehensive guide to performing cycle counts, scanning items, and handling discrepancies.

### Starting the count

Once the start time arrives, the `Start counting` button becomes active in the count card. After starting, the count moves into the `In progress` state.

### Required permissions

* Open the Counts list and start sessions: any of `FULFILL_INVCUNT_ADMIN` or `INV_COUNT_ADMIN`.
* Start a count before its planned start time: any of `COMMON_ADMIN`, `INV_COUNT_ADMIN` or `INV_COUNT_PRE_START` (otherwise `Start counting` stays disabled until the start time).
* Force‑release another user’s active session: `COMMON_ADMIN`.

### Creating sessions

Managers or associates can create multiple sessions to divide the work. When they click `New session`, a form appears to:

* Enter the session name
* Select the area (Backstock, Display, etc.)

The system automatically creates one default session. Multiple sessions can run in parallel. If a session is active, no other user can work on that same session. Managers have permission to forcibly release another user's active session when a session is abandoned or blocked.

### Performing the count

Inside a session, the associate will see:

* Count name and type
* Options to edit the session name/area
* Option to discard the session
* `Submit` button for when the session is complete

#### Session actions (edit, discard, submit)

* **Edit**: Opens a modal to update the session name and area. Available while the session is `In progress` and not locked by another user.
* **Discard**: Shows a confirmation before marking the session as discarded. Available while the session is `In progress` and not locked. Once discarded, the session is removed from review and you are returned to the counts list.
* **Submit**: Completes the session. Appears only while the session is `In progress`; disabled when the session is locked. Submission is blocked until all unmatched items are resolved.
* **Locked sessions**: If another user/device holds the lock, all action buttons are disabled until the lock is released.
* **After submission**: The action bar only shows `Re-open session` (outline, yellow) so you can resume counting if needed.
* **Discarded sessions**: The action bar shows a `Session discarded` badge; no other actions are available.

#### Scanning items

The scan action button changes based on session state:

* Before the session starts, it shows `Start counting` (green). Tapping it moves the session to `In progress` and focuses the scanner input.
* During the session, if the input is not focused, it shows `Resume counting` (red) as a reminder to return focus to the scanner field.
* When the scanner input is already focused, it shows `Scanner ready` and is disabled until focus is lost.

The scanned items will appear in the left panel. If a wrong item is scanned, the associate can remove it, and the system will adjust the count automatically.

#### Item categories during scanning (for directed counts)

Scanned items automatically fall into four sections:

* `Counted`: Items assigned to this session and matched correctly
* `Unmatched`: Items scanned but not found in the system
* `Undirected`: Items that exist in system but were not assigned to the associate
* `Uncounted`: Items given for counting but not yet scanned

#### Item categories during scanning (for hard counts)

Scanned items automatically fall into two sections:

* `Counted`: Items assigned to this session and matched correctly
* `Unmatched`: Items scanned but not found in the system

While scanning, the system will also display the total number of units scanned and the number of unique products counted. This helps the store team track their progress and supports the reconciliation process.

For example, before counting a shelf, the team may identify that it contains 40 units. As they scan each item, the system will update the count of units and products scanned, allowing them to verify that everything has been captured accurately.

During scanning, some items may appear in the `Unmatched` tab. These are items whose UPC/UPCA does not match any product in the system. Store associates must review and manually match these items before submitting the session.

#### How to match an unmatched item

1. Open the `Unmatched` tab inside the session.
2. Locate the item that needs to be matched.
3. Click on the `Match` icon.
4. A `Match Product` modal will open.
5. The scanned UPC/UPCA will already be auto-filled in the search field.
6. The system will display possible product matches based on the code.
7. Select the correct product from the results.
8. Click `Save` to confirm the match.

#### What happens after saving the match

* If the matched product belongs to the count, it moves to the `Counted` tab.
* If the item is not assigned in the count, it moves to the `Undirected` tab.
* The item is removed from the `Unmatched` list.

The unmatched item card also shows the time when this item was scanned and how many scans ago it occurred. The matched scans before and after this product are also displayed so that the associate can correctly locate the unmatched item in the store.

This ensures the store team can complete the count with all items correctly mapped to system products.

#### Add hand-counted items

At the bottom left of the page, there is an option to add items that have already been hand-counted. Click on `Hand-Counted Items`, and a new screen will open to add these items.

The search on this screen supports both item-level identifiers and the parent product name. This helps associates find the correct variant even when they only know the shared style or parent product title.

* Search for the item using its SKU or parent product name and press Enter. This will add the item directly.
* Enter the quantity manually, or use the `+` and `−` buttons to adjust the inventory.
* To remove an item, click the cross (`×`) button.

After adding all hand-counted items and their quantities, click the `Save` button at the bottom right of the page. All these counted items will then be added to the session.

**Note**: Hand-counted items can be added in directed counts only when they are already included in the directed list.


# Count Progress & Review

The Preview page and Review Progress and Complete page in the HotWax Commerce Cycle Count app help store teams plan and monitor in‑store cycle counts. These pages are primarily designed for store managers. Associates focus on the counting screens and may never need to open these management views.

## Purpose and user roles

| Role            | Purpose of the page                                                                                                                                                                                                                                                                                                          |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Store manager   | Uses Preview to understand what a count entails, how many products are involved, when counting should begin and end, and who is assigned. During counting, the manager uses Review Progress and Complete to track each associate’s sessions, ensure all items have been counted and submit the count for head‑office review. |
| Store associate | Typically does not use these pages. Associates launch counting sessions from the main tasks list and focus on scanning and entering counts.                                                                                                                                                                                  |

**Inventory‑control mindset:** These management views are critical to maintaining accountability. They allow a manager to plan adequate staffing, monitor progress and ensure that all directed items have been counted before submission.

## Required permissions

* Open counts and reach the Preview/Review Progress page: any of `FULFILL_INVCUNT_ADMIN` or `INV_COUNT_ADMIN`.
* View product details in the tabs when the count is still in `Created`/not yet started: any of `PREVIEW_COUNT_ITEM`, `INV_COUNT_ADMIN` or `COMMON_ADMIN`.
* Discard undirected items, mark uncounted items out of stock, and submit the count for review: any of `COMMON_ADMIN`, `INV_COUNT_ADMIN` or `INV_COUNT_SUBMIT`.

## Accessing your assigned counts

Store counts are accessed via the Counts tab. Each card represents a cycle count at your facility and shows:

* Count name and creation time – helps identify the task.
* Due date – when the head office expects the count to be completed.
* Start date – scheduled start time for counting.
* Sessions list – names of existing sessions (usually one session per associate).
* Action buttons – vary according to status:
  * Created counts show `Start counting` (to begin the first session) and `Preview count` (to view details without starting).
  * In progress counts show `Review progress and complete` (to open the progress page) and `New session` (to add more counters).

## Review progress and complete (during counting)

When a count is moved to the `In progress` state (by tapping `Start counting`), the `Review progress and complete` button opens a more detailed progress page. This page provides a real‑time overview of the count:

* Count header card – similar to the preview card but now shows a status badge `In progress`. The Sessions list indicates each counting session and its state (`Created`, `In progress` or `Submitted`).
* Products counted widget – updates dynamically to show how many products have been counted and how many remain. This helps managers gauge progress at a glance.
* Submit requirements panel – a checklist indicating what must be done before the count can be submitted:
  * **Permission granted:** Verifies the logged‑in user has rights to submit counts.
  * **Count is in progress:** Confirms the count is not still in Created state.
  * **All sessions submitted:** Each counter must finish their session and mark it as submitted (done from the session counting screen). This prevents partial data from being sent to head office.
  * **All requested items counted:** Verifies there are no uncounted directed items. If there are still uncounted SKUs, the manager should follow up with the team.
  * **`Submit for review` button:** Becomes enabled only when all checklist items are satisfied. Clicking this sends the completed count to head office for audit and final approval. Once submitted, the count appears in `Pending review` for regional managers.

### Managing sessions and submission

1. Monitor session status. Ensure each associate submits their session when finished. If a session is stuck in `In progress`, follow up with the associate to complete their counts.
2. Review uncounted items. In the Uncounted tab, verify that there aren’t any remaining SKUs. If there are, re‑assign them by creating a new session or asking an associate to reopen their session.
3. Handle items not in stock. Sometimes uncounted items remain because they simply are not in stock. Once all active sessions show a Submitted state, the Uncounted tab displays an option such as `Mark remaining items out of stock`. Clicking this button generates a new session and automatically assigns a quantity of 0 to every remaining item. For directed counts, this zero‑quantity session includes only the items that were assigned to be counted; for hard counts, it includes all SKUs with positive system inventory that were not counted. After this action, the previously uncounted list should be empty.
4. Submit when complete. After all sessions (including the zero‑quantity out‑of‑stock session) are marked as submitted and the Uncounted tab is clear, click `Submit for review`. Once submitted, the count cannot be modified by the store and moves to the head office for approval.

### Uncounted tab

This tab lists all products that were assigned for the directed count but were not counted by the team.

* For each item, the current system on-hand quantity is displayed so the manager can decide how to handle the item.
* If items remain uncounted even after the associate has submitted the session, it usually means these products were not physically found in the store.

**Available action:** `Mark out of stock`

* The manager can click `Mark out of stock` to update all uncounted items in bulk.
* This feature is provided so that if the counting is actually complete and these items were genuinely not found, the manager can cleanly mark them as out of stock.
* This ensures accurate inventory and prevents incorrect stock from carrying forward.
* Uncounted/Undirected/Counted tabs – allow the manager to inspect items that haven’t been counted, items counted outside of their directed location (undirected), and items already counted. Each tab displays product images, names, SKUs and variance fields so managers can quickly spot issues.

### Undirected tab

This tab shows items that were not part of the directed count list, but were scanned by the team during the count.

* For each item, both the counted quantity and the system quantity are shown.
* Variance is displayed to help the manager understand the difference.

**Available action:**

* `Discard all undirected items`: If these items should not be included in the count submission, the manager can skip all of them at once.
* `Discard`: The manager can selectively skip specific undirected items by clicking the `Skip` button next to each one.

### Counted tab

This tab displays all the items that were part of the directed count and were successfully counted.

* It shows the counted units, the system units, and the variance for each item.
* This helps the manager quickly review discrepancies before final submission.

## Store associate workflow (simplified)

Store associates generally skip the preview and progress pages. Their workflow is:

1. Navigate to the assigned counts list and tap `Start counting` next to the assigned count.
2. The system automatically opens the counting session where they scan barcodes and enter quantities.
3. When finished, they mark the session as `Submit` within the counting screen. This updates the session status so the store manager can see it in Review Progress and Complete.

Associates should focus on accurate counting and timely submission. All other management functions – creating sessions, monitoring progress, ensuring compliance and submitting counts to head office – are handled by the store manager.

Read more details about performing a count on [this page](/documents/store-operations/inventory/cycle-count/start-complete-session).

## Inventory control tips

* Plan resources based on product volume. Before starting a count, use the preview to estimate how much labor is needed. Build your counting schedule to minimize disruption to customers (e.g. after hours or during slow periods).
* Track progress daily. During counting, check the progress page regularly. If the products remaining number isn’t decreasing as expected, investigate whether associates need help or additional training.
* Ensure session discipline. Require associates to submit their sessions promptly. Sessions left open for days can lead to stale data and variances.
* Verify all items counted. Do not submit a count until the uncounted and undirected tabs are zero. Head office may reject incomplete counts, delaying inventory reconciliation.
* Keep notes for exceptions. If some items cannot be counted (damaged or missing), document reasons and communicate them to head office. Proper documentation supports accurate adjustments.

By using the Preview and Review Progress/Complete pages effectively, store managers can plan cycle counts, allocate staff, monitor progress in real time and ensure the count is complete and compliant before submitting it for final review.


# Run Diagnostics

To ensure that the Cycle Count App is properly configured and ready for use, HotWax Commerce provides a Run Diagnostics feature. This feature helps users verify that the device, app services, and required configurations are functioning correctly. Running diagnostics in advance reduces the risk of interruptions and errors during counting activities.

The diagnostics can be run from within the Cycle Count App by following these steps:

1. Navigate to the `Settings` page in the Cycle Count App.
2. Locate the `Diagnostics` card and click on the `Run Diagnostics` button to start the validation process.

{% hint style="info" %}
As the diagnostics run, each check will initially appear in a testing state. The checks are executed sequentially, and each one turns green upon successful completion, indicating that the validation has passed. Once all diagnostics turn green, the system is ready for cycle count operations. If any diagnostic does not pass, users should resolve the identified issue before proceeding with cycle count activities to ensure accurate and uninterrupted operations.
{% endhint %}

{% embed url="<https://youtu.be/v8mWo5HjCGQ>" %}
Video: Run Diagnostics
{% endembed %}


# Transfer Orders

How to manage transfer orders in HotWax Commerce.

Transfer orders are integral to maintaining inventory balance, minimizing stockouts, and optimizing inventory allocation across different stores or warehouses. By effectively managing transfer orders, organizations can enhance their operational efficiency, reduce costs associated with excess inventory or unnecessary transportation, and ultimately improve customer satisfaction through timely order fulfillment. Inventory transfers can be of various types, such as:

* **Warehouse to Store:** When there is a need to replenish inventory at retail stores from the central warehouse or distribution center, transfer orders can be initiated to move the required items from the warehouse to the stores.
* **Store to Warehouse:** Sometimes, stores might need to return excess or unsold inventory back to the warehouse for consolidation or redistribution. Transfer orders facilitate this movement from the stores back to the warehouse.
* **Store to Store:** In cases where one store has excess inventory that another store requires, transfer orders can be used to transfer inventory directly between stores, optimizing stock levels across the retail network.

This guide focuses on store-level operations for TOs. For retail operations and admin workflows—such as creating, configuring, and managing TOs—refer to the [Transfers App user manual](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/retail-operations/inventory/transfers-app.md).


# Transfer Order Fulfillment

How to fulfill transfer orders in HotWax Commerce

Use the Fulfillment App to fulfill Transfer Orders (TOs). Use the app for store-to-store and store-to-warehouse transfers; complete warehouse-to-store transfers in your Warehouse Management System (WMS). This guide covers locating a TO, picking and packing inventory, creating shipments, handling exceptions, and completing fulfillment.

## Fulfilling a TO

### Locate the TO

* Open the **Transfer Orders** page.
* Use the search bar to look up the TO by ID or name.
* You only see TOs where the origin facility matches your selected facility.

### Review TO details

Opening a TO displays:

* Item list with product name, image, SKU, and ordered quantity.
* Total number of items to fulfill.
* A progress bar that shows fulfillment progress per item.

This view helps you verify items before starting fulfillment.

### Print picklist

* Select **Print Picklist** to generate a packing checklist.
* For details, see [Transfer Order Picklist](/documents/store-operations/inventory/transfer-order-management/picklist).

### Pick items

Pick items using one of three methods:

1. **Barcode scanner:** Scanning selects the item and increments the picked quantity.
2. **iPad camera:** Tap **Scan** to open the camera and scan the barcode.
3. **Enter SKU:** Enter the SKU in the **Scan Item** field.

Each scan or SKU entry adds one unit and updates the progress bar. You can also manually enter picked quantities once an item is selected.

> **Tip:** Use `Pick All` when you are picking the entire ordered quantity for an item.

### Create shipment

TOs may be fulfilled in multiple shipments or in a single shipment.

#### Fulfill in multiple shipments

If you are fulfilling multiple shipments, record only the items for the current shipment. The rest remain open until fulfilled later.

* Enter quantities for the items included in the current shipment.
* Tap **Create Shipment** and confirm by selecting **Create**.

#### Fulfill in single shipment

When the entire TO is fulfilled at once, all items are picked and shipped together.

* Tap **Pick All** for every item in the TO.
* Tap **Create Shipment** and confirm by selecting **Create**.

Once a shipment is created, the TO is marked as fulfilled and cannot be edited.

### Review shipment

After a shipment is created, the **Review shipment** page opens. Choose either to:

* Tap **Generate shipping label** to fetch carrier and tracking information automatically, or
* Enter the carrier and tracking code manually.

### Complete shipment

After entering the tracking code:

* Select **Complete Shipment**.
* Confirm by tapping **Ship**.

## Exception handling

### Rejecting an item in a TO

If an item cannot be fulfilled (missing inventory, damage, or incorrect listing), reject it. Rejecting any item rejects the entire TO and records an inventory variance so future orders plan against accurate stock.

Steps to reject an item:

* Open the **Report an Issue** dropdown next to the item.

{% hint style="info" %}
The **Report an Issue** dropdown is only available if no shipments have been created for the TO.
{% endhint %}

\- Select a rejection reason (for example, Not in stock, Mismatch, or Damaged). - Remaining items default to \*\*No Variance\*\* and the \*\*Reject Items\*\* button appears. - Select \*\*Reject Items\*\* and confirm by tapping \*\*Reject\*\*.

After rejection, the TO moves to **Rejected Order Parking**, and inventory variance is logged based on the selected reason. For details on rejection reasons, see **Rejections**.

### Cancelling an item in a TO

You can cancel a specific item even if it has been partially fulfilled (for example, low stock, damaged inventory, or a cutoff). Cancelled items are no longer available for fulfillment in either app.

Steps to close an item:

* Tap **Close Items**.
* In the review dialog, select the checkboxes for the items to close, then tap the **Save** icon.
* When prompted, tap **Proceed** to confirm.

Closed items are removed from the TO in both the Fulfillment App and the Receiving App.


# Transfer Order Receiving

How to receive transfer orders in HotWax Commerce.

The Receiving App lets you receive inventory against Transfer Orders (TOs). You can receive items partially or fully as they arrive, with real-time updates. This guide covers locating a TO, receiving items, handling different receiving scenarios, and managing discrepancies.

## Receiving a TO

Follow these steps to receive a TO.

### Locate the TO

After signing in you land on the Transfer Orders page, with an Open tab listing TOs scheduled for your facility.

* Search by TO name or tracking code.
* Each entry shows the order status and creation timestamp.
* Only TOs for your destination facility appear.

### Review TO details

Opening a TO shows:

* Total number of items to receive.
* Item list with product name, image, SKU, and ordered quantity.
* A progress bar that indicates how much of each item has been received.

This view helps you verify items before starting the receiving process.

### Receive items

There are three ways to receive inventory:

* **Barcode scanner:** Scanning a barcode finds the matching item, selects it, and increases the received quantity.
* **iPad camera:** Tap `Scan` to open the camera and scan the item’s barcode.
* **Enter SKU:** Enter the SKU in the **Scan Item** input field.

Each scan or SKU entry adds one unit and updates the progress bar. You can also enter received quantities manually once an item is selected.

> **Tip:** Use `Receive All` to record the full ordered quantity for an item without scanning.

## Multiple receiving scenarios

TOs may be received partially or all at once.

### Receive items partially and keep the order open

* Record the quantities that arrived.
* Tap `Receive` to log the receipt and keep pending items open.

### Receive items partially, close specific items and keep the order open

If some items were canceled at the source:

* Use `Receive All` for items that fully arrived; enter partial quantities for the rest.
* Tap `Receive and Close`.
* In the review modal, select the checkboxes for items to close, then tap the Save icon.
* Confirm by tapping `Proceed`.

Closed items move to the Completed tab; remaining items stay under Open.

### Receive items partially and close the order

If no more items are expected:

* Use `Receive All` for fully arrived items; enter partial quantities for the rest.
* Tap `Receive and Close` and follow the closing steps.

### Receive all items and close the order

* Use `Receive All` for each item in the TO.
* Tap `Receive and Close` and follow the closing steps.

### Standard closing steps

In any scenario where you close items or an entire TO, the steps are the same:

1. Tap `Receive and Close`.
2. In the review modal, select the checkboxes for the items you want to close, then tap the Save icon.
3. In the confirmation pop-up, tap `Proceed`.

{% hint style="info" %}
Once you close items in a TO, you can’t receive them again. Make sure no more items are expected before closing.
{% endhint %}

***

## Receiving discrepancies

### Over receiving

If you receive more units than ordered, you can still record them. For example, if the TO is for 100 units but 110 units arrive, you can record all 110. As you scan or enter items, the progress bar goes beyond the ordered quantity and turns red to show that over-receiving has occurred. This way, you can record the exact quantity received and continue without interruption.

### Under receiving

If fewer units arrive than ordered, you can finalize the TO with the received quantities. For example, if 100 units were ordered but only 80 arrive, you can record 80 and close the order. This way, the process isn’t blocked even if the order is incomplete—for example, when items were mispicked, delayed, or not shipped.

### Receiving unexpected items

If items arrive that weren’t part of the TO, add them so inventory stays accurate. For example, a product might be packed by mistake or shipped as excess stock.

Steps to add and receive an unexpected item in a TO:

1. Open the TO and tap the (+) icon on the details page to add a product.
2. Search by SKU or name, then tap `Add to Transfer Order`.

The product appears on the TO Details page. Enter the quantity and continue with the standard receiving process so all items that arrive are recorded.

***

## Reporting discrepancies

All receiving discrepancies are captured in the HotWax OMS system. Store managers can monitor the status of all transfer order receipts through the [Receiving Report](https://github.com/hotwax/oms-documentation/tree/user-guides-pub/documents/analytics/reports/inventory.md#receiving-report).

* Over-received items
* Under-received items
* Newly added items

For each item, the report lists the expected quantity, the received quantity, and the difference. You can open the report anytime or schedule it for delivery to specific users. Use it to reconcile receipts and keep inventory records accurate across systems.


# Transfer Order Picklist

This document describes the Picklist Functionality for Store Transfer Fulfillment.

The Picklist provides a detailed list of items in a Transfer Order (TO) to support accurate packing and tracking. Generate a PDF and use it as a checklist while preparing a shipment to transfer. Pack items first, then enter the details into the app to reduce confusion, prevent errors, and make it easier to generate shipments and shipping labels.

## Picklist Fields

| Field               | Description                                                                |
| ------------------- | -------------------------------------------------------------------------- |
| Item No.            | Serial number of the item.                                                 |
| Product             | Product identifier (e.g., SKU).                                            |
| Product Description | Brief description of the product.                                          |
| Quantity Ordered    | Total quantity of the item ordered.                                        |
| Quantity Picked     | An empty field for you to fill in the quantity of items as you pack.       |
| Box Number          | An empty field for you to fill in the box number where the item is packed. |

{% file src="/files/P93dzrQ5wu2uBGUpF9cI" %}

## Steps to use the Picklist

### Generate picklist

* Open a TO in the Fulfillment App.
* Tap the `Picklist` button in the lower-right corner of the page, next to `Create Shipment`.
* A PDF document is generated, listing all items in the TO along with details for packing.
* Print the picklist to use as a checklist or keep it open on an iPad while packing.

### Pack items using the picklist

* Use the picklist as a guide while packing items into boxes.
* Note down the quantities picked and the box number for each item on the picklist as you pack.

### Record in the App

After packing, use the picklist to record the packed items in the app.

## Complete Shipment

After recording, complete the shipment following the standard fulfillment process.

For detailed instructions on fulfilling a TO, refer to [Transfer Order Fulfillment](/documents/store-operations/inventory/transfer-order-management/transfer-order-fulfillment).


# Launchpad

The Launchpad serves as the central hub for all HotWax Commerce apps, providing easy access to development, user acceptance testing (UAT), and production versions of the applications all in one place.

**This document outlines key pages and functions within the Launchpad.**

**Key items:**

1. Home page
2. Application categories
3. Application instances

***

## Home page

Allows accessing all HotWax Commerce applications.

**Characteristics:**

**Single Sign-On (SSO):** Enables users to log in applications using their credentials. After the initial login in the Launchpad, they gain automatic access to all associated applications without the need to enter their login details again.

## **Application Categories**

Shows how apps are categorized on basis of their characteristics.

#### Orders

This category revolves around managing the orders using the three apps: BOPIS, Pre-Order Management and Fulfillment.

* **BOPIS (Buy Online, Pickup In-Store)** HotWax Commerce’s BOPIS app enables users to handover store pick-up orders to customers.
* **Pre-Order Management** HotWax Commerce’s Pre-Order Management app enables users to manage pre-orders and backorders, with planned future inventory to fulfill the orders.
* **Fulfillment** HotWax Commerce's Fulfillment app enables users to pick, pack, and ship orders brokered to the stores from the OMS.

#### Workflow

This category revolves around managing the workflow using the three apps: Threshold Management, Job Manager and Import.

* **Threshold Management** HotWax Commerce’s Threshold Management app enables merchandisers to set inventory thresholds for a group of products.
* **Job Manager** HotWax Commerce’s Job Manager app helps the operations teams to manage jobs by scheduling new jobs, skipping or canceling scheduled jobs and finding failed jobs that need attention.
* **Import** HotWax Commerce’s Import app enables users to import inventory and purchase orders.

#### Inventory

This category revolves around managing the inventory using the three apps: Receiving, Cycle Count and Picking.

* **Receiving** HotWax Commerce’s Receiving app enables users to manage incoming shipments, purchase orders, and return orders.
* **Cycle Count** HotWax Commerce’s Cycle Count app enables stock associates to count the store’s inventory, and reconcile systematic and physical inventory.
* **Picking** HotWax Commerce’s Picking app enables the fulfillment team to efficiently pick order items during order fulfillment.

#### Administration

This category revolves around managing users and facilities using the two apps: User Management, and Facilities.

* **User Management** HotWax Commerce’s User Management app allows businesses to create and manage users within the HotWax Commerce OMS.
* **Facilities** HotWax Commerce’s Facilities app assists businesses in overseeing multiple facilities like stores and warehouses, and managing attributes like facility details and fulfillment options for each facility.

***

## Application Instances

Users can access specific instances of the HotWax apps.

**Instances:**

**1. Production Instance:** To access the production instance of an app, users can click on the respective app card.

**2. UAT (User Acceptance Testing) Instance**: Users can access the UAT instance of an app by clicking on the bottom right icon of the respective app card.

**3. Dev (Development) Instance:** Users can access the dev instance of an app by clicking on the bottom left icon of the respective app card.

{% embed url="<https://youtu.be/J2imie7z0eU>" %}
Video: Application Instance
{% endembed %}

***

**Related flows:**

1. [Launchpad](https://launchpad.hotwax.io/home/)
2. [User management](https://docs.hotwax.co/documents/system-admins/administration/users/manage-user)


# Job Management

Discover how HotWax Commerce's Job Manager App streamlines order, product, and inventory operations with its workflow management features.

## Introduction

HotWax Commerce’s [Job Manager App](https://www.hotwax.co/apps/job-manager-app) enables you to view, schedule, and update job workflows running in the HotWax Commerce's Order Management System for operations related to orders, products, inventory and more.

## Topics

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Job details</strong></td><td>Manage pre-configured job automation to streamline operations within the Order Management System.</td><td></td><td><a href="/pages/YvEcUFtEPLHwR1rE1H2S">/pages/YvEcUFtEPLHwR1rE1H2S</a></td></tr><tr><td><strong>Initial load</strong></td><td>Schedule jobs for the initial deployment and instance setup, tasked with importing all products and orders into the OMS.</td><td></td><td><a href="/pages/UlTeCzYmHt9PVT9wzVw6">/pages/UlTeCzYmHt9PVT9wzVw6</a></td></tr><tr><td><strong>Job queueing</strong></td><td>View all scheduled, running and completed jobs, with configurations to change the scheduled job data from the Job Pipeline page.</td><td></td><td><a href="/pages/1W7wyRHjLAHdNvK6s8Wr">/pages/1W7wyRHjLAHdNvK6s8Wr</a></td></tr><tr><td><strong>Job categories</strong></td><td>Jobs and Webhooks are categorized based on operations, ensuring that related operations are grouped together for efficient configuration.</td><td></td><td><a href="/pages/sXRHG3djHHcRM4eyXPqE">/pages/sXRHG3djHHcRM4eyXPqE</a></td></tr><tr><td><strong>Bulk job scheduling</strong></td><td>Search and select multiple jobs to schedule and execute them collectively for multiple shop configs.</td><td></td><td><a href="/pages/uNpbGdcvEkoBKxy5dUgn">/pages/uNpbGdcvEkoBKxy5dUgn</a></td></tr></tbody></table>

To directly access the Job Manager application, click on the provided [link](https://job-manager.hotwax.io) or navigate to the [Launchpad](https://launchpad.hotwax.io/home) and locate it within the Workflow section.


# Job Details

Manage pre-configured job automation from Job Details page to streamline operations within the Order Management System.

## Introduction

Every automation task is organized within a dedicated Job Details page, providing a clear overview of job information and actions. This centralized approach ensures quick access to job configurations and facilitates job management.

***

## Job information

#### **Name**

Clearly identifies the job for easy recognition.

#### **Summary**

Provides a concise explanation of the job's purpose.

#### **History**

Access a comprehensive job history, including the date, runtime, and status of past runs. The history will display the last 10 records.

***

## Job actions

#### **Skip**

Temporarily postpone a job's execution for the upcoming runtime without affecting future scheduled runs.

#### Cancel

Permanently stop a job from running further.

#### **Run now**

Trigger a job to run immediately and resume its scheduled execution pattern afterward.

#### **Edit Run time**

Set the job's execution time, helping users manage when their scheduled automation.

#### **Edit Frequency**

Set how often the job runs.

#### Add Custom parameters

Make changes to the job's parameters, settings, or execution details as necessary, allowing users to set up workflows specific to their scenarios. Custom parameters have to be configured before a scheduled job and cannot be changed while a job is pending execution.

<figure><img src="/files/iFP0l1Rtp39lOE5YVFqO" alt="" width="375"><figcaption></figcaption></figure>

***

## How to schedule a job

{% hint style="info" %}
**Things to remember:**

* Custom parameters can be incorporated into jobs, with access controlled by specific permissions, ensuring a customized and secure configuration.
  {% endhint %}

1. Navigate to the required job category and find the job you want to schedule.
2. Click on the job to view Job Details.
3. Set the run time.
4. Set the frequency.
5. Add custom parameters if required.
6. Save the changes to see the schedule job on the Pipeline page.

{% embed url="<https://youtu.be/uLtQGUqfa88>" %}
Video: Schedule a job
{% endembed %}

## Debugging

#### **Copy details**

Quickly share the important job related information such as job's ID, name, description, and runtime for debugging.


# Job Categories

Jobs are categorized based on their operations, ensuring that related operations are grouped together for efficient configuration.

## Categories

<details>

<summary>Initial load</summary>

Displays the jobs for initial OMS setup to import all products and orders.​

**This page contains jobs such as:**

1. **Import Products in Bulk:** Import all products from Shopify. Make sure you run this before importing orders in bulk during initial setup.
2. **Import Orders in Bulk:** Before importing historical orders in bulk, make sure all products are set up or else order import will not run correctly.

</details>

<details>

<summary>Pre-order</summary>

Holds the Pre-orders and Backorders jobs.

**This page contains jobs such as:**

1. **Auto refresh presell catalog:** Automatically add and remove products from the pre-order and backorder catalogs based on inventory, purchase orders, and order queues.
2. **Sync variant details:** Sync pre-selling related information to Shopify as tags and meta fields.
3. **Add tags:** Add pre-order/backorder tags on orders with pre-selling items in them.
4. **Add promise date:** Add a note with the promise date given to the customer at the time of placing the order.
5. **Update promise date:** Add notes to the impacted order items on Shopify for changes promise dates.
6. **Promise date change:** Notify customers of any changed promise dates for their orders.
7. **Auto releasing:** Auto releasing pre-orders will find pre-orders with passed promise dates and release them for fulfillment.

</details>

<details>

<summary>Orders</summary>

Holds all order jobs.

**This page contains jobs such as:**

1. **New orders:** Import new orders from eCommerce.
2. **Approve orders:** Check all orders and approve orders that are created.
3. **Update orders:** Import order updates from eCommerce.
4. **Cancelled orders:** Check eCommerce for orders that have been canceled and cancel them in HotWax Commerce.
5. **Cancelled items:** Check eCommerce for order items that have been canceled and cancel them in HotWax Commerce without canceling the entire order.
6. **Returns:** Check eCommerce for orders that have been returned and create a return for them in HotWax Commerce. Returned orders are also restocked if inventory is damaged, make sure to log a Damaged variance.

</details>

<details>

<summary>Fulfillment</summary>

Holds all fulfillment jobs.

**This page contains jobs such as:**

1. **Shipping:** Automatically ship orders that are packed and have a tracking number if required.
2. **History:** Create or update order fulfillment history records from FTP.
3. **Auto cancellations:** Unfulfilled orders that pass their auto cancellation date will be canceled automatically in HotWax Commerce. They will also be canceled in Shopify if upload for canceled orders is enabled.

</details>

<details>

<summary>Inventory</summary>

Holds all inventory jobs.

**This page contains jobs such as:**

1. **Export thresholds:** Export a list of product thresholds based on tags and categories
2. **Inventory variance:** Import inventory variance and adjust inventory
3. **Import thresholds:** Import a list of product thresholds based on tags and categories
4. **Sync inventory from Shopify:** Sync Inventory From Shopify
5. **Upload recent inventory change:** Upload recent inventory changes to eCommerce.

</details>

<details>

<summary>Products</summary>

Holds all product jobs.

**This page contains jobs such as:**

1. **Sync:** Sync products and category structures from Shopify into HotWax Commerce and keep them up to date.
2. **Import**: `Import new products` job imports newly created products from Shopify.

</details>

<details>

<summary>Miscellaneous</summary>

Holds all uncategorised jobs

</details>

***


# Job Queueing

Manage all pending, running, and completed jobs from the Pipeline page. With intuitive controls and detailed job information, you can effectively monitor and manage job execution.

Pipeline page

Provides a holistic view of all jobs, including their status, scheduled time, and execution details.

**Characteristics**

**Chronological sequence for prioritized execution**

Jobs are displayed in chronological sequence, ensuring that jobs with the closest expiration time are prioritized for execution.

**Timeline Visualization for Clear Execution Scheduling**

A highlighted time frame clearly depicts the job's runtime and scheduled frequency, providing a visual representation of the job's execution timeline.

**On-the-fly Editing for Dynamic Job Management**

Users can seamlessly skip, cancel, edit, or reschedule any pending jobs before they start running. This flexibility allows users to adapt to changing requirements and optimize job execution based on real-time needs.

**Customized Job Configurations for Tailored Execution**

Scheduled job parameters can be modified directly from the Job Pipeline page, enabling users to tailor job execution to specific needs. This flexibility allows for optimization of job performance and resource utilization.

**Detailed Job History for Analysis and Troubleshooting**

Comprehensive historical job data is readily accessible for analysis and troubleshooting purposes. Users can identify patterns, optimize job performance, and resolve recurring issues by examining historical job execution details.

<figure><img src="/files/6oH0KxyYBoNYPPDXALDF" alt=""><figcaption></figcaption></figure>

### Segmentation

The Job Manager App shows all jobs (scheduled, running, or completed) on the Pipeline page, organized into three tabs: Pending, Running, and History.

#### Actions retailers can perform on a job card:

* **Change run time and frequency**: Use the dropdowns to update when and how often the job runs.
* **Edit custom parameters**: View, copy, and modify job-specific parameters with the `more` option on the job card.
* **Skip the job**: Temporarily skip the current run. The job will resume based on its schedule.
* **Disable the job**: Cancel the current and future runs. The job can only be manually re-enabled to run again.
* **View history**: Check the execution history and status (e.g., finished or failed).
* **Run Now**: Run the job immediately by creating a duplicate instance. This action is irreversible.
* **Copy job details**: Copy key job info like job ID, name, description, and runtime data.
* **Pin job**: Pin frequently used jobs for quick access at the bottom of the page.

#### 1. Pending Tab

This tab lists jobs in the **pending status**, meaning they are queued and waiting to begin execution. Retailers can take multiple actions from the job card, as listed above.

**Details visible in the Pending tab:**

* **Time**: Indicates when the job is scheduled to run, based on the timezone selected in the app.
* **Frequency**: Indicates how often the job runs (e.g., every 15 minutes).
* **Recurrence**: Displays the number of counts the job is retried once failed.
* **Job Enum ID**: An internal identifier used by HotWax to define the type or purpose of the job.

#### 2. Running Tab

This tab lists jobs in the **running status** i.e jobs those are currently in execution. It allows retailers to monitor the active job.

**Details visible in the Running tab:**

* **Start Time**: Indicates when the job started running.
* **Service Name**: Indicates which OMS service is executing the job.
* **Running Duration**: Indicates how long the job has been running.

#### Recover a job lock after an Order Management System restart

An Order Management System restart can interrupt a job and leave its run lock on the `Running` tab. When this happens, the job card shows the message `This job has crashed due to a restart, release it`.

Release the lock only when the job card shows this restart message. Do not release a job only because it has been running for a long time. Investigate long-running jobs before taking action.

1. Open the `Running` tab in **Job Manager**.
2. Find the job card with the restart message.
3. Select the release control on the job card and confirm the action.
4. Check the `History` tab and your job monitoring after the next scheduled run.

Releasing the restart-identified lock clears the stale lock so the job can run again according to its configuration. If the job fails again or does not run as expected, investigate the failure before releasing another lock.

#### 3. History Tab

This tab lists all jobs that have been **completed**, whether finished or failed. Retailers can add custom parameters, view job history, copy details, or pin the job card.

**Details visible in the History tab:**

* **Created By**: Shows the user who initially created the job.
* **Updated By**: Shows the user who last updated job parameters like schedule or frequency.
* **Time Zone**: Displays the time zone in which the job was executed.
* **Copy Job Info**: Retailers can copy fields like Job ID, Job Name, and runtime data for further use.

{% tabs %}
{% tab title="Pending" %}
Displays all the jobs queued for execution.

<figure><img src="/files/Y70KqrVCY1axjtsDnS53" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/J8es0HK3bkVJe7Rka0BT" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Running" %}
Displays all the jobs running in the system.

<figure><img src="/files/9JiKmKy2qmcS33abRF7f" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="History" %}
Displays all the historical jobs. Historical jobs can be filtered by their status.

<figure><img src="/files/wYIAgVz9nEVdpi4Hl0lO" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### **Search**

Easily locate specific jobs by name or category.

{% embed url="<https://youtu.be/HbBndcYS36Q>" %}

### Filters

Quickly find jobs by applying filters based on category and status.

<figure><img src="/files/Xyd1LRKqdNOPZIFQFl1O" alt=""><figcaption></figcaption></figure>

### History

#### View Import Logs

The Data Manager log provides history of files imported into the OMS, including the file import status, processing timestamps, and any error records. These logs support tracking, analysis, and troubleshooting of file imports.

When accessing the Data Manager Log from the **Job Manager App**, users can directly view the following details:

* Number of successfully processed files.
* Number of failed files.
* Files with error records.

#### Detailed Log View

Clicking `View Details` redirects retailers to a detailed logs page where they can:

* Access individual logs with specifics like start and finished date and time, user information, and unique log IDs.
* Download the original file and failed records for further analysis.
* Filter logs to display only those that failed execution or contain error records.
* View file execution mode such as `Async` or `Queued`

### Pin job

Keep frequently accessed jobs readily available for quick access. Pinned jobs will be visible in the footer.

{% embed url="<https://youtu.be/YSSfLXV9qP0>" %}

### **Recurrence**

Displays the number of counts the job is retried once failed.

<figure><img src="/files/9oTUXGiAGVGm2KKlu76C" alt="" width="375"><figcaption></figcaption></figure>


# Initial Load

Schedule jobs responsible for importing all products and orders into the system for the initial deployment and instance configuration from the Initial Load category.

## Initial load page

Displays the jobs for initial OMS setup to import all products and orders.​

**Characteristics**

**One time Execution**These jobs are executed only once during the initial setup and rarely during instance redeployments.

**Product and Order Importation**

Facilitate the importation of all products and orders from the eCommerce platform for the initial instance setup.

**Scheduling Functionality**

Empower users to schedule the import process, enabling them to select the desired execution time.

<figure><img src="/files/QmGI0FXWWLYsUXKabVa4" alt=""><figcaption></figcaption></figure>

***

## How to schedule jobs for initial load

{% hint style="info" %}
**Things to remember:**

1. Products should be imported before any order is imported into the system.

2. By default only open and unshipped orders will be imported.

3. The Last Shopify Order ID serves as a reference point for HotWax Commerce to determine the starting point for order downloads.
   {% endhint %}

4. Go to the Initial Load category.

5. Initiate the `Import Products in Bulk` job.

6. Choose the desired runtime from the dropdown menu.

7. Confirm the selected runtime.

8. Go to Miscellaneous Jobs page.

9. Initiate the `Process bulk imported files` job.

10. Once product importation is complete, proceed to the `Import Orders in Bulk` job.

11. Select the preferred runtime from the dropdown menu.

12. Verify the order and fulfillment status.

13. Input the Last Shopify ID from which order numbers should be imported into HotWax Commerce OMS.

14. Execute the import process.

15. Go to Miscellaneous Jobs page.

16. Initiate the `Process bulk imported files` job.

{% embed url="<https://youtu.be/r41dQJIVcpo>" %}
Video: Initial load
{% endembed %}


# Bulk Scheduling

Effortlessly schedule and manage bulk jobs with ease. Configure, select, and streamline workflows seamlessly.

## Bulk edit page

Displays configurations to schedule jobs in bulk.

### **Characteristics**

**Manage Jobs**

Easily search and select the jobs you want to execute or configure. You can also schedule jobs and set their run times.

**Schedule Jobs**

Conveniently configure and schedule all selected jobs simultaneously to streamline your workflow.

<figure><img src="/files/iWwnvEHhFwTvQtTHN4Dy" alt=""><figcaption></figcaption></figure>

### **Configurations**

**Product store**

If your OMS is connected to multiple eCommerce stores selling different collections of products, you may have multiple Product Stores set up in HotWax Commerce.

**eCom stores (Shopify Configs)**

If your OMS is connected to multiple eCommerce stores selling the same catalog operating as one Company, you may have multiple Shop Configs for the selected Product Store.

**Select jobs**

Search Jobs and use the Add function to select jobs to be scheduled.

**Scheduler**

Configure and schedule all selected jobs simultaneously.

{% hint style="info" %}
Scheduled run time and frequency, set on bulk scheduler, will be applied to all the selected jobs.
{% endhint %}

***

## How to schedule jobs in Bulk

1. Choose the Product store.
2. Select the relevant Shopify configurations.
3. Click `Select Jobs` function to proceed to locate and add the jobs you wish to schedule.
4. Adjust the scheduled run time and frequency according to your requirements.

{% embed url="<https://youtu.be/bjoSYOGJm1I>" %}
Video: Schedule Jobs in Bulk
{% endembed %}

***


# Troubleshooting


# Job Stuck

Learn how to troubleshoot job stuck issues in the HotWax Commerce Job Manager app for seamless job processing.

A scheduled job has been running for a longer duration than expected (more than 15 minutes).

## Step 1: Check the Job Queue Status

1. Go to [https://.hotwax.io/webtools/control/FindJob](/documents/retail-operations/workflow/workflow/job-queueing).
2. Navigate to the status field and click on "Pending."

## Step 2: Verify Pending Jobs

1. If there are no jobs in the pending state, it's an unusual situation. Contact HotWax support.
2. If there are many jobs in the pending state, it indicates a potential backlog in the job queue.
3. Wait for an hour and then check again if the jobs have run or not.

## Step 3: Check Job Status After Waiting

After waiting, recheck the running tab on the pipeline page. If the jobs have not run, proceed to the next step.

## Step 4: Contact HotWax Support

1. If there are still jobs in the pending state after waiting, contact HotWax support.
2. Provide details about the extended duration and the number of jobs in the pending state.

By following these steps, you can identify and address issues related to jobs running for an extended duration. If you need further assistance or have additional questions, reach out to the HotWax support team for prompt support.

<figure><img src="/files/JBWzYkmA71KUewh1VI2Q" alt="" width="375"><figcaption></figcaption></figure>


# Job Failed

Learn how to troubleshoot failed job issues in the HotWax Commerce Job Manager app.

A scheduled job might fail in HotWax Commerce due to various reasons, such as incorrect parameter settings, outdated information, or conflicts within the system.

## Job remains locked after an Order Management System restart

A job that was interrupted by an Order Management System restart can remain on the `Running` tab with a stale lock. If the job card says `This job has crashed due to a restart, release it`, follow the [restart lock recovery steps](/documents/retail-operations/workflow/workflow/job-queueing#recover-a-job-lock-after-an-order-management-system-restart).

Do not use this recovery process for a job that is only marked as long-running. Investigate the job before releasing that type of lock.

## Identify Failed Jobs Reason

Users can swiftly identify the reasons for a failed job from the `pipeline` page of the `Job Manager` app. This feature allows user to pinpoint the reasons behind failed jobs, facilitating easy troubleshooting of errors. Here's how you can find out the reason behind the failed jobs:

1. Navigate to the Pipeline page in the job manager.
2. Within the pipeline page, click on the History tab.
3. Apply a filter by clicking the checkbox against the Failed option to display only failed jobs.
4. Click on the Failed badge to view the reason for the failed job.

{% embed url="<https://youtu.be/teFPQTKV-Pc>" %}
Video: Identify Failed Jobs Reason
{% endembed %}

**Common Reasons for Job Failure:**

### Reason 1: Job Configuration Errors

Scheduled jobs can fail due to incorrect parameter settings. If users are facing any issues regarding job configuration, they can follow these steps to rectify the problem:

**Step 1: Verify Configuration Data**

1. Search for the job on the pending page in the Job Manager.
2. You will find the job card with all scheduled job instances.
3. Pick any instance and open its details.
4. In the details, find the `Custom Parameters` option and click on it to view all custom parameters.

**Step 2: Verify Custom Parameters**

1. Verify the custom parameters against the expected values for the service.
2. You can find the expected custom values in the setup manual for the process you are troubleshooting.
3. If the parameters are incorrect, proceed to the next step.

**Step 3: Disable the Job**

1. Find the job in the category pages and open its detail page.
2. Disable the job. The custom parameters of a job cannot be edited while it’s running.

**Step 4: Correct Incorrect Parameters**

1. Click on "Custom Parameters" and correct the parameters.
2. Schedule the job again.

**Step 5: Check Job Status**

After the scheduled time, check the job to see if it has successfully completed. If the job fails, contact the HotWax support team for further assistance.

By following these steps, you can address configuration data issues that may lead to a scheduled job failure. If the problem persists or if you have additional questions, reach out to the HotWax support team for prompt assistance.

### Reason 2: Errors due to Shopify Integration Issue

Shopify integration issues may arise if Shopify experiences downtime during the day, leading to job failures reliant on accessing its API calls. These failures can be attributed to internal errors within the Shopify platform.

If you encounter any issues with Shopify integration, you can manually run the job by clicking on the `Run Now` button or wait for the next scheduled job to resolve the problem.

### Reason 3: Errors due to Semaphore Issues

In job scheduling systems, a semaphore could be used to manage the allocation of resources (like CPU time, memory, or disk space) among competing processes or jobs. This ensures that resources are efficiently utilized and that no single job monopolizes Semaphore issues in job scheduling can lead to various consequences when a job fails. These include resource starvation, deadlocks, performance degradation, job abandonment, and system instability. These issues can result in failed or incomplete tasks, resource contention, and system-wide slowdowns, emphasizing the importance of proper monitoring and mitigation strategies. If you encounter any issues with semaphore, you can manually run the job by clicking on the `Run Now` button or wait for the next scheduled job.


# Duplicate Jobs

## Objective

This document provides a detailed guide to diagnose and resolve the exceptions caused by duplicated jobs in HotWax Commerce, which can lead to data duplication, data redundancy, and system performance issues. The goal is to ensure smooth job execution and accurate data management.

## Common Scenarios

1. Overlapping jobs causing system performance issues.
2. Data duplication or redundancy due to duplicated jobs.
3. Interrupted job flow affecting the order life cycle.

#### Scenario: Overlapping Jobs Causing System Performance Issues

For example, In the Job Manager app, we have two jobs: `Approve Order`, which means, approves the orders that are in in `created` status after checking the requisite criteria, and `Approve Sales Order`, which acts as the same as `Approve Order` but has a different attribute (field) values. Let’s suppose we have scheduled the `approve orders` job every 5 minutes and `approve sales orders` every 15 minutes This collectively means we have two jobs: one is ready to run 5 minutes after the previous run, whereas the other is ready to run from now every 15 minutes. These two jobs will overlap every 15 minutes and may result in system performance issues. Additionally, the collision of these jobs may interrupt the job flow.

## Step-by-Step Troubleshooting Process

#### Verify If Issue Exists

1. **Track the Exception:**
   * Identify where the exception occurs or which step of the order life cycle is affected.
2. **Analyze Job Pattern:**
   * Determine if a process is running more than once within its scheduled frequency, indicating a duplicated job.

#### Diagnose the Issue

1. **Access Job Manager:**
   * Open the Job Manager app in HotWax Commerce.
   * Navigate to the Job Manager > `Order` page (for the example provided). For example, If the duplicacy arises in another area like Brokering, navigate to the corresponding section, such as `Job Manager` > Brokering.
2. **Identify Duplicated Jobs:**
   * Traverse all jobs and identify those with overlapping schedules. For example, `Approve Order` is scheduled every 5 minutes, and `Approve Sales Order` is scheduled every 15 minutes.
   * Duplicated jobs can also be identified by disabling the job with the exception. If the job is disabled once and it is still visible as scheduled after refreshing the page, then the job was duplicated.

#### Resolve the Issue

1. **Compare Jobs:**
   * Compare both jobs to understand their functionality and attributes.
2. **Disable Duplicated Job:**
   * Terminate or remove the duplicated job causing the exception and the one that is outdated.
   * Click on the job to open its details.
   * Click the `Disable` button to deactivate the job.
3. **Verify Job Termination:**
   * Navigate to the `pipeline` page and search for the disabled job to ensure the problematic job is successfully disabled.

By following these detailed steps, you can effectively troubleshoot and ensure a smooth job execution process, minimize system performance issues, and maintain accurate data management.

<figure><img src="/files/iFP0l1Rtp39lOE5YVFqO" alt=""><figcaption></figcaption></figure>


# Job Scheduling

Learn how to troubleshoot issues with scheduling jobs in the HotWax Commerce Job Manager application for seamless job management.

If you are unable to schedule a job in the Job Manager application, and the job data is not appearing, it could be due to missing job draft data, missing job runtime data, or issues with the service in the OMS.

## Step 1: Verify Job Data in the OMS Backend

Access the instance web tools using this URL: [https://{instance.name}.hotwax.io/webtools/control/FindGeneric?entityName=JobSandbox](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/system-admin/administration/data-manager/troubleshooting/README.md).

## Step 2: Check Job Data

1. In the JobSandbox form, find the `Job Name` field.
2. Enter the job name you are attempting to schedule.
3. Move to the "Status Id" field and enter `SERVICE_DRAFT`.
4. Click the search button.

## Step 3: Verify Job Data

If the job data is not found, it means it's missing, and you need to add it. Refer to the [forum post](https://forum.hotwax.io/t/setting-up-custom-job-data-in-hotwax-commerce-job-manager/126) for guidance on how to create and input job data.

## Additional Steps for Checking Service and Job Runtime Data

In cases where the job draft data is available but scheduling issues persist, follow these steps:

## Step 4: Check Service Data

1. Locate the service name field in the job draft data.
2. Check if there is data in the service name field.
3. If not found, contact the HotWax Support team for assistance.

## Step 5: Check Job Runtime Data

1. Extract `runtime ID` from the job draft data.
2. Search for the `Runtime Data` entity and input the runtime ID in the "Runtime ID" field.
3. Click the search button.

### If Runtime Data is Missing

If no runtime data is found, it is missing. Add runtime data from Webtools: Import/Export page using XML data. Refer to the [forum post](https://forum.hotwax.io/t/setting-up-custom-job-data-in-hotwax-commerce-job-manager/126) for guidance on how to input runtime data.

### If Runtime Data is Incorrect

If runtime data is available, and the job is still not executing, the data is incorrect.

1. Edit the runtime record, scroll down to find `runtimeInfo`, and copy the text.
2. Remove rich text using tools like ChatGPT.
3. Replace the cleaned data in runtime info and update it.
4. Retry the job to check if the issue is resolved.

If the problem persists, contact support for further assistance.

By following these steps, you can ensure that the necessary job data is available, allowing you to schedule the job successfully in the Job Manager application.


# Job Scheduling Errors

## Objective

If you observe that a process is not functioning correctly in Hotwax Commerce, for example, if orders are not being synchronized, this issue often stems from either the job not being scheduled at all or being incorrectly scheduled. Ensuring proper job scheduling is crucial to maintaining the smooth operation of processes like order synchronization within Hotwax Commerce. This document aims to provide a structured approach for identifying and resolving synchronization issues between HotWax Commerce and external systems due to job scheduling errors.

## Common Scenarios

1. A job is not scheduled or is disabled, preventing expected data synchronization. For example, the operation team often forgets to schedule the `Process Bulk Imported Files` and expects the `Import Orders` Job will fetch all the orders from Shopify and start showing them in HotWax Commerce.
2. A job is not scheduled correctly, causing delays or affecting synchronization. For example, If you schedule a job with a frequency to run with a run-time value(date) of two days later when the job was supposed to run 15 minutes from now, then the job won’t start running in every 15 minutes until 2 days.

## Step-by-Step Troubleshooting Process

#### Verify If Issue Exists

1. **Identify the Exception:**
   * Check if a process is not working as expected by looking at the results. If you don't get your desired result within a specified time frame, it indicates an exception.
2. **Backtrack the Exception:**
   * Look into the results in HotWax Commerce OMS to identify the step or task that is not performed.
3. **Access Job Manager:**
   * Open Job Manager using your user credentials.
   * Navigate to the job causing the issue. For example, if the issue is related to order import(as we see in the above example), go to `Job Manager` > `Miscellaneous` > `Process bulk import files`.
4. **Analyze the Job:**
   * Check if the job is scheduled correctly.
   * Identify if the job is disabled or configured incorrectly.

Read here to [learn more](https://docs.hotwax.co/documents/v/retail-operations/workflow/job-workflows) about jobs in HotWax Commerce that can be scheduled as per the retailer’s preference.

#### Resolve the Issue

1. **Schedule or Configure the Job:**
   * If the job is `Disabled`, schedule it by adding the runtime value and the frequency in which the job should run
   * If the job is configured incorrectly, update it as per your preference. Read here to [learn more](https://docs.hotwax.co/documents/v/retail-operations/workflow/job-manager/job-details) about how to schedule a job in HotWax Commerce.
2. **Save the Changes:**
   * Make the necessary changes to the job.
   * Click on the `Save Changes` button to ensure they take effect.

### Additional Steps for Ensuring Proper Job Execution

1. **Verify Job Schedule:**
   * Check the job schedule on the `pipeline` page to ensure the job is scheduled and running at the desired frequency and time.
2. **Monitor Job Execution:**
   * After scheduling or reconfiguring the job, monitor its execution to ensure it runs as expected.

By following these detailed steps, you can effectively troubleshoot and resolve synchronization issues between HotWax Commerce and Shopify caused by jobs not being scheduled or incorrectly scheduled. This ensures smooth job execution, minimizes system performance issues, and maintains accurate data management.

{% embed url="<https://youtu.be/-ThjkFCQSWY>" %}


# Job Workflows

The section details how various jobs contribute to the overall system, from order allocation to inventory management, and offers resolutions into troubleshooting and performance.


# Parameters

The table below defines all the parameters used in the job configuration.

| S. No. | Parameter            | Description                                                                                                                                                                                                                             | Default Value       | Example                |
| ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | ---------------------- |
| 1      | includeAll           | <p>‘true’ - To process all records<br>‘false’ - To process only records after the last run time</p>                                                                                                                                     | true                | true                   |
| 2      | importpath           | Specifies the SFTP location and path for importing the file from.                                                                                                                                                                       | -                   | -                      |
| 3      | remoteFilename       | A specific file name is passed to process it.                                                                                                                                                                                           | -                   | xyz.csv                |
| 4      | groupBy              | Parameter to specify which field of the CSV file to use as a grouping parameter for multi-threading.                                                                                                                                    | None                | orderId                |
| 5      | additionalParameters | Additional parameters for job customization.                                                                                                                                                                                            | -                   | -                      |
| 6      | fileNameRegex        | Specifies a regular expression for filtering filenames.                                                                                                                                                                                 | -                   | *.*                    |
| 7      | scheduleNow          | <p><code>true</code> - Imports data into the MDM and processes immediately<br><code>false</code> - Imports data into the MDM for the ‘Process Bulk Import Files Job’ to process</p>                                                     | -                   | true                   |
| 8      | frequency            | The interval in minutes used to calculate the last sync time by subtracting it from the current time when no previous sync exists.                                                                                                      | -                   | 2 min                  |
| 9      | limit                | Records fetched from an API query can be paginated. The limit parameter specifies the maximum records fetched in a page.                                                                                                                | -                   | 50                     |
| 10     | orderId              | HotWax OrderId for the order that needs to be processed by the job                                                                                                                                                                      | All eligible orders | HC29435                |
| 11     | cancelledDate        | The date for which canceled orders are to be uploaded by the service.                                                                                                                                                                   | null                | 12/12/2024             |
| 12     | createdByJobId       | ID of the job that initiated this job.                                                                                                                                                                                                  | -                   | 1005759                |
| 13     | bufferTime           | Specifies the [buffer time](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/orders/order-download/buffertimes#buffertime)(in minutes) for scheduling the job.                                                        | -                   | 5 min                  |
| 14     | thruDateBuffer       | Specifies the [thruDateBuffer](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/orders/order-download/buffertimes#thrudatebuffer) time (in minutes) for scheduling jobs.                                              | -                   | 5 min                  |
| 15     | financialStatus      | Parameter to filter records using a specific financial status                                                                                                                                                                           | all                 | settled                |
| 16     | filterQuery          | Specifies a filter query for more targeted metafield downloads.                                                                                                                                                                         | -                   | -                      |
| 17     | intervalDays         | Specifies the number of days between each notification sent to customers.                                                                                                                                                               | -                   | 10                     |
| 18     | maxOccurrences       | Specifies the maximum number of times a notification can be sent to customers                                                                                                                                                           | 0                   | 3                      |
| 19     | emailType            | Specific type of email template to use for a notification                                                                                                                                                                               | -                   | DM\_ERROR\_FILE        |
| 20     | facilityid           | Parameter to filter the records by the passed HotWax facility IDs.                                                                                                                                                                      | None                | \[‘132’, ‘27’]         |
| 21     | productId            | Parameter to filter the records by the passed HotWax product IDs.                                                                                                                                                                       | all                 | 93853                  |
| 22     | idType               | Specifies type of ID being passed in the idValue parameter.                                                                                                                                                                             | SKU                 | UPCA                   |
| 23     | iDValue              | Specifies the value of the idType passed in the idValue Parameters                                                                                                                                                                      | -                   | 654253097              |
| 24     | startDateTime        | This parameter is used to define the starting point in time from which records should be processed.                                                                                                                                     | -                   | 12-12-2025 10:10:23    |
| 25     | returnId             | HotWax return id for the return that needs to be processed by the job                                                                                                                                                                   | -                   | 10941                  |
| 26     | fileProcessingDelay  | Specifies the interval for processing a file.                                                                                                                                                                                           | -                   | 5 min                  |
| 27     | Since Id             | Processes records created after the record with the specified ID.                                                                                                                                                                       | Since beginning     | 2024-12-16 13:24:03    |
| 28     | configId             | The configuration ID of the MDM where the job uploads the file it imports.                                                                                                                                                              | -                   | CARRIER\_CODE          |
| 29     | topicEnumID          | This parameter is passed in a service to trigger a webhook associated with that specific topic.                                                                                                                                         | -                   | WEBHOOK\_SHIP\_SHIPPED |
| 30     | propertyResource     | Specifies the property resource for configuration.                                                                                                                                                                                      | -                   | FTP\_CONFIG            |
| 31     | nameSpace            | <p>Specifies the namespace category in Shopify.<br><strong>Note:</strong><br><em>In Shopify metafields, the namespace is a way to categorize or group related metafields together to avoid naming conflicts and organize data.</em></p> | -                   | HotwaxOrderDetails     |
| 32     | Shipment ID          | The ID associated with the shipment.                                                                                                                                                                                                    | -                   | 12602                  |


# Pre-Orders

Learn about the Pre-Order job in HotWax Commerce.

## Jobs for Pre-Order Catalog Management in HotWax Commerce

#### Frequency for Pre-Order Jobs

All Pre-order jobs have a defined frequency of 15 minutes by default which can be modified and adjusted at any point of time as per the requirement. The user may have various options to modify the job, such as altering the run time, adjusting the frequency, and adding custom parameters if required, or can also cancel the job to reduce system load. Users can follow the given steps to execute any changes in the existing jobs to update the runtime and the scheduled frequency of the job whenever required.

**Runtime:** Time at which a job is scheduled particularly. **Scheduled Frequency:** A time duration for repeated occurrence.

1. Go to the Pipeline and search for the Job, by job name or related keyword.
2. Click on the Job Card to refer to the job detailed view.
3. Select the runtime function dropdown to change the run time from the dropdown or make custom changes.
4. Or change the scheduled frequency by choosing it from the dropdown or make a custom requirement.
5. Ensure to save the changes.
6. Users can add custom parameters to the jobs and schedule them accordingly.
7. Users can also “Skip” or “Cancel” the jobs from the same job detailed card.

***

### Auto Refresh Pre-Sell Catalog

Job Name: `Auto Refresh Pre-Sell Catalog` Job Enum Id: `JOB_PREORDER_CAT_SYNC` Service Name: `uploadPreorderCatalogToShopify` Flow: Catalog Update to Shopify

A product is eligible for pre-order only if:

* **PO ATP is greater than 0**: This means there is incoming stock confirmed through a Purchase Order.
* **Current ATP is less than or equal to 0**: This means that the current ATP of the product should be 0 only then the product will be eligible for Pre-order.

Retailers organize products into different catalogs for better segregation, including a dedicated catalog for pre-order items. The `Auto Refresh Pre-Sell Catalog` job adds or removes products from the pre-order catalog based on their eligibility criteria for pre-orders.

**Note**: This job is specifically for OMS and is used to maintain the pre-order catalog. However, there are separate jobs that sync the same products as pre-orders on Shopify

<figure><img src="/files/i03gk3bdRqPZLrTRXdOR" alt="" width="375"><figcaption></figcaption></figure>

***

## Pre-Sell on Shopify

**All jobs in this category synchronize changes and updates from HotWax to Shopify.**

## Products

Note: HotWax and Shopify both maintain product details. The jobs listed in the product section below are used to sync product level changes and updates from HotWax to Shopify.

### Sync Variant Details

When a product becomes eligible for pre-order in OMS, it is responsible for syncing the updated product details to Shopify. Only after this synchronization can Shopify accept pre-orders or backorders for that product. The `Sync Variant Details` job is used to sync meta-fields (like promise date, etc) of pre-order/backorder-eligible products from HotWax to Shopify.

Other jobs, such as `Add Promise Date` and `Update Sales Order Item Promise Date`, must be scheduled in HotWax to ensure accurate synchronization of updated promise dates with Shopify. These jobs are discussed in detail later in this document.

***

### Add Pre-Order Tags

This job is used to apply tags on products that are eligible for pre-order in HotWax product catalog, to products in Shopify. For example, if Product A is eligible for pre-order in HotWax, the `Add Pre-Order Tags` job is used to apply the pre-order tag in Shopify, ensuring integrity between both systems.

**Internally**, when this job is toggled on, HotWax makes a POST API call to Shopify and enables the **`Continue selling when out of stock`** toggle in Shopify. This ultimately allows the product to be available for pre-order in Shopify.

***

### Remove Pre Order Tags

This job is used to remove pre-order tags on products in Shopify. For example, if Product A is now in-stock and considered as a normal product. the `Remove Pre-Order Tags` job is used to remove the pre-order tag in Shopify, ensuring integrity between both systems.

**Internally**,`Remove Pre-Order Tags` functions in a similar way to the Add Pre-Order Tags job only difference being that in the POST API call this job disables the **`Continue selling when out of stock`** toggle in Shopify.

***

### Add Back Order tags

This job is used to sync products that are eligible for back-order in HotWax with Shopify. For example, if Product A is eligible for back-order in HotWax, the `Add Back Order Tags` job is used to apply the back order tag in Shopify, ensuring integrity between both systems.

Internally, when this job is toggled on, HotWax makes a POST API call to Shopify and enables the **`Continue selling when out of stock`** toggle in Shopify. This ultimately allows the product to be available for back order in Shopify.

***

### Remove Back Order tags

This job is used to remove back order tags on products in Shopify. For example, if Product A is now in-stock and considered as a normal product. the `Remove Back Order Tags` job is used to remove the pre-order tag in Shopify, ensuring integrity between both systems.

Internally,`Remove Back Order Tags` functions in a similar way to the Add Back Order Tags job only difference being that in the POST API call this job disables the **`Continue selling when out of stock`** toggle in Shopify.

***

## Orders

**Note: The jobs listed in the order section below are used to sync Order level changes and updates from HotWax to Shopify.**

### Add Pre-Order Tags

This job applies pre-order tags to orders. For example, if a customer places an order with three items—two pre-order products and one regular product—HotWax identifies orders that contain pre-order items and tags the entire order in Shopify.

Internally, when this job is toggled onn HotWax makes a post API call to Shopify and add tags on all orders which contains pre-order items.

***

### Add Back Order Tags

This job applies back order tags to orders. For example, if a customer places an order with three items—two back order products and one regular product—HotWax identifies orders that contain back order items and tags the entire order in Shopify.

Internally, when this job is toggled onn HotWax makes a post API call to Shopify and add tags on all order in Shopify which containing back order items.

***

### Add Promise Date

When an order is placed containing a pre-order or back order items, HotWax identifies it and add the promise date in Shopify as a note on Order Level. This job is used to apply promise date to orders in Shopify.

***

### Update Promise Date

When the estimated promise date on a purchase order changes, it's important to inform customers about updates to their orders linked to that inventory. The "Update Promise Date" job updates the promise date of order note in Shopify.

Internally, through this job HotWax sends an post API call on Shopify and change the promise date on the of order note on Shopify. However, there are different jobs in HotWax which triggers notification to the customers.

***

## Auto Releasing

### Run Daily

Job Name: `Release pre-orders and back orders` Job Enum ID: `JOB_RLS_ORD_DTE` Service Name: `checkPreOrderItemForRelease`

After the promise date is passed, this job is used to push orders for brokering. HotWax maintains dedicated parking for pre-orders and backorders, ensuring they are managed separately. All such orders remain in this parking until they are ready for fulfillment. The "Run Daily" job runs once a day, checking the pre-order and backorder parking for orders with passed promise date and releasing them for brokering.

<figure><img src="/files/DPE7ai6ZF1QRXTK0aGb3" alt="" width="375"><figcaption></figcaption></figure>

***

## More Jobs

### Update Sales Order Item Promise Date

Job Name: `Update Sales Order Item Promise Date` Job Enum ID: `JOB_UL_PRMS_DTE` Service Name: `pushPromiseDateChangedNotes`

When a customer places a pre-order, they are given a promised delivery date based on the estimated arrival of the associated purchase order. If this estimated arrival date changes, the promised delivery date for existing orders must be updated accordingly. This adjustment is handled by the `Update Sales Order Item Promise Date` job.

**Note**: This job updates the promise date specifically in OMS. However, other jobs are responsible for syncing the updated promise date to external systems.

**Custom Parameters**

* No required parameter for this job.
* productStoreIds is the optional parameters for this job.


# Orders

Learn about the Orders jobs in HotWax Commerce.

### Import Orders

Job Name: `Import Orders`\
Job enum ID: `JOB_IMP_ORD`\
Service Name: `createOrdersFromShopify`\
Flow: Order Import from Shopify to OMS

**The `Import Orders` job is used for downloading orders from Shopify into HotWax. It retrieves all orders created in Shopify from the time the job last ran up to the current time.**

When the `Import Order` job runs for the first time, it defaults to downloading orders created in the last 15 minutes. This time frame can be adjusted using the "frequency" parameter.

**How are orders downloaded?**\
HotWax sends an API request to Shopify, which returns the order details in JSON format. The JSON file is then uploaded to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

To prevent errors with large files, HotWax limits the download to 100 orders per API call, though Shopify allows downloading up to 250 orders.

Note: To find the Uploaded file, login to HotWax Commerce OMS, then navigate to Hamburger Menu>EXIM Page > Shopify Jobs tab > `Shopify Order MDM`.

**Custom parameters:**

* Recommended frequency for the Import Order job is **15 minutes.**
* The required parameters for this job is **“frequency”.**
* It has some more optional parameters.

To know more about Order Download, refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-are-orders-downloaded-from-shopify-to-hotwax-commerce/order-download).

***

### Approve Orders

Job name: `Approve orders`\
Job Enum ID: `JOB_APR_ORD`\
Service Name: `approvePendingShopifyOrders`\
Flow : Order Approval

**The `Approve Orders` job changes the status of orders from 'Created' to 'Approved,' making them eligible for brokering.** Orders must be verified and approved before fulfillment to prevent invalid or fraudulent orders. The Approved Orders job runs every 30 minutes and approves all the orders placed between the last job ran up and the current timestamp.

**How are orders approved?**

This job checks the payment preference for each order in the 'Created' state. If the payment preference is either 'Authorised' or 'Settled,' then the job changes the order status from ‘Created' to 'Approved’.

**Custom Parameter:**

* The recommended frequency for this job is every **30 minutes**.
* The 'orderId' is an optional parameter. When provided, it will approve the specified order. By default, the job approves all orders in the created state.

HotWax Commerce offers an additional job, `Approved Sales Orders`, designed for scenarios where retailers require custom order approval.

To know more about Order Approval refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-are-orders-downloaded-from-shopify-to-hotwax-commerce/order-approval-for-fulfillment#order-approval-for-fulfillment-in-hotwax-commerce).

***

### Update Orders

Job Name: `Import Order Updates from Shopify`\
Job Enum Id: `JOB_IMP_ORD_UPD`\
Service Name: `updateOrdersFromShopify`\
Flow: Order Update From Shopify to OMS

**The Update Orders job is used for importing updates of orders from Shopify to HotWax, such as adding new items, modifying quantities, or cancelling items within an order.**

When CSRs or customers modify orders in Shopify, the `Import Order Updates from Shopify` job ensures those changes are accurately synced to HotWax. It identifies and updates any orders that have been modified after being downloaded in HotWax. The job retrieves updates for all orders placed between the last job run and the current time.

**How are orders updated in HotWax ?**

HotWax sends an API request to Shopify, which returns the order update details in JSON format. The JSON file is then uploaded to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

**Note**: To find the Uploaded file, login to HotWax Commerce OMS, then navigate to Hamburger Menu>EXIM Page > Shopify Jobs tab > `Shopify Order MDM`.

**Custom parameters**

* The required parameters for this job is “frequency”.
* Recommended frequency for this job is every hour (i.e 60 min)
* It has bufferTime as the optional parameter.

To know more about order updates, refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-are-orders-downloaded-from-shopify-to-hotwax-commerce/order-updates#synchronizing-order-updates).

***

### Cancelled Orders

Job Name: `Import Cancelled Orders`\
Job Enum ID: `JOB_IMP_ORD_CNCL`\
Service Name: `updateShopifyOrderStatus`\
Flow: Shopify to HotWax

**The 'Import Cancelled Orders Job\` is used for syncing cancelled orders from Shopify to HotWax. This job retrieves all Shopify orders cancelled between the last job run and the current time.**

When an order is cancelled on Shopify, it can be imported into HotWax Commerce via the `Update Orders Job`, Shopify webhooks, or the `Import Cancelled Orders Job`, which ensures accurate processing when other methods are unreliable.

To sync cancelled orders, it is recommended to schedule both the Update Order and Cancelled Order jobs. The Cancelled Order job handles missed orders but will be deprecated in the near future.

This job specifically checks the `cancelled_at` field for orders on Shopify and compares it with the job’s last run time. If the `cancelled_at` time is later than the job's last run time, the job downloads all canceled orders in batches of 100 to avoid exceeding Shopify's API limit.

**How is cancellation synced?**

HotWax sends an API request to Shopify, which returns the cancelled order details in JSON format. The JSON file is then uploaded to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

**Custom parameters**

* The required parameters for this job is “frequency”.
* Recommended frequency for this job is every 30 min.
* It has bufferTime as the optional parameter.

To know more about Order Cancellation refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-manage-order-cancellations/complete-order-cancellation).

***

### Cancelled Order Items

Job Name: `Import Cancelled Items`\
Job Enum ID: `JOB_IMP_ITM_CNCL`\
Service Name: `cancelOrderItemsFromShopify`\
Flow : Shopify to HotWax

**The `Import Cancelled Items` job is used to accurately synchronize item cancellations from Shopify to HotWax**. When a customer cancels an item from an order, only that specific item is canceled, not the entire order.

While the Update Orders Job can import canceled items, the Import Canceled Items job acts as a backup to guarantee that cancellations are properly synced. This job retrieves updates for orders placed between the last run and the current time, reflecting any cancellations made in Shopify.

**How Items are Cancelled in HotWax ?**

HotWax sends an API request to retrieve order information, and in response, Shopify provides a JSON format file containing details of orders. The job checks the 'updated at' field in the order JSON and compares the timestamp with the job’s last run time. All orders updated after the last run are imported into HotWax Commerce in batches of 100 to prevent exceeding Shopify’s API limits.

After import, HotWax filters out the orders with canceled items and marks those items as canceled. The order status in HotWax Commerce is not changed; only the status of the canceled items is updated.

**Custom Parameters**

* The required parameters for this job is **“frequency”**.
* The recommended frequency for this job is **Hourly** (i.e 60 min).
* bufferTime and createByJobId are optional parameters for this job.

To know more about item cancellations, refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-manage-order-cancellations/partial-order-cancellation).

***

### Import Order Returns

Job Name: `Import Order Returns`\
Enum Id: `JOB_IMP_RTN`\
Service Name: `createReturnsFromShopify`\
Flow: Shopify to HotWax

**The Import Order Returns job imports returns from Shopify to HotWax after they are completed and marked as "Refund" or "Returned" in Shopify, maintaining the order history.**

Another method for importing returns is subscribing to Shopify webhooks via the Job Manager App, but this approach is not recommended due to the unreliability of Shopify webhooks.

Although Shopify allows fetching 250 returns per API call, to avoid issues with large files, HotWax will download up to 100 returns per API call.

**How are returns imported?**

HotWax sends an API request to Shopify, which returns the order return details in JSON format. The JSON file is then uploaded to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

Note: To find the Uploaded file, login to HotWax Commerce OMS, then navigate to Hamburger Menu>EXIM Page > Shopify Jobs tab > `Shopify Order Return`.

**Custom Parameters**

* The required parameters for this job is **“frequency”**.
* The recommended frequency for this job is **6 hours**.
* financialStatus ,bufferTime ,limit , createdByJobId are the optional parameters.

To know more about return import refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-manage-order-returns/import-returns-from-shopify)

***

### Webhooks

{% hint style="info" %}
Webhooks can be subscribed to from the category pages within the Job Manager app for specific categories.
{% endhint %}

Automated messages sent from eCommerce (Shopify) to OMS whenever an event occurs. They contain data about the event and are received in OMS, allowing real time communication between eCommerce and OMS.

**Subscribe to Shopify eCommerce Webhooks from OMS for:**

<details>

<summary>Orders</summary>

**Webhooks available for:**

1. New Orders
2. Canceled orders
3. Payment status
4. Returns

</details>

\*\*\*

### Upload

### Upload Cancelled Orders

Job Name: `Cancelled Orders`\
Job Enum ID: `JOB_UL_CNCLD_ORD`\
Service Name: `bulkCancelOrdersOnShopify`\
Flow: Upload Cancelled HotWax to Shopify

In usual scenarios, orders are cancelled in Shopify and then synced to HotWax. However, in special cases, like when a CSR cancels an order on behalf of a customer from the view order page in HotWax, this process works differently. In such cases, **this job is used to upload cancelled orders from HotWax back to Shopify.** It retrieves all orders cancelled between the job's last run time and the current time.

**How Cancelled Orders are Uploaded ?**\
HotWax sends a post API request to Shopify with data of all orders that are cancelled in OMS in JSON format, then the orders are marked as cancelled in Shopify.

**Custom Parameters**

* This job has no required parameters.
* orderId and cancelledDate are two optional parameters.

***

### More Jobs

### Party Identification

Job Name: `Part Identification`\
Job Enum ID: `JOB_PARTY_IDENT`\
Service Name: `ftpImportFile`\
Flow: Order Approval Flow

**The party identification job is used for importing new customers created in NetSuite to HotWax.**

HotWax ensures that the `Netsuite Customer ID` must be mapped to the `HotWax Customer ID` for every order for smooth integration. Basically, when an order is placed for which the customer ID is not created in NetSuite, NetSuite will generate a “NetSuite Customer ID." Netsuite also generates a file in CSV format with newly created customer data and uploads that CSV in the SFTP location; from there, HotWax will import that CSV through the `Party Identification` job and map customers against all the NetSuite Customer IDs.

How are customer IDs mapped? The HotWax Commerce integration platform first queries the HotWax database to fetch orders that lack a “NetSuite Customer ID.” It then uploads a CSV file of these orders to an SFTP location.

Next, a SuiteScript in NetSuite runs at scheduled intervals, retrieves the CSV file, and generates a JSON file containing the “NetSuite Customer ID” for all the orders in the CSV and uploads it to an SFTP location. The JSON file is then uploaded to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file to process in HotWax Commerce.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes
* It also has some optional parameters.
* This job has configId and propertyResource as the required parameters.

To know more about this, refer to this [document](https://docs.hotwax.co/documents/learn-netsuite/synchronization-flows/ordersync/syncorderids).

***

### Complete Order Item from Shopify

Job Name: `Complete Order Item from Shopify`\
Job Enum ID: `IMP_COMPL_ORD_ITM`\
Service name: `completeOrderItemsFromShopify`\
Flow: Shopify to HotWax

**This job imports completed order items from Shopify for cases where retailers do not use HotWax Commerce for managing Available to Promise (ATP) inventory. In this case, ATP is managed on Shopify. In this case, order fulfillment information is not available with HotWax, and so it relies on Shopify to get the status of an order item.** It fetches orders completed between the last run time and the current timestamp.

**How completed order items are imported ?**\
HotWax sends an API request to Shopify, which returns the order fulfillment item details in JSON format. The JSON file is then uploaded to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

**Custom Parameters**

* The recommended frequency for this job is **15 minutes**.
* This job has no required parameters.
* It has some optional parameters

***

### Approve Sales Orders

Job Name: `Approve Sales Orders`\
Job Enum ID: `JOB_APR_SALES_ORD`\
Service Name: `Import Approve Sales Order`\
Flow: Order Approval

**This job changes the order's status from 'Created' to 'Approved' based on certain conditions. It is used in custom order approval processes.**

For example, if the retailers want to ensure that payment must be captured before the order is approved, this job will ensure that only those orders are approved for which payment is captured by applying this condition on the Order Approval Flow.

Some jobs, like `party identification` and `order identification`are those required jobs that need to be run before this job ensures custom conditions are matched.

**How are orders approved?**

This job queries the HotWax Commerce database to fetch orders in the created state and filters out the orders that pass the checks defined by the retailer. The filtered orders’ are then changed to the ‘Approved’ status.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

***

### Create Exchange Order

Job Name: `Create Exchange Order`\
Job Enum ID: `JOB_CRT_SALES_ORD`\
Service Name: `ftpImportFile`\
Flow: Importing Exchanges from HotWax to Shopify

**This job is used for importing exchanges in HotWax from Shopify.** Basically, when an exchange is created in Shopify, it has to be synced with HotWax to maintain system integrity. This job imports all the exchanges from Shopify created between the last job run and the current timestamp.

**How are exchanges imported?**

Shopify provides a feed of all the returns and exchanges in JSON format, which is then fetched and transformed by the HotWax Commerce integration platform. Further HotWax Commerce integration platform uploads transformed JSON to an SFTP location. From that SFTP location, the `Create Exchange Order` job brings the JSON and uploads it to the internal file system in HotWax.

Basically, when an exchange is created on an order in Shopify. This job takes those orders and creates the same exchanges for the corresponding orders in HotWax to maintain the system's integrity.

**Custom parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

To know more about exchange, refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-manage-order-returns/shopify-pos-exchanges).

***

### Create Return Order

Job name: `Create Return Order`\
Job Enum ID: `JOB_CRT_RETURN`\
Service name: `ftpImportFile`\
Flow: Return Creation from Shopify to HotWax

**This job is used for importing returns from Shopify to HotWax.** This imports all returns that are created in Shopify between the last job run and the current timestamp.

Shopify uploads a feed in JSON format of both returns and exchanges to an SFTP location; from there, the HotWax Commerce integration platform transforms this feed, and then returns are created in HotWax by the `Create Return Order` job.

**How are returns synced from Shopify to HotWax?**

Shopify uploads a JSON file with returns and exchanges to an SFTP location. The HotWax Commerce integration platform processes this file and uploads a transformed feed of returns to the SFTP location. The `Create Return Order` job then imports this JSON into the `IMP_CRT_RTN_ORD` MDM in HotWax from the SFTP location. Finally, the `Process Bulk Import Files` job processes the data, creating the returns in HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

To know more about returns, refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-manage-order-returns/shopify-pos-exchanges).

***

### Import Last Day Orders from Shopify

Job Name: `Import Last Day Orders from Shopify`\
Job Enum ID: `JOB_IMP_MISS_ORD`\
Service Name: `importLastDayMissingOrders`\
Flow: Missed Orders from Shopify to HotWax

**This job is used for importing all the last-day orders from Shopify to HotWax.** Although HotWax has an `Import Orders` job to import orders from Shopify on a scheduled frequency, this job serves as a backup and makes sure that if any order is missed by the import orders job, it will also be imported into HotWax.

**How are last-day orders imported?**

HotWax gives an API call to Shopify for importing all the last day's orders from Shopify. In response to this request, Shopify provides an order data feed containing data of all the last day's orders in JSON format. `Import Last Orders from Shopify` job imports this JSON file and uploads it to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

Note: To find the Uploaded file, login to HotWax Commerce OMS, then navigate to Hamburger Menu>EXIM Page > Shopify Jobs tab > `Shopify Order MDM`.

**Custom Parameters**

* This job has no required parameters.
* It has some optional parameters.

To know more about Order Download refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-are-orders-downloaded-from-shopify-to-hotwax-commerce/order-download).

***

### Order Item Attribute

Job Name: `Order Item Attribute`\
Job Enum ID: `JOB_ORDER_ITM_ATTR`\
Service Name: `ftpImportFile`\
Flow: Import Item Attribute from NetSuite to HotWax

**This job is used for importing order item attributes from NetSuite to HotWax. Order item attributes are basically used to provide some additional details on the order of every item in an order.**

NetSuite provides order line item details in a JSON format file. This JSON file is uploaded by NetSuite to an SFTP location; from there, HotWax imports these attributes.

**How are attributes imported?**\
`Order Item Attribute` job fetches the JSON file from the specified SFTP location at defined intervals and imports this JSON file and uploads it to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads a JSON file and creates order records in HotWax Commerce.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

***

### Order Item Rejected

Job Name: `Import Order Item Rejected`\
Job Enum ID: `JOB_ORDER_ITM_RJCT`\
Service Name: `ftpImportFile`\
Flow: Import Rejected Order Item from NetSuite to HotWax

**This job is used for importing rejected items in orders from NetSuite to HotWax from the last job run until the current timestamp.**

When NetSuite is used as a Warehouse Management System (WMS), it rejects an order in case that order cannot be fulfilled from the warehouse. These orders need to be rebroken in search of another location to get fulfilled. NetSuite marks all such order items as rejected and uploads a JSON feed containing data of all the rejected items to an SFTP location.

**How are rejected items synced from NetSuite to HotWax?**

NetSuite uploads a CSV-format feed of all the rejected items to an SFTP location. From there, the `Import Order Item Rejected` job fetches this CSV file and uploads it to the internal file system of HotWax Commerce for further processing. The `Process Bulk Import Files` job then reads the CSV file and creates order records in the HotWax database.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

***

### Import Transfer Order

Job Name: `Import transfer Orders`\
Job Enum ID: `JOB_ORDER_ITM_TO`\
Service Name: `ftpImportFile`\
Flow: Import Transfer Order from NetSuite to HotWax

**This job imports transfer orders from ERP systems (e.g., NetSuite) into HotWax.** Transfer and purchase orders are created in ERP systems, and HotWax, as an order management system, imports them to maintain accurate inventory records.

**How are transfer orders synced?**

For every transfer order created in an ERP system (like NetSuite), there is a script that runs on a scheduled frequency and uploads all the transfer orders created in ERP to an SFTP location. From there, the `Import Transfer Order` job runs and imports the feed of transfer orders from the SFTP location and uploads it onto the HotWax Commerce internal file system. From there, the `Process Bulk Import` job runs, and hence transfer orders are synced from NetSuite to HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

To know more about importing transfer orders refer to this [document](https://docs.hotwax.co/documents/learn-netsuite/integration-flows/transfer-order/warehousetostore).

***

### Order Identification

Job Name: `Order Identification`\
Job Enum ID: `JOB_ORDER_IDENT`\
Service Name: `ftpFileImport`\
Flow: Order Approval (NetSuite to HotWax Order Sync)

**This job is used for importing NetSuite order IDs for orders that exist in HotWax.** The NetSuite order ID is required for every order to maintain the system's integrity and sometimes in custom order approval flow.

This job runs at a defined frequency and fetches all the records created between the last job run and the current timestamp.

**How are NetSuite orders ID mapped in HotWax?**

The HotWax Commerce integration platform queries the HotWax database and fetches all the records for which the NetSuite order ID is Null but the NetSuite customer ID exists. And creates a CSV for all such records and uploads it to an SFTP location. Further, a suite script from NetSuite fetches all these orders and provides NetSuite order IDs for all these orders and uploads a JSON feed on the SFTP location. Then the HotWax Commerce Order Identification job imports this JSON from SFTP to IMP\_ORDER\_IDENTMDM. Next, the Process Bulk Import File job maps all the NetSuite order IDs to the corresponding order IDs in HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

To know more about order ID sync, refer to this [document](https://docs.hotwax.co/documents/learn-netsuite/synchronization-flows/ordersync/syncorderids).

***

### Import Order Metafield

Job Name: `Import Shopify Order Metafield`\
Job Enum ID: `IMP_ORD_META_FIELD`\
Service Name: `importShopifyOrderMetafield`\
Flow: Order information Import Shopify to HotWax

Order metafields are basically some additional information of an order. **The `Import Order Metafield` job is used for importing order metafields from Shopify to HotWax.** Basically, when an order is imported into HotWax, if it has some metafields, HotWax imports those metafields separately through this job

**Custom Parameters**

* nameSpace is the required parameter for this job.
* It has some optional parameters.

***

### Approve Transfer Order

Job Name: `Approve Transfer Order`\
Job Enum ID: `JOB_APR_TO`\
Service Name: `BulkApproveTransferOrders`\
Flow: Transfer Order Approval Flow

**This job is used for auto-approving transfer orders in HotWax.** Basically, the `Imports Transfer Order` job checks the status of imported transfer orders from NetSuite to HotWax. The `Approve Transfer Order` job works on an essential step to approve transfer orders in HotWax.

**Custom parameters:**

* This job has no required parameters.
* It has bufferTime and orderId as the optional parameters.

***

### Import Order Attribute

Job Name: `Import order attribute`\
Job EnumID: `JOB_ORDER_ITM_ATTR`\
Service Name: `ftpImportFile`\
Flow: Importing Order Information from Shopify to HotWax

**This job is used for importing order attributes into HotWax.** Order attributes are basically some additional information on an order that is essential to be attached with the order.

For example, if an order is to be gift wrapped, this information is essential for the person who will pack the order. Such information will be imported as an order attribute.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

***

### Order Item Fulfillment

Job Name: `Order Item Fulfillment`\
Job Enum ID: `JOB_ODR_ITM_FLFLMNT`\
Service Name: `ftpImportFile`\
Flow: Import Fulfillment update from HotWax to NetSuite.

**This job is used for syncing the fulfillment status of orders from NetSuite to HotWax.** Basically, when an order is allocated to a warehouse and in cases when NetSuite is used as a warehouse management system (WMS), fulfillment updates on such an order will be taken from NetSuite.

HotWax requires the fulfillment update for various reasons, such as to update status on eCommerce and ultimately to maintain the integrity between HotWax and NetSuite.

**How is fulfillment status synced?**

NetSuite runs a SuiteScript to provide details of items that are fulfilled in the warehouse. And uploads a JSON file of such details on the SFTP location `Order Item Fulfillment`; the job imports the JSON to HotWax and uploads it on `IMP_ODR_ITM_FLFLMNT` MDM. Finally, the `Process Bulk Import Files` job processes the file, and hence, fulfillments are synced from Netsuite to HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

***

### Import Customer

**Job Name**: Import Customers from Shopify\
**Job Enum ID**: JOB\_IMP\_CSTMR

**Description**\
The Import Customer job imports customer data from Shopify into HotWax Commerce. This job ensures that customer information, including contact details and order history, is accurately synced between the two platforms, supporting smooth order processing and customer management in HotWax Commerce.

**Custom Parameters**

| Parameter    | Type     | Description                                                              | Default Value |
| ------------ | -------- | ------------------------------------------------------------------------ | ------------- |
| frequency    | Required | Defines the default duration of the last syncing of the shipment status. | 15            |
| `bufferTime` | Optional | Specifies the buffer time (in minutes) for scheduling job.               | Not Specified |
| limit        | Optional | Additional parameters for job customization.                             | Not Specified |

***


# Fulfillment

Learn about the Fulfillment jobs in HotWax Commerce.

### Ship Packed Orders

Job Name : `Ship Packed Orders`\
Job Enum ID: `JOB_SHIP_ORD_PKD`\
Service Name : `shipPackedOrders`\
Flow : Order Fulfillment in HotWax

**The `Ship Packed Orders` job in HotWax's Fulfillment App updates order status from packed to shipped.** Store associates mark an order as shipped by tapping the "Shipped" button. However, in some cases, failing to tap the button results in incomplete fulfillment.

This job is generally scheduled to run at midnight and marks all the orders in the **packed** status as updated to **shipped**. Retailers generally assume that once the carrier has arrived, it is highly likely that all packed orders have been shipped.

**No custom parameters for this job**

***

## History

### Order Fulfillment History

Job Name: `Order Fulfillment History`\
Job Enum ID: `JOB_ORD_FLMNT_HST`\
Service Name: `ftpImportFile`\
Flow: Order Fulfillment in HotWax

HotWax and Shopify both maintain order fulfillment statuses. A Moqui job in HotWax ensures system integrity by synchronizing order fulfillment history between the two platforms. This job ensures that any orders marked as fulfilled in Shopify are also updated as fulfilled in HotWax, maintaining consistency across systems.

**How does this job work?**\
HotWax sends an API request to Shopify to provide all the orders fulfilled from the last job run until the current timestamp. In response to this request, Shopify provides a JSON file that is imported by the ‘Order Fulfillment History’ job in HotWax and uploaded to `MDM_UPD_ORD_FMNT_HST` in MDM. From there, the `Process Bulk Import Files` job runs, and the fulfilled status is marked.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It has some optional parameters.

***

## Notification

### Open BOPIS Order Notification

Job Name: `Open BOPIS Order Notification`\
Job Enum ID: `JOB_OPN_BOPIS_ORD_NT`\
Service Name: `sendOpenBopisOrderNotification`\
Flow: Order Fulfillment from HotWax

**This job is used for notifying store associates of the open BOPIS orders allocated to their store.** Basically, when a BOPIS order is allocated to a store, it is generally expected that the BOPIS order must be catered to as soon as possible. So it is important to get notified for BOPIS orders when they are allocated to stores.

**How are stores notified?**

Basically, this job checks all the BOPIS orders placed between the timeframe of the last job run and the current timestamp. And sends push notifications on the BOPIS App for the respective stores.

**It is important to note that if this job is not scheduled, stores will not be notified about BOPIS orders allocated to them.**

**Custom Parameters**

* There are no custom parameters for this job.
* The recommended frequency for this job in 15 minutes.

***

### Ready to Pick BOPIS order Notification

Job Name: `Ready to Pick BOPIS Order Notification`\
Job Enum ID: `JOB_RP_BOPIS_ORD_NT`\
Service Name: `sendOrderNotification`\
Flow: Order Fulfillment from HotWax

**This job is used for notifying customers when their BOPIS order is ready for pickup.** Basically, when a store associate fulfills a BOPIS order and clicks the 'READY FOR PICKUP\` button, this job internally triggers marketing platforms (like Klaviyo) to automate the notification process.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has `topicEnum Id` as required Parameter.

***

### Open Shipping Order Notification

Job Name: `Open Shipping Order Notification`\
Job Enum ID: `JOB_OPEN_SHIP_ORD_NT`\
Service Name: `sendOrderNotification`\
Flow: `Order Fulfillment from HotWax`

**This job is used for notifying store associates of the open shipping orders allocated to their store.** Basically, when an order is allocated to a store, it is generally expected that the order must be catered as soon as possible. So it is important to get notified for orders when they are allocated to stores.

**How Are Stores Notified?** The `Open Shipping Order Notification` job fetches all those orders created in HotWax ‘topicEnum Id’ within the timeframe of the last job run to the current timestamp. It then sends a push notification to the relevant stores about these orders.

**Custom Parameters**

The recommended frequency for this job is 15 minutes. This job has `topicEnum Id` as required Parameter

***

### Auto cancellations

Job name: `Auto cancellations`\
Service: `autoCancelOrderItems`\
Flow: `Auto Cancellation From HotWax`

**HotWax Commerce facilitates retailers to set an auto cancellation date on orders that are unfulfilled.** The `Check Daily` toggle on the job card enables the job, and also the operations team can set the days in which the order will get auto-cancelled.

**How does cancellation flow work?** Basically, this job checks for the orders that are in the unfillable parking, and the cancellation date is reached. This job simply changed their status to `cancelled` in HotWax.

**Note: The `cancelled` orders will only be synced from HotWax to Shopify only if the `Upload Canceled Order` job is enabled.**

***

### More Jobs

### Send Packed Order Mail

Job Name: `Bulk Send Packed Order Mail`\
Job Enum id: `JOB_PACKED_MAIL_ODR`\
Service Name: `bulkSendPackedOrderMail`\
Flow: Order Fulfillment Flow

**This job is used to send email notifications to customers when their orders are in packed status.** When an order item is marked as packed in the Fulfillment App, HotWax Commerce communicates the shipment status to the retailer’s marketing platform, notifying customers that their order has been shipped from the facility.

**Customer Parameters**

* This has no required parameters.
* `frequency` and `emailType` is the required parameters

***

### Packed BOPIS Order Reminder Notification

Job Name: `Send Packed BOPIS Order Reminder Notification`\
Job Enum id: `JOB_PCK_ORD_RMDR`\
Service Name: `pickReminderAtRegularInterval`\
Flow: Packed Order Notification from HotWax to Klaviyo

**This job is for notifying customers to pick up their BOPIS order after a specified duration from when their order is packed.** There can be a scenario when, after a ready-to-pickup email has been sent, the customer has not responded. In such cases, this job is used to trigger marketing platforms (like Klaviyo) to send a reminder email to customers.

**How is the reminder notification sent?**

When the order is marked “Ready for pick up,” it’s moved to packed status and shown in the Packed tab of the BOPIS app. When an order is in packed status for more than 7 days, a reminder pick-up email is sent to the customer. The email trigger request should be sent to Klaviyo every 7th, 14th, and 21st day.

**Custom Parameters**

* This job has no required parameters.
* The recommended frequency for this job is 15 minutes.
* It has `intervalDays`, `maxOccourrences`, `emailType` as the optional parameters.

***

### Notification using communication events

**Job Name:** `Notification using communication events`

**Job Enum ID:** `JOB_SND_ML_COMM`

**Description** The `Notification Using Communication Events` job enables retailers to communicate to internal users by the help of the communication event feature on the view order page. This job ensures that internal teams are promptly alerted to important events for that particular order, facilitating efficient communication within the organization. **No custom parameters for this job**

***

### Packed BOPIS Order Reminder Notification

**Job Name:** `Packed BOPIS Order Reminder Notification`

**Description**

The `Packed BOPIS Order Reminder Notification` job sends a reminder notification to customers informing them that their Buy Online, Pick Up In Store (BOPIS) order has been packed and is ready for pickup. This reminder is sent every 7 days, up to 3 times, ensuring the customer is informed and reminded to collect their order.

**Custom Parameters**

| Parameter        | Type     | Description                                               | Default Value          |
| ---------------- | -------- | --------------------------------------------------------- | ---------------------- |
| `intervalDays`   | Optional | Number of days between each reminder                      | 7                      |
| `maxOccurrences` | Optional | Maximum number of occurrences of the reminder             | 3                      |
| `emailType`      | Optional | Specific type of email template to use for a notification | `PRDS_READY_TO_PICKUP` |

***


# Inventory

Discover how Inventory job works in HotWax Commerce.

## Adjustments

### Hard Sync

Job Name: `Upload Inventory`\
Job Enum ID: `JOB_UL_INV`\
Service Name: `bulkResetShopifyInventoryLevel`\
Flow: Inventory Sync from HotWax to Shopify.

**The `Hard Sync` job is used to synchronize the inventory of all the products from HotWax to Shopify once a day.** This job fetches the inventory counts of all products in Shopify and compares them with the inventory counts of all products in HotWax Commerce. Then it prepares the delta file in GraphQL format for all the products where there is a difference in inventory counts in HotWax compared to Shopify. This delta file is then sent to Shopify, and Shopify updates the inventory counts by recording deltas.

Note: The `ShopifyFacilityGroupId` parameter allows retailers to push inventory of specific facilities included in that group.

**Custom Parameters**

* This job has no required parameters.
* It has `facilityGroupId`,`shopifyFacilityGroupId`,`includeAll`, `useVaildATP` as optional parameters.

To know more about inventory synchronization between HotWax and Shopify, refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-ensure-accurate-inventory-is-synchronized-to-shopify/inventory-synchronization#hard-sync).

<figure><img src="/files/ticLSuI4PZqvDZu5Utnc" alt="" width="375"><figcaption></figcaption></figure>

## Webhooks

{% hint style="info" %}
Webhooks can be subscribed to from the category pages within the Job Manager app for specific categories.
{% endhint %}

Automated messages sent from eCommerce (Shopify) to OMS whenever an event occurs. They contain data about the event and are received in OMS, allowing real time communication between eCommerce and OMS.

**Subscribe to Shopify eCommerce Webhooks from OMS for:**

<details>

<summary>Inventory</summary>

**Webhooks available for:**

**Inventory level update**\
This webhook is used to receive inventory level updates from Shopify to HotWax, especially when a retailer is not using HotWax Commerce as master of inventory availability (ATP inventory) and managing fulfillment out of HotWax.. In such cases, HotWax relies on other systems like Shopify for inventory updates. However, since Shopify webhooks may not always be reliable, it is recommended to schedule jobs.

</details>

## More Jobs

### Import Inventory

Job name: `Read Reset Inventory File From SFTP`\
Job Enum id: `JOB_IMP_INV`\
Service Name: `ftpImportFile`\
Flow: Inventory Reset in HotWax from NetSuite

**The `Import Inventory` Reset job is used for importing inventory reset files from SFTP locations uploaded by ERP systems (like NetSuite).**

**How is the reset file received?**

NetSuite runs a scheduled script and generates the CSV format file of updated inventory on each location, then uploads this file to the SFTP location. Then, the `Import Inventory Reset` job is used to import this file from the SFTP location to HotWax and upload this on `RESET_INVENTORY` MDM. Further `Process Bulk Imported Files` jobs run to process data into HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

***

### Import Item Receipt

Job name: `Import Item Receipt`\
Job Enum ID: `JOB_ITM_RECEIPT`\
Service Name: `ftpImportFile`

**The `Import Item Receipt` job is used for importing updates from NetSuite to HotWax on all the items that are completed in NetSuite**.

When an order is brokered to a warehouse, HotWax relies on Warehouse Management Systems (like NetSuite) to get the fulfillment update. In cases when NetSuite is also used as a WMS, it uploads a JSON format file containing details of all the items that are fulfilled from the warehouse in an SFTP location.

**How is the item receipt synced?**

After NetSuite uploads a JSON file to the SFTP location, the `Import Item Receipt` job imports the JSON into HotWax and uploads it to the `IMP_ITM_RECEIPT` MDM. Further `Process Bulk Import Files` job runs, which finally marks the item as completed in HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

***

### Import Product Facility

Job Name: `Import Product Facility`\
Job Enum ID: `JOB_IMP_PROD_FAC`\
Service Name: `ftpImportCSVFile`\
Flow: Applying ATP rules in HotWax.

HotWax Commerce [ATP App](https://docs.hotwax.co/documents/retail-operations/inventory/available-to-promise) allows retailers to configure rules for inventory computation based on product tags and facility types or groups, reducing manual work. Based on these rules, the available-to-promise (ATP) of a product is calculated, which is then synchronized to Shopify or other sales channels.

A job in the ATP app generates a CSV file based on rules configured for calculating ATP and puts it in the SFTP location. \*\*The `Import Product Facility` job is used to download this CSV from the SFTP location and upload it on the file system of HotWax Commerce. \*\* Further, the `Process Bulk Import Files` job runs and processes all the files in HotWax. And finally, all the rules configured from the ATP app by the retailer are created.

**It is important to note that this job is responsible for applying ATP rules configured by retailers on ATP computation.**

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

***

### Bulk recent kit product inventory setup

Job Name: `Bulk recent kit product inventory setup`\
Job Enum ID: `BLK_RCNT_KIT_INV`\
Service Name: `bulkKitProductInventorySetup`\
Flow: Kit Product Inventory Computation

The `Bulk Recent Kit Product Inventory Setup` job calculates the inventory of the kit products in HotWax by considering the lowest common denominator among its components at a given location.

**Note**: Retailers who don't use Shopify's Bundle App for kit inventory calculation rely on this job in HotWax to compute the inventory.

**Custom Parameters**

* This job has no required parameters.
* includeAll is the optional parameter of this job.

To know more about kit inventory calculation, refer to this [document](https://docs.hotwax.co/documents/learn-netsuite/integration-flows/kitproducts).

***

### Import Inventory Transfer

Job Name : `Import Inventory Transfer`\
Job Enum Id : `JOB_INV_TRANS`\
Service Name: `ftpImportFile`\
Flow: Importing Inventory Update from NetSuite to HotWax

Retailers with one warehouse for both B2C and B2B create two virtual locations in NetSuite: one for online orders (B2C) and one for wholesale (B2B). This helps manage inventory better. If one runs low on stock, they transfer inventory between them as needed.

In ERP systems (like NetSuite), retailers generally create inventory transfers, and these inventory transfers need to be synced from NetSuite to HotWax to maintain better inventory synchronization. `Import Inventory Transfer` job is used for importing the inventory transfers created in NetSuite to HotWax, and further inventory is adjusted in HotWax accordingly.

**How are inventory transfers are synced ?**

A scheduled script in NetSuite generates a CSV file of inventory transfers and uploads it to an SFTP location. The `Import Inventory Transfer` job in HotWax then fetches the file and uploads it to HotWax’s internal system. Finally, the `Process Bulk Imported Files` job runs to create records in HotWax.

To know more, refer to the inventory transfer [document](https://docs.hotwax.co/documents/learn-netsuite/integration-flows/inventory).

***

### Import Inbound Shipment

Job name: `Import Inbound Shipment`\
Job Enum ID : `JOB_IMP_TO_SHPMNT`\
Service Name: ftpImportFile\
Flow: Inventory Synchronization

This job is used to create inbound shipment in HotWax so that store associates can see an upcoming inbound shipment in their [Receiving App](https://docs.hotwax.co/documents/store-operations/inventory/receiving/receiving). In case of a warehouse to store TO or store to store TO is created in NetSuite, HotWax imports it as an inbound shipment for the receiving store through this job.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

***

### Schedule Restock

Job Name: Schedule Restock\
Job Enum ID: `JOB_SCHEDULED_RSTK`\
Service Name: `receiveAndUpdateInventoryToShopify`\
Flow: Schedule restock

Retailers often schedule new product launches and require inventory to be available for sale at specific future dates and times. For example, if a retailer plans to launch a product at 10 AM a month from now, the inventory must sync precisely at that moment.

The HotWax Commerce Import App simplifies this process by allowing retailers to schedule restocks via a CSV upload. Once uploaded, the Import App transfers the CSV to an SFTP location, and the `Schedule Restock` job imports it into HotWax database.

**Custom Parameters**

* ShipmentId is the required for this job.

***

### Sync Invnetory from Shopify

Job Name: `Sync Inventory from Shopify`\
Job Enum Id : `JOB_SYNC_INV_FRM_SHPY`\
Service Name: `bulkInventorySyncFromShopify`\
Flow: Inventory Synchronization from Shopify

In cases where HotWax is not used as the source of truth for inventory availability—meaning retailers do not use HotWax for fulfillment and do not have an ERP system for inventory management—HotWax relies on Shopify for inventory updates. To ensure accurate inventory data, this job runs once a day to reset inventory updates for all products.

**How Does This Job Work?** HotWax sends an API request to Shopify to fetch the latest inventory data for all products. In response, Shopify provides a JSON file, which is then uploaded to HotWax’s internal file system. After that, the `Process Bulk Imported Files` job processes the JSON file, updates the inventory, and syncs the changes in HotWax.

This job is an alternative to Shopify Webhooks, but since Shopify Webhooks are reliable, it is recommended to schedule this job in HotWax.

**Custom Parameters**

* This job does not have any required parameters
* It has some optional parameters.

***

### Upload Recent Inventory Changes

Job Name: `Upload Recent Inventroy Changes`\
Job Enum Id: `UL_RCNT_INV`\
Service Name: `bulkRecentShopifyInventroyLevel`\
Flow: Inventory Synchronization

The `Upload Recent Inventory Changes` job is used to update Shopify with the latest inventory changes for products. It functions similarly to `Hard Sync`, but instead of syncing updated inventory for all products, it only uploads changes for products whose inventory has fluctuated.

**Custom Parameters**

* This job does not have any required parameters.
* It has some optional parameters.

To know more about uploading recent inventory changes refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-does-hotwax-commerce-ensure-accurate-inventory-is-synchronized-to-shopify/inventory-synchronization#upload-recent-inventory-change).

***


# Products

Learn about the Products job in HotWax Commerce.

## Sync

### Import New Product

Job Name: `Import new products`\
Job Enum ID: `JOB_IMP_PROD_NEW`\
Service Name: `CreateProductsFromShopify`\
Flow: Importing new products from Shopify to HotWax.

**`Import new product` job is used for importing new products from Shopify to HotWax.** For maintaining the system integrity, it is important to sync new products from Shopify.

If a new product created in Shopify and its not synced in HotWax Commerce (may be because job scheduled to run after 10 mins) and if an order is created for this new product in Shopify (before the job in run) and that order is now downloaded in HotWax, then a a placeholder for this new product will be created in HotWax. Once the job runs, the actual product will be imported and replace the placeholder.

**How does HotWax import products?**\
HotWax makes an API call on Shopify to retrieve all the newly created products in Shopify between the time frame of the last job run and the current timestamp. In response to this request, Shopify provides a JSON file containing details of such products. Further, the `Import New Products` job imports this JSON into HotWax OMS and uploads it to the `IMP_SHOPIFY_PROD` MDM in HotWax. Finally, the `Process Bulk Import Files` job runs and processes the JSON file to create products in HotWax OMS.

It is important to note that the `Import New Product` job must not be scheduled while creating new products on Shopify, as it can import incomplete data and cause data corruption. So the recommendation is to pause this job and reschedule it only after all products are fully created.

**Custom Parameters**

* `frequency` is the required parameter for this job.
* It has some optional parameters.

To know more about product import refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-are-products-downloaded-from-shopify-to-hotwax-commerce/product-download).

***

### Import Product Updates

Job name: `Import Product Updates`\
Job Enum ID: `JOB_IMP_PROD_UPD`\
Service name: `updateProductsFromShopify`\
Flow: Import product updates from Shopify to HotWax

When a retailer updates a product in Shopify, it is important for HotWax Commerce to sync these updates. **The `Import Product Updates` job is used for importing updates on products from Shopify to HotWax.**

**How are product updates synced?**\
HotWax makes an API call on Shopify to retrieve all the products that are updated between the last job run time and the current timestamp by checking the `updated_at` field in Shopify. In response to this request, Shopify provides a JSON file that is imported into HotWax by the `Import Product Update` job. Further, the `Process Bulk Imported Files` job runs and processes the JSON to sync product updates in Shopify.

**Custom Parameters**

* `frequency` is the required parameter for this job.
* It has some optional parameters.

To know more about importing product updates refer to this [document](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/how-are-products-downloaded-from-shopify-to-hotwax-commerce/updating-product-details).

***

## Webhooks

{% hint style="info" %}
Webhooks can be subscribed to from the category pages within the Job Manager app for specific categories.
{% endhint %}

Automated messages sent from eCommerce (Shopify) to OMS whenever an event occurs. They contain data about the event and are received in OMS, allowing real time communication between eCommerce and OMS.

**Subscribe to Shopify eCommerce Webhooks from OMS for:**

<details>

<summary>Products</summary>

**Webhooks available for:**

1. New products
2. Delete products

</details>

## More Jobs

### Product HS Code Identification

Job Name:`Product HS Code Identification`\
Job Enum ID: `JOB_HS_IDENT`\
Service Name: `ftpImportFile`\
Flow: Product Setup from NetSuite

**The product HS code identification job imports Harmonized System (HS) codes from NetSuite to HotWax Commerce.** The HS code is a standardized numerical system used to classify and identify products that are traded internationally.

An ERP system (like NetSuite) provides a CSV format file containing HS codes for all the products. Which is then imported by this job into HotWax OMS. This job is used in special scenarios when the retailer is shipping products internationally.

**How are HS codes synced with HotWax?**\
Through a scheduled SuiteScript, NetSuite uploads a CSV file of HS codes for all the products to an SFTP location. From there, the `Product HS code Identification' job imports that CSV into HotWax and uploads it on` IMP\_HS\_IDENT`MDM. Further, the`Process Bulk Imported Files\` job processes the CSV to apply HS codes to products.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* It also has some optional parameters.
* This job has configId and propertyResource as the required parameters.

***

### Import Kit Component

Job Name: `Import Kit Component`\
Job Enum ID: `JOB_KIT_COMP`\
Service Name: `ftpImportFile`\
Flow: Importing Kit Product Information from ERP to OMS

When a retailer chooses not to use Shopify’s Bundles App for Kit products. Generally in such cases, ERP systems (like NetSuite) are used to manage kit products. So, HotWax needs to import kit components from NetSuite.

**`Import Kit Component` job is used for importing kit products from NetSuite to HotWax.**

**How are kit components synced?**\
When NetSuite manages the kit products, it uploads a CSV format file of kit product details to an SFTP location. From there, the `Import Kit Component` job imports the JSON in HotWax and uploads it on `IMP_KIT_COMP` MDM. Further, the `Process Bulk Imported Files` job processes the JSON to sync kit products in HotWax.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

To know more about kit products, refer to this [document](https://docs.hotwax.co/documents/learn-netsuite/integration-flows/kitproducts).

***

### Import Promo Codes

Job Name: `Import Promo Codes`\
Job Enum ID: `JOB_IMP_PRMO_CODE`\
Service Name: `createUpdateProductPromo`

**This job is used to import promo codes from NetSuite to HotWax.**

Promo codes are those codes applied by customers while shopping to get some discounts. If an order has a discount code applied to it, during order sync to NetSuite, HotWax OMS checks if the applied code is available in NetSuite. If the code is available, then the exact code is used, and the value of the discount is shared as the "Rate.".

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

To know more about promo code refer to this [document](https://docs.hotwax.co/documents/learn-netsuite/netsuite-deployment/prerequisites/promocodes).

***

### Product Identification

Job Name: `Product Identification`\
Job Enum ID: `JOB_PROD_IDENT`\
Service Name: `createUpdateProductErpId`\
Flow: Importing Product Details from ERP to OMS

**This job is used to import product IDs from ERP systems like NetSuite into HotWax OMS.** By fetching product IDs from NetSuite, it ensures proper integration and accurate product identification within HotWax OMS.

**How is the NetSuite product ID mapped?**\
A scheduled script in NetSuite retrieves the “NetSuite Product ID” for all the products in a JSON format file and uploads it to an SFTP location. From their `Product Identification` job, imports that JSON in HotWax and uploads it on `IMP_PROD_IDENT` MDM. Further, the `Process Bulk Imported Files` job runs and processes the file to map the NetSuite product ID in HotWax OMS.

**Custom Parameters**

* The recommended frequency for this job is 15 minutes.
* This job has configId and propertyResource as the required parameters.
* It also has some optional parameters.

***

### Activate Product on Shopify

Job Name: `Activate Product on Shopify` Job Enum ID: `JOB_ACT_PROD_SHPFY` Service Name: `activateProductOnShopifyLocation` Flow: Order Fulfillment Flow

Products in HotWax are mapped to their physical facilities, and the same applies to Shopify. When a product is mapped to a facility in HotWax OMS but not in Shopify. The `Activates Product on Shopify` job identifies these products by querying the HotWax database. It then activates them on Shopify, ensuring a one-to-one mapping between products and facilities in both systems.

**Custom Parameters**

* This job has no custom parameters.

***

### Associate Product with sub catalog

Job Name: `Associate Product with sub catalog`\
Job Enum ID: `JOB_ACT_PROD_SHPFY`\
Service name: `activateProductsOnShopifyLocation`\
Flow: `HotWax to Shopify`

Retailers usually maintain a master catalog containing all their products. When selling some specific products in a particular country, they create a sub-catalog derived from the master catalog.

**The `Associate Product with Sub Catalog` job maps specific products to their respective sub-catalogs, verifying accurate product linkage within the catalog.**

**How are products mapped?**\
ERP systems (like NetSuite) generally maintain the mapping of the product and catalog. A suite script from NetSuite generates a JSON format file containing details about product mapping with the catalog and uploads it to an SFTP location. Then the `Associate Product with sub catalog` job is used to import the JSON in HotWax and upload it on `IMP_SHPFY_SHOP_PROD` MDM. Further, the `Process Bulk Import Files` job processes the file in HotWax OMS.

**Custom Parameters**

* Frequency is the required parameter for this job.
* It has some optional parameters.

***


# Miscellaneous

Learn about the miscellaneous jobs in HotWax Commerce.

### Process Bulk Imported Files

Job Name: `Process bulk imported files`\
Job Enum id: `JOB_PRC_PND_DML`\
Service Name: `processPendingDataManagerJob`\
Flow: Processing Files in HotWax

As all the other jobs bring a file to HotWax and upload it into HotWax internal file system, there is a need for a job, which processes these uploaded files to create or update records in HotWax. The `Process Bulk Imported Files` job processes files which are in pending status in HotWax Commerce internal file system.

**Custom Parameters**

* This job has no required parameters.
* Recommended frequency for this job is every 5 mins.
* It has some optional parameters.

***

### Process upload to eCommerce

**Job Name:** `Process uploads to eCommerce`**Job Enum ID:** `JOB_UL_PRCS`

This job is used in scenarios where multiple uploads to Shopify are queued, and it's crucial to ensure that these uploads are processed one at a time. This could be part of a larger system where inventory, product data, or other information needs to be synced with Shopify in an orderly and managed way, preventing conflicts and ensuring data integrity.

***

### Import Historical Shopify Customer

**Job Name:** `Import Historical Shopify Customer`**Job Enum ID:** `JOB_SHOP_CUST`

**Description**

The `Import Historical Shopify Customer` job downloads historical customer data from Shopify and imports it into HotWax Commerce. This is crucial for integration with NetSuite, as NetSuite allows order creation only for customers that already exist in the system. By importing historical Shopify customers, this job ensures that all necessary customer records are available in HotWax Commerce, enabling seamless order transmission from HC to NetSuite alongside the customer data.

**Custom Parameters**

| **Parameter**          | **Type** | **Description**                                                                                                                                                                                                                      | **Default Value**   |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `configId`             | Required | Identifies the configuration for Order Item Attribute records.                                                                                                                                                                       | `IMP_HIS_SHOP_CUST` |
| `propertyResource`     | Required | Specifies the property resource for configuration.                                                                                                                                                                                   | `FTP_CONFIG`        |
| `remoteFilename`       | Optional | Specifies the remote filename for processing.                                                                                                                                                                                        | `Not specified`     |
| `groupBy`              | Optional | Specifies a grouping parameter for the job.                                                                                                                                                                                          | `Not specified`     |
| `additionalParameters` | Optional | Additional parameters for job customization.                                                                                                                                                                                         | `Not specified`     |
| `fileNameRegex`        | Optional | Specifies a regular expression for filtering filenames.                                                                                                                                                                              | `Not specified`     |
| `importpath`           | Optional | Specifies the SFTP location and path for importing the file into the system.                                                                                                                                                         | `Not specified`     |
| `scheduleNow`          | Optional | When importing files into the OMS, forces the system to pick the file out of sequence for immediate processing. Enabled by default when importing files from FTP, but can be disabled during high-volume syncs for system stability. | `Not specified`     |
| `createdByJobID`       | Optional | ID of the job that initiated this job.                                                                                                                                                                                               | `Not specified`     |

***

### Bulk Send Brokered Order Mail

Job Name: Bulk Send Completed Order Mail\
Job Enum ID: JOB\_COMPLET\_MAIL\_ODR\
Service Name: `bulkSendCompletedOrderMail`\
Flow: HotWax to Klaviyo

The `Send Broker Order Mail` job facilitates the bulk sending of email notifications for brokered orders. This job ensures that customers receive timely updates on the status of their brokered orders, enhancing communication and order tracking.

**Internally**, This job fetches all those orders, and corresponding email addresses on orders for which inventory is allocated, form HotWax database and triggers mails to customer through marketing platform (like Klaviyo).

***

### Bulk Send Completed Order Mail

Job Name: `Send Broker Order Mail`\
Job Enum ID: `JOB_BROKER_MAIL_ODR`\
Service Name: `bulkSendOrderBrokeredMail`\
Flow: HotWax to Klaviyo

The `Send Completed Order Mail` job enables the bulk sending of email notifications for completed orders, ensuring customers are promptly informed when their orders are fulfilled and ready for receipt.

**Internally**, this job fetches orders for which order status is marked as completed between the last job run and current timestamp, from HotWax Database, and also fetches the associated customer email ID’s on those orders. And then triggers email to customers through marketing platforms (like klaviyo)

***

### Packaged Multi-Stream Import

**Job Name:** `Packaged multi-stream Import`**Job Enum ID:** `JOB_IMP_GN_JSON_LIST`

**Description**\
This job is useful in scenarios where multiple pieces of JSON data need to be imported and processed by different services. For instance, in a data integration or ETL (Extract, Transform, Load) system, this function can be used to import and process batches of data from JSON files or API responses. It ensures that each data item is processed through the correct service and handles any errors encountered during the process.

**Custom Parameters**

| **Parameter**          | **Type** | **Description**                                                                                                                                                                                                                      | **Default Value**    |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
| `configId`             | Required | Identifies the configuration for import JSON list data.                                                                                                                                                                              | `IMP_JSON_LIST_DATA` |
| `propertyResource`     | Required | Specifies the property resource for configuration.                                                                                                                                                                                   | `FTP_CONFIG`         |
| `remoteFilename`       | Optional | Specifies the remote filename for processing.                                                                                                                                                                                        | `Not Specified`      |
| `groupBy`              | Optional | Specifies a grouping parameter for the job.                                                                                                                                                                                          | `Not Specified`      |
| `additionalParameters` | Optional | Additional parameters for job customization.                                                                                                                                                                                         | `Not Specified`      |
| `fileNameRegex`        | Optional | Specifies a regular expression for filtering filenames.                                                                                                                                                                              | `Not Specified`      |
| `importPath`           | Optional | SFTP file location from where the file will be imported.                                                                                                                                                                             | `Not Specified`      |
| `scheduleNow`          | Optional | When importing files into the OMS, forces the system to pick the file out of sequence for immediate processing. Enabled by default when importing files from FTP, but can be disabled during high-volume syncs for system stability. | `Not Specified`      |
| `createdByJobId`       | Optional | ID of the job that initiated this job.                                                                                                                                                                                               | `Not Specified`      |

***

### Multi-Stream Import

**Job Name:** `Multi-Stream Import`**Job Enum ID:** `JOB_IMP_JSON_DATA`

This job is used when there is a need to process a single JSON data object by invoking a specific service. For example, it can be used in scenarios where data needs to be imported from a JSON payload and processed by a particular service in an application. This function ensures that the data is correctly validated and passed to the service, and handles any errors that may occur during the process.

**Custom Parameters**

| **Parameter**          | **Type** | **Description**                                                                                                                                                                                                                      | **Default Value** |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- |
| `configId`             | Required | Identifies the configuration for import JSON data.                                                                                                                                                                                   | `IMP_JSON_DATA`   |
| `propertyResource`     | Required | Specifies the property resource for configuration.                                                                                                                                                                                   | `FTP_CONFIG`      |
| `remoteFilename`       | Optional | Specifies the remote filename for processing.                                                                                                                                                                                        | `Not Specified`   |
| `groupBy`              | Optional | Specifies a grouping parameter for the job.                                                                                                                                                                                          | `Not Specified`   |
| `additionalParameters` | Optional | Additional parameters for job customization.                                                                                                                                                                                         | `Not Specified`   |
| `fileNameRegex`        | Optional | Specifies a regular expression for filtering filenames.                                                                                                                                                                              | `Not Specified`   |
| `importPath`           | Optional | SFTP file location from where the file will be imported.                                                                                                                                                                             | `Not Specified`   |
| `scheduleNow`          | Optional | When importing files into the OMS, forces the system to pick the file out of sequence for immediate processing. Enabled by default when importing files from FTP, but can be disabled during high-volume syncs for system stability. | `Not Specified`   |
| `createdByJobId`       | Optional | ID of the job that initiated this job.                                                                                                                                                                                               | `Not Specified`   |

***

### Send Packed Shipment Notification to Customer

Job Name: `Send packed shipment notification to customer`\
Job Enum ID: `SHPMNT_PKD_NT`\
Service Name: `bulkSendShipmentPackedNotification`\
Flow: HotWax to Klaviyo

This job is used in scenarios where notifications need to be sent for a large batch of shipments that have recently been packed. It is particularly useful for the process of informing customers or internal systems about the status of their shipments, ensuring timely communication and updates.

**Internally**, this job fetches all those shipments which are in packed status between the last job run and current time. And then through the shipment id, tracks the order and similarly the customer email address associated with the order. And triggers email to customer through marketing platforms (like klaviyo)


# Product Management

The `Find Product` page within HotWax Commerce serves as a centralized hub for managing products. This page offers a consolidated view of all the products with individual variant information, displaying product category, product name, product ID, and product features viz, size, colors, etc. It enables users to have a quick view of all existing products and carry out product management efficiently.

HotWax Commerce's `Find Product` page also empowers users to use multiple filter options to refine their product search. The prominent Pre-orders and Backorders filters help users to search out specific products, under these categories, enabling retailers to view the products currently on pre-order and backorder.

**Step-by-Step Usage Instructions:**

1. Log in to HotWax Commerce by entering your credentials on the login page.
2. Within the hamburger menu, find and select the `PIM` (Product Information Management) option. This will open a submenu with various product-related functionalities.
3. From the PIM submenu, choose the `Product` option. This action will direct you to the `Find Product` page.

{% embed url="<https://youtu.be/FOqIwH1EoGU>" %}
Video: Find Product Page
{% endembed %}

### Search Products

The `Search Bar` on the `Find Product` page provides users quick access to get information regarding any product. It streamlines the search process about various identifiers such as Product ID, Product name, SKU, UPC, Parent product, or any other related keywords. For a search with any keywords, all related products and variants are listed alphabetically as per the parent product name.

{% embed url="<https://youtu.be/TppZjVwepbs>" %}
Video: Search Product Page
{% endembed %}

### Search Products using Filters

Enables users to search products, simultaneously using `single` or “multiple filters'', and allows users to choose required options from the selected filter dropdowns to refine the search results. This feature is significant for looking up the required set of products to efficiently manage and monitor the specified products and their variants by “Category”, “Features”, “Tags”, and “Price”, or group search by Pre-orders and Backorders.

Generally, for a keyword search, all the related products appear and are displayed on the screen. To search for a specific product, users can either choose the options from available filters or enter a value set of product names and features or any other value together to excel the search. For example, if a product has different sizes and is available in multiple colors, and want to search “Checked Shirt, Size S, and Colour Black” users can put in the value in the search bar as “Check Shirt” and use `Feature` Filter to get the specific product.

{% embed url="<https://youtu.be/srkwSCZh_gA>" %}
Video: Search Product Page
{% endembed %}

| **Filter Type**        | **Description**                                                                                                                                                                                                                                                                                           |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Store Filter           | Filter out store-specific products, every brand product store has a unique product catalog and if you'd like to view the product catalog of a specific brand, you can filter out the products using the Store filter                                                                                      |
| Category Filter        | Filter products belonging to single or multiple categories, for example, “Men’s shoes”, “Kids' wear”, “accessories”, “apparel”, “Jewellery”, etc.                                                                                                                                                         |
| Feature Filter         | Filter products by choosing product features like “color” “shades”, “sizes”, “donations”, etc.                                                                                                                                                                                                            |
| Tags Filter            | Filter products by choosing any tags available on them like ‘sale”, “discount”, “size range”, “men”, “women”, etc. For example, if a retailer wants to view shirts on discount, they can search for shirts using the search bar and Discount from Tags filter to get specific products in search results. |
| Exclude Tags Filter    | It refines the search by excluding product tags. This will help users to streamline bulk product lookup, where the products having those tags will not be displayed during the search.                                                                                                                    |
| Pre-order Filter       | Filter out all existing products under the pre-order category.                                                                                                                                                                                                                                            |
| Backorder Filter       | Filter out all existing products under the backorder category.                                                                                                                                                                                                                                            |
| Include Parent Product | Helps users view parent products with respective variants.                                                                                                                                                                                                                                                |

### Export CSV

For having a quick view of a certain set of products, users can filter out the products and run the export function to download the CSV into their system.

### Manage Safety Stock

Enables users to search selected products and export CSV by specifying safety stock value and uploading it back using EXIM for bulk products. Safety Stock will be established at all the associated facilities for the entire set of selected products. Users are allowed to manually create CSV, set safety stocks, and upload using EXIM for bulk products. Read more about safety stock in our complete [document](/documents/retail-operations/inventory/safety-stock).

### Threshold

Enables users to search and create CSV of all displayed products. A threshold will be established for the entire set of selected products. Users can manually create CSV and upload using `EXIM` for bulk products.

### View Product Details

The `Product View` page in HotWax Commerce helps users manage products more efficiently by showing all key details in one place, including product specifications and sales channels. To open it, search for the product on the Find Product page and click the Product ID.

Here is the list of details displayed on the Product View page:

**Overview Section**

The overview section contains essential information related to “product specifications”, “features”, and “identifications”. Here's a summary of each element:

| **Specifications**      | **Description**                                                                                                                                                                                                                                         |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product Type            | Displays Product Type as “Finished Goods”, “Digital Goods”, “Accessories”, or others as specified.                                                                                                                                                      |
| Product Name            | Universal name or title assigned to the Product.                                                                                                                                                                                                        |
| Product SKU             | Universal product identifier, that retailers assign to products to keep track of stock levels internally at ecom stores which acts as a unique identifier for HotWax Commerce and ERP.                                                                  |
| Product Brand           | Specifies the brand the product is associated with. Multiple Brands may have the same Product but have a unique SKU for each brand. Product Brand name determines the products to which it belongs when multiple brands are configured.                 |
| Tags                    | Product Tag identifications, added at e-commerce stores like “sale”, “discount”, “size range”, “men, women”, etc.                                                                                                                                       |
| Shippable Dimensions    | Product dimensions with ideal height, width, depth, and weight for shipping and ascertain the shipping box dimensions accordingly.                                                                                                                      |
| Product Features        | Feature particulars specified for product variants like size, and color.                                                                                                                                                                                |
| Product Identifications | Displays associated product ID and Inventory ID with eComm stores. When HotWax Commerce enters a retailer’s Shopify ecosystem, it becomes the source of truth for all product-related information, viz: ECom Product Id, Product SKU, UPCA, GTIN, ISBN. |
| Product Categories      | Displays the parent product category for the variants.                                                                                                                                                                                                  |

This information provides a comprehensive overview facilitating effective management and customization of a product and also empowers users to add and delete any product specifications.

<figure><img src="/files/S2JlzSUkH6xSxlg15a8x" alt=""><figcaption></figcaption></figure>

### Sync Products to Multiple Shopify Shops

Retailers who operate in multiple countries use Shopify shops in Hotwax commerce to manage the same product catalogs in different countries. A master catalog holds all products, while associations are formed to sync these products across different country-specific catalogs. These associations are automated through a job in HotWax Commerce that creates associations between products in the master catalog and the product catalog of other countries by matching the SKU codes. Retailers can view the product association with the different shops in the Shopify Shop section, and add new product associations with Shopify Shop by following these steps:

1. Click on the `Add` button in the `Shopify Shop` section, which will open a new module
2. Select the `Shop` from the dropdown menu for which you want to create the association.
3. Add `Shopify Product ID` and `Shopify Inventory ID`
4. Click on the `Add` button to save the product association

<figure><img src="https://www.hotwax.co/hubfs/Product%20Updates%20and%20Release%20Notes/2023/Nov-Dec%202023%20PU/Manage%20Shopify%20Shop%20Product%20Associations.png" alt=""><figcaption></figcaption></figure>

### Troubleshooting

#### Reindex Product Button

The `Reindex` button on the `View Product` page in OMS is used to refresh product data in the `Find Product` page. If you click on a parent product, it reindexes the parent along with all its variants. When used on a variant product, only that specific variant is reindexed. This is particularly useful when product information is missing or outdated (like product name or SKU updates) on the `Find Product` page.

<figure><img src="/files/YD0WhqypWXrTB6lMmdyf" alt=""><figcaption></figcaption></figure>


# Breaking Variants Into Independent Products

In Shopify, a parent product may have multiple variants defined by the combination of different features—say, different combinations of sizes and colors. The user can decide to break these combinations into separate products in a manner as described below:

#### Initial Product Setup

* **Parent Product:** HC Shoe
  * **Variants:**

| Colour | Size | SKU |
| ------ | ---- | --- |
| Black  | 7    | 7B  |
| Black  | 8    | 8B  |
| Tan    | 7    | 7T  |
| Tan    | 8    | 8T  |

#### Desired Product Setup

* **Parent Product:** HC Shoe
  * **Variants:**

    | Colour | Size | SKU |
    | :----: | :--: | :-: |
    |  Black |   7  |  7B |
    |  Black |   8  |  8B |
* **Parent Product:** HC Shoe (Tan)
  * **Variants:**

    | Colour | Size | SKU |
    | :----: | :--: | :-: |
    |   Tan  |   7  |  7T |
    |   Tan  |   8  |  8T |

Here, the user has decided to divide the initial parent product into two, each for a separate color, which are further categorized into variants of different sizes. To successfully sync such edits made in Shopify into HotWax OMS without corrupting data (specifically product duplication), the user must follow the process detailed in this manual.

## Steps to break the variants into separate products

### Step 1: Pause Product Import and Sync Jobs

* In the [Job Manager App](https://job-manager.hotwax.io/product), go to the Products section.
* Pause the following jobs ([Learn more](https://docs.hotwax.co/documents/retail-operations/workflow/job-manager/job-details#run-now)):
  * **Import Products:** imports new products from Shopify.
  * **Sync Products:** updates existing products from Shopify.

### Step 2: Edit Variants in Shopify

* Make the required edits in Shopify to separate the variants.
* Ensure the SKUs for the separated variants remain the same as before the edit.

### Step 3: Unlink Variants in HotWax Admin

* Open the product page of the variant in HotWax Admin.
* Scroll to the Shopify Shop Product section on the page.
* Unlink the existing **Shopify Link**.

{% embed url="<https://youtu.be/hpijDK4x_Sc>" %}
Unlinking variants from Shopify in OMS
{% endembed %}

<figure><img src="https://youtu.be/hpijDK4x_Sc" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
If the variants are linked to multiple Shopify shops, only unlink them from the specific shop where the edits were made. Keep the links to other shops intact.
{% endhint %}

### Step 4: Sync changes in the OMS

* Run the following jobs from the Products section of the [Job Manager App](https://job-manager.hotwax.io/product)
  * Sync Product Job: Run this job to update the old product. ([Learn more](https://docs.hotwax.co/documents/retail-operations/workflow/job-manager/job-details#run-now))
  * Import Products Job: Run this job to create the separated variants as a new product.
  * Re-enable the Sync Product Job. ([Learn more](https://docs.hotwax.co/documents/retail-operations/workflow/job-manager/job-details))


# Order Management

Checkout workflows involved in Order Management. Gaining an understanding of these processes will give you an overview of how orders are handled from start to end.


# Find Sales Orders

The `Find Sales Order` page in HotWax Commerce offers users a comprehensive listing of all orders, accompanied by essential order details including order items, order ID, order date, and customer information. Additionally, users can easily ascertain the current status of each order and identify the facility to which it is allocated. For enhanced order management, the page also displays promise dates and auto-cancel dates, ensuring timely fulfillment.

To streamline the search process, users have the option to search for orders using product identifiers on the search page. Moreover, filters such as product store, facility, and sales channel are available to further refine and manage the order list.

For seamless integration with external systems, users can export order data in CSV format, facilitating efficient order fulfillment processes across platforms.

**HotWax Commerce offers the following features on the Sales Order Page:**

### Search Sales Orders

The `Search Sales Order` feature on the `Sales Order` page provides users with quick access to information regarding a specific Order Information. Users can search for Orders based on various identifiers such as Order ID, Customer name, SKU, etc. to get an instant overview of the order.

**Step-by-Step Usage Instructions:**

1. Navigate to the HotWax Commerce platform and log in with your credentials. The first page that opens up upon logging in is the Sales Order page.
2. Within the `Sales Order Page`, you'll find a search bar.
3. In the search bar, you can enter the identifier of the desired order you wish to locate.
4. Press the `Enter` key to initiate the search process after entering the search criteria.
5. The platform will display the search results based on the provided SKU or order ID.
6. You can now view all pertinent details related to the order, including customer information, order items, and status. Click on the order to access the detailed information.

{% embed url="<https://youtu.be/g3h3HX6YNNY>" %}

### Filter Orders

HotWax Commerce allows users to sort through numerous orders based on different filter criteria. Enabling users to focus on specific subsets of orders, making it particularly valuable for those dealing with high order volume.

You can apply these filters to Sales Orders:

| Filter Name      | Description                                                                                                             |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Product Store    | Choose the desired Product Store from the dropdown menu to filter by a specific store.                                  |
| Facility         | Select the Facility to narrow down the results to a particular location.                                                |
| Order Status     | Filter by Order Status to view orders in a specific stage (created, approved, completed, canceled).                     |
| Item Status      | Filter by Item Status to focus on specific stages of item fulfillment (Reserved, Picking, Packing, Shipped, Delivered). |
| Sales Channel    | Choose the desired Sales channel from the dropdown menu to filter by a specific channel such as Shopify, Amazon, etc.   |
| Order Date       | This filter categorizes orders based on their order date, allowing users to filter them by predefined time intervals.   |
| Promised Date    | This filter categorizes orders based on their promise date, allowing users to filter them by predefined time intervals. |
| Auto Cancel Date | The auto-cancel date is the predetermined deadline by which an order will be automatically canceled if not fulfilled.   |
| Shipping Method  | Filter by the shipping method such as delivery speed (standard, expedited, express), cost, or specific carriers.        |

{% hint style="success" %}
You can save the search filters using the disc icon and view the saved search filter by clicking on the three horizontal eclipses on the right.
{% endhint %}

{% embed url="<https://youtu.be/eMb3WC2JmBI>" %}

### Filter Orders based on Queue

HotWax Commerce has different queues that act as a virtual facility to park the orders that are awaiting fulfillment. Users can view the orders in the queue to identify orders that currently do not have inventory allocated to them.

| Queue Name      | Description                                                                                                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-Orders      | Orders that are placed in Pre-order parking (To hold pre-ordered items until released from HC) can be shown by clicking on the Pre-orders checkbox.                             |
| Back Orders     | Orders that are placed in Backorder parking (To hold back-ordered items until released from the HC) can be shown by clicking on the Back-orders checkbox.                       |
| Brokering Queue | Orders that are placed in the Brokering Queue (To hold orders for in-stock items until the next brokering run) can be shown by clicking on the Brokering Queue checkbox.        |
| Unfillable Hold | Orders that are placed in the Unfillable Hold (To hold unfillable items from further brokering and auto-cancellation) can be shown by clicking on the Unfillable Hold checkbox. |

By filtering orders based on queues, users can focus on handling orders that require immediate attention or fall into the queue.

Users can also filter the orders that will be auto-canceled today to make sure such orders are prioritized.

{% embed url="<https://youtu.be/_UYtNXq4IiA>" %}

### Export Orders

Enables users to export all displayed sales orders into CSV using the Export CSV function. Once the filtered orders are displayed, Click on the `Export CSV` option to initiate the export process.


# View Order Details

The comprehensive `Order View Page` within HotWax Commerce enhances user efficiency and facilitates streamlined order management. This page consolidates all essential information related to an order, providing users with a holistic view that encompasses key details such as billing and shipping information, order identification, payment terms, preferences, timelines, references, communications, and a detailed list of items. To access the `order view page`, simply click on the order ID on the `find sales order` page to view comprehensive details about the order.

HotWax Commerce offers the following features on the `Order View Page`:

### Overview Section

The overview section contains essential information related to billing and order processing. Here's a summary of each element:

1. **Bill To (To-Customer):** Indicates the customer who will be billed for the order.
2. **Bill From (Company, Channel, Product Store):** Specifies the origin details, including the company, sales channel, and product store associated with the transaction.
3. **Status:** Reflects the current status of the order, providing insights into its progress or completion.
4. **Order Date:** Records the date when the order was placed or initiated.
5. **External ID:** Identifier for external system.
6. **Subtotal:** Displays the total cost of items or services before additional adjustments.
7. **Total:** The overall cost of the order, which can be manually adjusted for discounts, promotions, replacements, and taxes.

This information provides a comprehensive overview of an order, facilitating effective management and customization of billing details.

### Order Identifications

The `Order Identifications` section displays key information related to Shopify orders. The four main components of this section are:

1. **Shopify Order ID:**
   * This is a unique identifier assigned by Shopify to each order. It serves as a reference point for tracking and managing orders within the Shopify platform. Additionally, users can conveniently view the order details directly on Shopify by clicking on the provided link associated with the Shopify order ID.
2. **Shopify Order Name:**
   * The order name in Shopify typically refers to a customizable name or title assigned to an order on Shopify for further order identification.
3. **Shopify Order Number:**
   * Shopify assigns a distinct numerical identifier to each order. It acts as another unique reference for orders, often used in communication and documentation.
4. **Order Attributes:**
   * Shopify retailers can capture additional crucial order details through metafields. Once customer IDs are verified, they are stored as order metafields in Shopify. When HotWax Commerce enters a retailer’s Shopify ecosystem, it becomes the source of truth for all order-related information. HotWax Commerce downloads order details along with customers’ IDs as order attributes and shares this information with the retailer's accounting system. All downloaded order attributes are visible under this section.
   * Users can also add Order Attributes by clicking the `Add Order Attribute +` button which will open up a new form. Add the attribute name, value and description and click on the Add button to save the order attribute. This function is vital if there are some issue in importing order attributes such as metafield being added after the order has been imported in HotWax Commerce.

### Payment Section

In the Payments Section, users can easily view the payment method and total payment value made by customers on the e-commerce platform. This data is then transmitted to the ERP system. Particularly for cash on delivery orders, this information is vital as store associates need to collect payment during fulfillment.

### Order Timeline

The timeline illustrates the progression of events from the initial order decision to the completion of the transaction, including the involvement of a broker as an intermediary. Here's a brief description of each term:

1. **Order Date:**
   * The date and time when the customer made a purchase.
2. **Entry Date:**
   * The date and time when the order information was officially recorded into HotWax Commerce.
3. **First Brokered:**
   * The first brokered refers to the initial timestamp when an item is allocated to a specific facility. This timestamp remains unchanged even if the item is subsequently rejected by the facility and redirected elsewhere. It serves as a fixed reference point for tracking the item's movement history within the system.
4. **Completed Date:**
   * The date and time when the order was fulfilled, and the goods or services were delivered or made available to the buyer.

**For Example:**

| Event          | Date and Time       |
| -------------- | ------------------- |
| Order Date     | 03-08-2024 06:07 PM |
| Entry Date     | 03-08-2024 06:13 PM |
| First Brokered | 03-09-2024 01:00 AM |
| Completed Date | 03-11-2024 03:16 PM |

### References

In the HotWax Commerce platform, the `Reference Section` offers a centralized hub for users to access critical information related to picklist status, packing details, shipment information, and returns details. This feature provides quick and easy access to essential data. Users can click on the relevant item such as return ID, picklist ID, etc. to access the order details. Users can see the following details in this section:

* Click on the `Picklist Status` link to view the current status of picklists associated with orders.
* Click on the `Packing Details` link to view information regarding the packing process for orders. This includes details such as items packed, and any special instructions.
* Click on the `Shipment Information` link to access data related to order shipments. This may include tracking numbers, carrier information, and expected delivery dates.
* Click on the `Returns Details` section to review information about product returns initiated by customers for this order and the status of the return.

### Communications

The `Communications` feature in the HotWax Commerce platform acts as a central hub for users to interact with both the internal team and customers, providing updates on orders. With the capability to add notes and send personalized emails directly from this interface, users can efficiently communicate important updates or notifications to internal teams or customers. Whether it's informing customers about order changes, cancellations, or backorder notifications, or adding notes for the fulfillment team, this feature simplifies communication processes, minimizing misunderstandings and improving overall order management efficiency.

Click on the communication and select either email or notes to start the communication.

<figure><img src="/files/NVOzIBwiPoI1bueBM9gx" alt=""><figcaption></figcaption></figure>


# Update Sales Orders

Discover how sales orders are updated in HotWax Commerce OMS.

To perform the order allocation tasks, we first navigate to the View Sales Order page:

1. Go to the Hamburger Menu in the OMS > Order Management section > Sales Orders to open the Find Sales Order page.
2. Search for the order ID for which you want to update the order details.
3. Select the order ID to open the View Sales Order page.

## Update Shipping details

Users can easily access and review the shipping details associated with orders. This includes shipping address, communication details, shipping method, estimated delivery date, and tracking details.

{% hint style="info" %}
Edit function is available only for approved orders.
{% endhint %}

{% hint style="info" %}
Details need to be updated for each shipgroup of an order.
{% endhint %}

Here's how you can update shipping address for the order:

**Updating Shipping Address:**

* Click on the `Edit` function available for the order.
* Fill in the required shipping details that needs to be changed in the form provided.
* Save the changes by clicking on the `save` button

**Updating Shipping Method:**

* Within the order, locate the shipping method section.
* Click on the `Edit` function next to the current shipping method.
* Choose the desired shipping method from the provided list.
* Save the changes.

{% embed url="<https://youtu.be/11nFbayax3I>" %}
Video: Update Shipping Details
{% endembed %}

{% hint style="warning" %}
Users only change the shipping method directly for orders in the brokering queue. If inventory has already been allocated to the order, users need to reject the item from the store, update the shipping method, and then broker the order again.
{% endhint %}

***

## Cancel Sales Order

Orders can only be canceled in HotWax Commerce when they are in the `created` state. Additionally, it's important to note that the sales orders canceled on HotWax Commerce are not automatically updated on Shopify. Therefore, it is recommended for users to cancel orders directly on Shopify for seamless synchronization and accurate order status across platforms. Cancelling a sales order will automatically cancel all other sales order items in the order.

**Cancellation Process:**

1. Select the required order to open the Sales Order Detail page.
2. Click the Status dropdown located at the top left of the page.
3. Select the Cancel function to cancel the entire sales order.

{% embed url="<https://youtu.be/u-CtB-pw-Kc>" %}
Video: Cancel sales order
{% endembed %}

***

## Cancel Sales Order Items

1. Once the `View Sales Order` page is open, scroll down to locate the `Item` section. This section displays all items included in the selected order.
2. Within the Item section, locate and click on the `Edit Items` function. This action will enable editing options for the items within the order.
3. Identify the line item/s that need to be canceled due to inability to fulfill and click on the `Delete` function next to each respective item.
4. After deleting the unwanted items, ensure to click on the `Save` function to apply the changes to the order.

{% embed url="<https://youtu.be/xFU28XyELd4>" %}
Video: Cancel Sales Order items
{% endembed %}

***

## Refresh Sales Order

Refreshing sales order allows retailers to reimport a sales order from Shopify to HotWax Commerce. Refreshing is required if an order update in Shopify is not included in the `sync order update job`.

HotWax Commerce can update the following details from Shopify:

1. Adding items to an order
2. Removing items from an order
3. Changing item quantities
4. Changing shipping addresses
5. Changing customer contact detail
6. Change in Order Fulfillment Status

### Step-by-Step Usage Instructions

**Verification at Shopify:**

1. Log in to the Shopify admin portal.
2. Locate the specific order that requires updates.
3. Review the order details to verify any changes or make necessary updates, such as adding/removing items, adjusting quantities, or modifying customer and shipping information.
4. Once verified or updated, ensure to save the changes within Shopify.

**Refresh Order in HotWax Commerce:**

1. Return to the HotWax Commerce platform and access the order view page for the corresponding order.
2. Locate and click on the "Refresh Order" button available in the header section of the order view page.
3. After refreshing, verify that the order status and item status are updated accordingly. This may involve checking for any cancellations or changes in item availability.
4. Go back to the Sales Order Find Page and select "Approved" and "Canceled" statuses from the order status filter dropdown.
5. Review the refreshed order details to ensure that the updates from Shopify have been successfully synchronized with HotWax Commerce.

{% hint style="info" %}
The existing orders get canceled with the `Old Version` tag. A new Order with the same order ID gets created with updated items in HotWax Commerce. The updated information will be reflected in the item section on the sales order detail page.
{% endhint %}

{% embed url="<https://youtu.be/_e1VDQUgICs>" %}
Video: Refresh Sales Order
{% endembed %}

### Allow Splitting

Splitting an order into separate shipments for fulfillment across multiple locations occurs when all items are not available at a single facility. The order splitting settings on the order view page is shown as per the product store settings. However, if the CSR team want to split a specific order, they can click on the checkbox against the allow splitting function.

### Add Gift Message

CSR teams can manually input personalized messages on behalf of customers upon request. These gift messages can be added along with the order at the time of fulfillment by the store associates by clicking on the `Add` Buttion against the gift message

### Add Handling instructions

Any special instructions or handling requirements associated with the items in the group can be added by clicking on the `Add` button against Handling instruct. The handling instructions added here will be visible in the fulfillment app for store associates

{% embed url="<https://youtu.be/TE4WrSwqMMY>" %}

### Add Ship By and Ship After Date

Ship By specifies the date by which the items should be shipped to ensure timely delivery, while Ship After indicates the date after which the items need to be shipped. Both Ship By and Ship After details can only be added upon customers' requests.


# Allocate Sales Orders

Learn how the sales orders are allocated efficiently in different scenarios.

To perform the order allocation tasks, we first navigate to the View Sales Order page:

1. Go to the Hamburger Menu in the OMS > Order Management section > Sales Orders to open the Find Sales Order page.
2. Select the order ID to open the View Sales Order page.

## Release Items

{% hint style="info" %}
For automated facility selection, the user can either wait for the next brokering run or use the Broker Now function to broker items immediately.
{% endhint %}

1. Select the line item and click Release function.
2. View the inventory and select any facility using the radio button.
3. Release the item to the selected facility.
4. Click the history function to view the changes.

{% embed url="<https://youtu.be/_8XcDyvb3sY>" %}
Video: Release item
{% endembed %}

## Reject Items

The `Reject Items` feature within the HotWax Commerce platform serves as a crucial tool for managing orders efficiently and maintaining customer satisfaction. It allows users to reject specific items from sales orders, providing valid reasons such as stock unavailability, damages, mismatches, or inactive stores. By enabling users to address issues promptly and accurately, this feature contributes significantly to workflow efficiency and customer service quality.

1. Identify the item(s) you wish to reject and click on the corresponding line item.
2. Look for the `Reject` function and click on it to initiate the rejection process.
3. Choose the appropriate reason for rejection from the available options using radio buttons (e.g., Not in Stock, Damaged, Mismatch).
4. After selecting the rejection reason, save your changes to confirm the rejection.

Check the order item history by clicking on the radio button

{% embed url="<https://youtu.be/3bT6-DgK5tY>" %}
Video: Reject sales order items
{% endembed %}

## Mark items shipped in OMS

Sometimes there are instances when customers may connect with CSR to receive the order urgently, in such cases CSR has the option to ship the order from the order details page without waiting for the fulfillment center to mark the order item shipped. Here's how users can mark the order items as shipped in the OMS:

**Scenario 1: Marking Items as Shipped that is still Unassigned to a Facility**

1. **Locate the Order:** Navigate to the desired order and open it to view details from the `View Sales Order` page.
2. **Release Item to Facility:** Select the line item, click `Release`, and choose the target facility for shipment.
3. **Mark Items as Shipped:** Scroll to the item section on the `View Sales Order` page and click `Ship Items`.
4. **Select Line Items:** Choose the items to be marked as shipped in the popup window.
5. **Enter Tracking Details:** Select the carrier party from the dropdown and input the tracking number.
6. **Confirm Shipment:** Verify the details and confirm the shipment to mark the selected item(s) as shipped.

**Scenario 2: Marking Items as Shipped that are assigned to a different facility**

1. **Reject Line Item:** Identify the line item on the `View Order` page, click `Reject`, choose `No Variance` as the reason, and confirm the rejection.
2. **Release Item to Facility:** Select the rejected item, click `Release`, and choose the necessary facility.
3. **Mark Items as Shipped:** Proceed to click `Ship Items`, select line item(s), input tracking details, and confirm the shipment.

**Scenario 3: Marking BOPIS Sales Order Items as Shipped**

1. **Modify Shipping Method:** Scroll to the item section on the `View Order` page, click `Edit`, and modify the shipping method to `Standard`.
2. **Reject Line Item:** Reject the line item, choosing `No Variance` as the reason.
3. **Release Item to Facility:** Select the rejected item, click `Release`, and choose the necessary facility.
4. **Mark Items as Shipped:** Click `Ship Items`, select line item(s), input tracking details, and confirm the shipment.

{% hint style="info" %}
Click the history function in the status column to view when the item is marked completed and the user who marked the item completed.
{% endhint %}

{% embed url="<https://youtu.be/RwpJ86nFnAo>" %}
Video: Ship items in OMS
{% endembed %}

## Manage Auto-Cancel Date

Managing orders is a complex process, and sometimes, items fail to be fulfilled due to inventory unavailability across facilities. When this occurs, it's crucial to set an auto-cancel date to streamline operations and ensure resource allocation is optimized.

This feature allows users to easily modify or remove auto-cancel dates from orders that are marked unfillable due to failed brokering attempts. By providing this functionality, HotWax Commerce empowers users to maintain control over their orders, preventing unnecessary delays and potential customer dissatisfaction.

**Update the Auto-cancel Date on a single order:**

1. Choose the specific order you want to manage and click on it to enter the Sales Order View page.
2. In the Item section of the Sales Order View page, locate the auto-cancel date and click on the edit function next to it.
3. From the Calendar that appears, select the new date for the auto-cancelation.
4. After updating the date, click on the `Save` function to apply the changes.

**Remove Auto-cancel Date from single order:**

1. Choose the specific order you want to modify and enter the Sales Order View page.
2. In the Item section, locate the auto-cancel date and click on the edit function next to it.
3. Click on the delete icon next to the auto-cancel date to remove it from the order.
4. Confirm the changes by clicking on the `Save` function.

## Move Items to Order Parking

HotWax Commerce features various parking areas serving as virtual facilities for storing orders awaiting fulfillment. Users frequently need to transfer orders between these parking areas to ensure accurate inventory allocation. For instance, if there are unfulfillable orders and retailers are aware of when will inventory arrive, they may opt not to run brokering for such orders until that day. In such scenarios, these orders can be moved from the brokering queue to the unfulfillable hold queue. Here's how you can relocate items to different parking areas:

1. In the items section, click the `Move Items to Parking` function.
2. Choose the parking using the `Radio` button and Save.
3. Confirm the Ship From column to view the selected parking.

Refer to the table below for parking description and purpose.

<table data-header-hidden><thead><tr><th width="168.33333333333331"></th><th width="190"></th><th></th></tr></thead><tbody><tr><td><strong>Facility Parking</strong></td><td><strong>Description</strong></td><td><strong>Purpose</strong></td></tr><tr><td>Brokering</td><td>Holds new orders</td><td>To hold orders for in-stock items, until the next brokering run.</td></tr><tr><td>Pre-order</td><td>Holds pre-orders</td><td>To hold pre-ordered items until released from the HotWax Commerce Pre-order Management app upon inventory availability.</td></tr><tr><td>Backorder</td><td>Holds Backorders</td><td>To hold backordered items until released from the HotWax Commerce Pre-order Management app upon inventory availability.</td></tr><tr><td>Unfillable Hold Parking</td><td>Hold orders which are unfillable but expecting inventory</td><td>To hold unfillable items from further brokering and auto-cancellation.</td></tr><tr><td>General Operations Parking</td><td>Hold completed and canceled orders during initial setup.</td><td>To hold completed and canceled orders during the initial Order Management System (OMS) instance setup, for later reference during analysis in reporting.</td></tr><tr><td>Store Pickup Rejected queue</td><td>Hold rejected store pickup orders</td><td>To hold store pickup orders which are rejected from the store,</td></tr></tbody></table>

{% embed url="<https://youtu.be/5J3HCUUbwiw>" %}
Video: Move item to Order parking
{% endembed %}


# Soft Allocation

Discover the Soft Allocation Workflow for seamless order handling between Shopify and HotWax Commerce.

The Soft Allocation Workflow establishes a seamless integration between Shopify and HotWax Commerce, facilitating the efficient handling of orders with soft-allocated items. By configuring a customized Shopify Flow, triggered upon order creation, and tagged with specific criteria, this workflow ensures that orders are appropriately marked with the necessary identifiers before being imported into HotWax. This tag, denoted as `HC_PRE_SELECTED_FAC`, serves as a key element in the subsequent fulfillment process. The OMS is configured to recognize this tag and automatically allocate the associated items to the pre-selected facility, streamlining the fulfillment of orders with soft-allocated items. Additionally, the workflow incorporates essential product store settings in both Shopify and the OMS to further enhance accuracy and ensure a smooth, automated fulfillment process.

## Soft Allocation Workflow Configuration

### Shopify Configuration

To implement a Shopify Flow tailored to the specific requirement of tagging orders with soft-allocated items, follow this comprehensive guide:

**1. Create a New Shopify Workflow:**

* Navigate to Settings > Apps and sales channels in your Shopify admin.
* Select the [Shopify Flow app](https://shopify-2.wistia.com/medias/kmsfxapyq5).
* Click "Open app."
* Create a new workflow by clicking "Create workflow."

**2. Set Trigger to `Order Created`:**

* Choose the trigger "Order Created" to initiate the workflow when an order is created in Shopify.

{% hint style="warning" %}
Note: Shopify Flows may not run instantly after order creation. To ensure that orders are imported only after tags have been applied to a soft-allocated order, use the `buffer` parameter in the import order job.
{% endhint %}

**3. Add Tag on Orders with Soft Allocated Items:**

* Select `Condition` to establish criteria that must be met before any actions can proceed.
* Set the condition to:
  1. Select orders > line items > Custom Attributes > Key.
  2. Input `hcShippingFacility` as the key.
* Click `Then` to specify the action to be taken if the condition is met.
* Choose `Actions` and select an action based on the condition's results.
  * Set the action to:
    1. Choose 'Add Order Tags'.
    2. Input `HC_PRE_SELECTED_FAC` as the tag name.

By following these steps, you'll create a specialized workflow that seamlessly tags orders with soft-allocated items, ensuring a smooth integration with HotWax.

### OMS Configuration

**1. Set Product Store Settings:**

* Go to the Hamburger Menu in OMS.
* Navigate to Settings > Store to open the Product Store page for your dedicated store > Store Settings section.
* Click "Add" and select the setting from the dropdown: `Preselected facility for same day shipping`. Input the value with the same tag added in Shopify `HC_PRE_SELECTED_FAC`. This setting ensures that orders imported with this tag have their line items checked for pre-selected facilities to fulfill them.
* Add one more setting named: `Preselected facility tag` and add value `hcShippingFacility`. This line item property on the item that needs to be read to determine the facility of the order.

By following these steps in both Shopify and OMS, you establish a seamless Soft Allocation flow, ensuring accurate fulfillment based on specified criteria.

{% embed url="<https://youtu.be/YmT_utsAnUw>" %}


# Order Cancellations

Order cancellations are a common occurrence in online retail. If a merchant is using both Shopify and HotWax Commerce, cancellations can happen in two ways:

1. Cancellations made in Shopify and updated in HotWax Commerce.
2. Cancellations made in HotWax Commerce and updated in Shopify.

HotWax Commerce recommends canceling orders on Shopify and then updating them on HotWax Commerce, following the same process as used for order creation. This approach ensures that cancellations are handled consistently by both customers and the customer service team. In special cases, such as auto cancellations and mass pre-order cancellations, Shopify retailers can use HotWax Commerce to cancel orders and update them on Shopify.

## Order Cancellation on Shopify

HotWax Commerce can import cancellation updates in two cases:

### Full Order Cancellations

When customers request order cancellations from Shopify or CSR teams cancel orders due to suspected fraudulent orders, they can cancel the entire order through the following steps:

* Go to the order page on Shopify.
* Select the desired order.
* Click on `More Actions` and choose `Cancel Order`.

To sync cancellation updates from Shopify to HotWax Commerce, there are two options available: webhooks and batch jobs. By subscribing to the `Canceled Order` webhook, customers can cancel orders in real-time. However, it should be noted that Shopify webhooks may only sometimes be reliable. Therefore, it is recommended to schedule the `Canceled Order` Job. The canceled order job can be scheduled from the HotWax Commerce Job Manager App.

1. Navigate to the Order section in the job manager app.
2. Open the job card titled Canceled Order.
3. Select the order run time and schedule.
4. Save the Changes, this will schedule the job to import the canceled orders.

### Partial Order Cancellations

When customers request to remove any item from the order or the CSR team cancels the ordered item due to inventory variance, they can partially cancel the order through the following steps:

* Access the order page on Shopify.
* Choose the `Edit` option.
* Adjust the quantity or remove the specific item(s) to be canceled.

For partial cancellations, the order status in Shopify does not change, only the last updated date for the order changes. HotWax Commerce partially cancels the order through the following steps:

1. Navigate to the Order section in the job manager app.
2. Open the job card titled Canceled Item.
3. Select the order run time and schedule.
4. Save the Changes, this will schedule the job to import the canceled items.

For more details on how canceled orders are imported, refer to the Shopify-HotWax Commerce Integration document.

## Order Cancellation in HotWax Commerce

### Order Cancellation of Non-Brokered Items

Cancellation of an order can have a different nature on OMS. If an order is not brokered, when it's still in the `created` or `approved` status but not brokered yet, the order will be marked as canceled on the sales order dashboard of HotWax Commerce. This ensures that the canceled order is properly measured and since the order is not allocated to any store, there would be no changes in the store ATP, only the brokering queue inventory is released.

{% embed url="<https://www.youtube.com/watch?v=u-CtB-pw-Kc>" %}

### Order Cancellation of Brokered Items

If an order is brokered for fulfillment to the facility and gets canceled on Shopify, the Fulfillment app will show the impact regardless of whether the job is Open, In Progress, or Completed status. The canceled orders will be automatically removed from the Fulfillment app so that store associates can identify that no further operation needs to be done to fulfill the orders. The ATP of the canceled orders items will increase both for the store and online ATP computation.

If the order is packed, the CSR team should verify with the fulfillment team that the order needs to be unpacked and has been canceled. This ensures that the order is not shipped to the customer.

### Partial Cancellation in HotWax Commerce

When Partial order cancellation happens in HotWax commerce, the order item is removed from the fulfillment app, and its inventory is corrected similarly to complete order cancellation. The order status will remain as per the other items, such as created, approved, or completed, only the order item status is changed to canceled which can be visible on the order details page against the line item which is canceled.


# Auto-Cancellation

Managing inventory and order fulfillment is a critical aspect of retail operations. However, sometimes items may be unavailable across all facilities. In such cases, retailers can use the Auto-Cancel Date Management feature, which provides them with the ability to automate the cancellation of orders that cannot be fulfilled due to inventory shortages within the desired frame. This feature helps retailers avoid operational delays and improve customer satisfaction by ensuring orders do not remain in limbo indefinitely. When an item is marked unfillable after a failed brokering attempt, users can set or modify an auto-cancel date, streamlining the process of handling these unfillable orders. For example, an e-commerce order can have a 5-day auto-cancel period, while SendSale orders may not have any auto-cancellations, allowing flexibility based on business rules.

## Step-by-Step Usage Instructions

#### 1. **Access the Order Routing App**

* **Navigate to:** Launchpad > [`Order Routing`](/documents/retail-operations/orders/order-routing) App. This is where you configure brokering runs and set up auto-cancellation rules for unfillable orders. Inventory managers or fulfillment team members typically use this to manage order fulfillment and brokering logic.

#### 2. **Select the Brokering Run**

* Choose the brokering run for which you want to set an auto-cancellation date. Different brokering runs may handle various fulfillment strategies for example unfillable order brokering runs may be different from regular runs, so selecting the right run ensures the proper application of auto-cancellation rules.

#### 3. **Select the Order Batch**

* Within the selected brokering run, choose the relevant order batch. Retailers may want to set different auto-cancellation rules for standard orders versus expedited orders. This step allows for customizing rules based on order priorities and fulfillment types.

#### 4. **Navigate to the Last Inventory Rule**

* Inside the chosen order batch, scroll down and select the last inventory rule. This rule is designed to handle scenarios where the item is unavailable across all facilities, triggering the need for auto-cancellation or alternative handling options.

#### 5. **Set the Auto-Cancel Date**

* Go to the "Unavailable Item" card and add the desired auto-cancel date in the `Auto-Cancel Date` chip. This defines the time frame (e.g., 5 days) for holding the unfillable item before it is automatically canceled.
* You can move the item to `unfillable parking` for the item with unavailable inventory so that it can be easily differentiated with the regular orders.

![auto-cancellation](/files/Z5OjjWANp7ZdwLp7oowT)

## Removing Auto-Cancellations

* If the inventory for an unfillable item is expected to arrive soon or if the order needs to be held longer, you can remove the auto-cancel date.
  1. **Navigate to the "Unavailable Item" Card** in the relevant inventory rule within the `Order Batch`
  2. **Clear the Auto-Cancel Date:** Use the `Clear Auto-Cancel Date` toggle to remove the previously set date. This prevents the item from being automatically canceled.
  3. **Move the Order to Unfillable Hold Queue:** Instead of canceling, you can send the order to the `unfillable hold queue` if you anticipate the inventory arriving soon. This step ensures that the order is retained in the system until the item is back in stock, improving order fulfillment efficiency.

Using these options, you can control when and how unfillable orders are managed, ensuring better coordination and reduced chances of unnecessary order cancellations.

![clear auto cancellation](/files/Z5OjjWANp7ZdwLp7oowT)

## Monitoring Unfillable Orders

* Regularly monitor the **Unfillable Report**, which highlights orders in unfillable parking with an auto-cancel date. This report helps ensure that unfillable items are correctly scheduled for cancellation and allows you to adjust or clear the auto-cancel date if needed.

## Auto-Cancellation Job

* When the auto-cancel date is reached, the system automatically runs the `autocancelorderitems` job at midnight. This job cancels any unfillable items and logs the cancellation reason as "auto-cancellation," ensuring timely order resolution and preventing delays in the process.


# Troubleshooting


# Error Due to Incorrect JSON

## Objective

This document provides a comprehensive guide to diagnose and resolve synchronization issues related to order import errors caused by special characters in notes and incorrectly formatted email fields.

## Common Scenarios

1. Order import fails in HotWax Commerce OMS due to special characters in the "Note" field. Such as 🌟 👍 😊 or miscellaneous characters.
2. Order import fails in HotWax Commerce OMS due to incorrectly formatted email addresses. Such as name#example.com or name@#example.com, etc.

**Common Error Messages:**

* "Rollback called in Entity Engine SQLProcessor java.lang.Exception"
* "E-mail address not formatted correctly, must be like: name\@domain"

## Step-by-Step Troubleshooting Process

### Verify If Issue Exists

1. **Access OMS:**
   * Navigate to HotWax Commerce OMS and log in with your user credentials.
   * Go to the `MDM` page from the hamburger menu and click on `EXIM` > `MDM` > `Shopify order mdm`.
   * Check the Import Results in the `Shopify order mdm` page for any failed records.
2. **Check Shopify Logs:**
   * Review Shopify Plus logs or feeds for specific error messages related to the failed import.

### Diagnose the Issue

1. **Identify Failed Order:**
   * Find the order that failed to import by looking at the error messages in OMS.
2. **Download JSON File:**
   * Append `/json` to the order URL in Shopify to download the JSON file of the failed order.
3. **Inspect "Note" and "Email" Fields:**
   * Open the JSON file and locate the note key. Check for any special characters, emojis, or miscellaneous symbols.
   * Locate the email key and verify that the email address follows the standard format (e.g., name\@domain).

### Resolve the Issue

1. **Remove Special Characters and Correct Email Format:**
   * Edit the JSON file to remove any special characters from the note field.
   * Correct the email address to adhere to the standard format.
2. **Save Edited JSON:**
   * `Save` the changes made to the JSON file.
3. **Re-import Order:**
   * If an error is resolved within the job execution time (generally 15 minutes), the import order job should automatically import the order.
   * Otherwise, manually import the order by navigating to `MDM / EXIM` > `MDM` > `Shopify orders mdm`, select Shopify Config, upload your JSON or CSV file using the Upload File field, and run the job.
4. **Verify Successful Import:**
   * Ensure the order is successfully imported without errors.

By following these detailed steps, you can effectively troubleshoot and resolve synchronization issues between HotWax Commerce and Shopify, ensuring a smooth and error-free order import process.

{% hint style="success" %}
This issue is handled in \[Release 5.9.0]\(<https://docs.hotwax.co/integrate-with-hotwax/oms-release-versions/oms-release-versions>)
{% endhint %}


# Order Approval Errors

Troubleshooting Guide for orders stuck in created status

In HotWax Commerce, all orders are initially marked as "Created" after being downloaded. Orders can be auto-approved using a scheduled job called `Approve Orders`, which checks the approval status of Shopify orders based on parameters set by Shopify merchants. The job runs at a default frequency of 30 minutes and approves orders once all necessary details and required references are established.

Clients may have varying approval processes, such as requiring customer IDs or payment verification tags. If the job is stuck in the "Created' status", it could be due to missing or incorrect order attributes.

## Scenario 1: Missing Order Attribute

Orders may not get approved if essential attributes are missing. For instance, some clients may require specific information such as a customer ID or Municipio ID. If these attributes are missing, the approval job cannot verify and approve the order, causing it to remain in the 'Created' status. For detailed instructions on how to add missing order attributes, refer to our [troubleshooting documentation](/documents/retail-operations/orders/order-management/troubleshooting/order-attribute-missing)

<figure><img src="/files/NZGD3EHd7MQHUzhOMlmu" alt="" width="563"><figcaption></figcaption></figure>

## Scenario 2: Incorrect Order Attribute

Another common issue is the presence of incorrect order attributes. This could mean that the required information is either incomplete or inaccurately entered, which can prevent the order from being approved. For example, incorrect municipio ID can lead to approval failures.




---

[Next Page](/documents/llms-full.txt/1)

