We rely on the “fulfilmentOrderID” for our logistics processes. Until a few days ago, this fulfilment order id was visible in the URL. We were able to open a separate page by clicking on “Fulfill item”. The URL path looked something like this: /orders/123456/fulfillment_orders/7890123
We then took the fulfilment order id (e.g. 7890123), and used it as the identifier for our shipping provider. This allowed us to update tracking information etc. automatically via API.
Now this fulfilmentOrderID is impossible to see on the UI or in the URL. Are there any ways to make this visible in the UI or URL?
Cheers
TJ
__
PS: Our short term workaround was to create a flow in shopify flow that will fetch the fulfilmentOrderId and then save it as a order note. This is however cumbersome, and will not work whenever we split fulfilments.
PPS: Please don’t suggest any solution that requires us to install new apps.
Great, thank you for your help. I actually need the fulfillmentOrderId and not the fulfillmentID. But the proposed concept to create a Bookmarklet has helped me regardless.
If anyone is looking for a similar solution, here’s the Bookmarklet that I have added to Google Chrome. Disclaimer: I’m not a developer and it was written by ChatGPT, so it might not be the most sustainable/robust code.
javascript:(function(){const fulfillmentCards=document.querySelectorAll('.Polaris-Card:has([id^="CREATE_FULFILLMENT-"])');if(fulfillmentCards.length===0){alert("No unfulfilled sections with Fulfillment Order IDs found.");return}let htmlContent='<div style="font-family: Arial, sans-serif; padding: 20px; background: #fff;%20border:%201px%20solid%20#ccc;%20border-radius:%205px;%20box-shadow:%200%206px%2016px%20rgba(0,0,0,0.3);%20max-width:%20500px;%20max-height:%2090vh;%20overflow-y:%20auto;%22%3E';htmlContent+='%3Ch3%20style=%22margin-top:%200;%20color:%20#333;%20border-bottom:%201px%20solid%20#eee;%20padding-bottom:%2010px;%22%3EFulfilment%20IDs%20to%20Copy%3C/h3%3E';let%20fulfillmentCount=1;fulfillmentCards.forEach(card=%3E{const%20fulfillmentButton=card.querySelector('[id^=%22CREATE_FULFILLMENT-%22]');if(!fulfillmentButton)return;const%20fullId=fulfillmentButton.id;const%20fulfillmentIdMatch=fullId.match(/(\d+)$/);const%20fulfillmentId=fulfillmentIdMatch?fulfillmentIdMatch[1]:'ID_NOT_FOUND';const%20lineItemElements=card.querySelectorAll('._LineItemContainer_y6zui_22');const%20itemDetails=[];lineItemElements.forEach(itemEl=%3E{const%20quantityElement=itemEl.querySelector('.Polaris-Tag__Text%20.Polaris-Box%20span');const%20quantity=quantityElement?quantityElement.textContent.trim():'N/A';const%20productNameElement=itemEl.querySelector('h3%20a');const%20productName=productNameElement?productNameElement.textContent.trim():'N/A';itemDetails.push(%60${quantity}%20x%20${productName}%60)});const%20detailsString=itemDetails.join('%20|%20');htmlContent+=%60%3Cdiv%20style=%22margin-bottom:%2015px;%22%3E%3Clabel%20style=%22display:%20block;%20font-weight:%20bold;%20margin-bottom:%205px;%20font-size:%2014px;%20color:%20#1e3a8a;%22%3EFulfilment%20${fulfillmentCount}%20(${detailsString})%3C/label%3E%3Cinput%20type=%22text%22%20value=%22${fulfillmentId}%22%20readonly%20style=%22width:%20100%;%20padding:%208px;%20border:%201px%20solid%20#ccc;%20border-radius:%204px;%20box-sizing:%20border-box;%20background:%20#f0f4f8;%20font-family:%20monospace;%20font-size:%2015px;%22%20onclick=%22this.select();%22%3E%3C/div%3E%60;fulfillmentCount++});htmlContent+='%3Cbutton%20onclick=%22document.getElementById(\'shopify-copy-modal\').remove()%22%20style=%22width:%20100%;%20padding:%2010px;%20margin-top:%2015px;%20background:%20#5c6ac4;%20color:%20white;%20border:%20none;%20border-radius:%204px;%20cursor:%20pointer;%20font-size:%2015px;%20font-weight:%20bold;%22%3EClose%3C/button%3E';htmlContent+='%3C/div%3E';const%20modal=document.createElement('div');modal.id='shopify-copy-modal';modal.style.cssText='position:%20fixed;%20top:%2020px;%20right:%2020px;%20z-index:%2099999;%20max-width:%20500px;';modal.innerHTML=htmlContent;document.body.appendChild(modal);const%20firstInput=modal.querySelector('input');if(firstInput){firstInput.select()}})()```