Confused about shopifyProduct.status enum (lowercase vs uppercase)
I just upgraded my API version from 2024-10 to 2025-07. Changelog said that three new all-caps values would be added to the enum status field.
But I can't find that these are being used?
- Created a new product in Shopify => synced via webhook => status is
active
- Deleted product in gadget; manually synced store => status is again active
(this should have been gql sync)
Is there any scenario of it ever being uppercase?
Do I need to change my code to the potential scenario of it being ACTIVE
?

14 Replies
Hello,
I think that this is a case of webhook vs sync. The same issue happens with shopifyOrder fulfillmentStatus. For some reason, Shopify chose to make the enum casing inconsistent. You might not see the values as the same case in the database but you'll have to account for it in code
But it looks like gadget fixes those on the fly to lowercase? As I wrote above, even after manual sync its lowercase.
Thats not us. We don't change anything that we get from Shopify. It just comes in as lowercase from the sync
Hmm. Alright, let's leave it at that. If I make a direct gql call from an action to shopify it comes back ACTIVE. If I use shopify sync it comes back "active" (unexpectedly). Both using graphql. According to shopify docs it can only be ACTIVE if using graphql. So I feel like gadget's doing something in between. You could try replicate it by deleting a product in gadget and running a sync yourself. Anyways, I'll account for both then.
We have made a point not to do anything between Shopify and the database but I'll double check with the team.
Cool. I mean I'd very much prefer if they'd be all lowercase haha
I'm personally seeing everything as lowercase
Webhook and sync
Alright, tested:
- webhook: lowercase
- sync: lowercase
- graphql request: uppercase
This suggests that we manipulate the value when syncing
Making a ticket internally to change this (sorry but we don't want to editorialize)
Okay got it. Then I'll prep for that.
By the way, somewhat related but even more confusing is order.financialStatus: https://discord.com/channels/836317518595096598/1416383865639141426/1416383865639141426
This one is us not doing anything in the middle which is what I would have personally expected from our sync logic.
Basically we are just holding true to what Shopify is doing in their APIs
Even stranger on shopify’s side 😳
Has this issue been resolved for you?
Yeah, thanks for allt he clarification! I'm just re-assigning to lowercase now in .update and .create - just to be safe.
In that case, I'm going to close this thread. Feel free to reopen it by writing a message
Do you like this answer?