I have a simple requirement. I need to stop a third-party app from grabbing orders until I am ready for them to go. The software (Zenstores) checks every 30 minutes or so. It brings in anything paid/partially paid and unfullfiled.
Before they go to Zenstores, I need to run a test on the order data first. So I need to make sure during this period, Zenstores doesn't grab them.
The only thing I can do at the moment is set a fulfillment status to fulfilled, which should stop it (I've not tested it on the live site yet).
But I'd rather it didn't say fulfilled - I'd rather it said Checking or something.
I simply cannot find a way to do this, but I know it can be done because there are apps in the store that add custom statuses.
But the apps are no good to me because I can't control them from my app or via the API.
Can anyone please advise how I can change either the transaction or fulfillment status label to something other than the standard ones?
Ok, got this sorted. Thanks to an unnamed (for his protection ;) ) dev who - whilst not directly answering my question, which is fair enough as he sells an app that partially does this (but also a lot more) - gave me enough encouragement whilst emailing him to finally realise what to do!
It seems, unless I'm mistaken, that you can't actually edit the statuses directly. You can only use the ones Shopify has.
But, what you can do, is set either tags or metafields and then change the theme to display them instead if they exist (or, if not, fallback to the original).
I needed to change the files templates/account.liquid and templates/order.liquid
So, for my use I have a webhook setup for a new order creation. I use the API to set the order fulfilment status to fulfilled, temporarily. This will stop Zenstores bringing the order in because it will think it's already been fulfilled.
But at the same time I am setting a metafield for MY fulfilled_status to 'my custom status'.
Then, if the customer looks at their account, they will see ''my custom status', if it is set, or the original value if not.
Once I've done what I need to do, I can then reset the real fulfillment status back to unfulfilled, and remove the metafield.
I could use tags instead, but I have more than one possible value in this field, so I think one metafield is cleaner, although I'll probably have to put on tag too, so the admin users can see what is happening (I don't think there is a way to display metafields on the admin pages?)
I've done most of this so far, but not totally finished and testing. If I hit any snags, I'll update this thread.
Hope this is useful to someone in the same position I was in. I searched the forums a lot and didn't find an answer to this before (maybe I just missed it though).
ps. if the dev wants a mention for his app, happy to do so, but didn't want to mention his name without checking.