Has there been a change to the format of webhook headers? Docs show these as camel case, but as of 7PM GMT yesterday some are now in lower case?
We see the same letter case change.
HTTP headers are case insensitive. This isn’t anything specifically for Shopify, it’s HTTP in general. Clients can receive different casing depending on many factors. The best way to make your app future proof is to make it HTTP compliant and compare headers case-insensitive: for example, each app should treat Content-Type
and content-type
and Content-type
the same.
Yes realise that now, but why did you make a sudden change without informing your customers. Causes unnecessary work and a loss of confidence and trust in Shopify
IMHO, it would be great if Shopify gives prior notice for behavior change like this.
- It is about the principle of least astonishment. Shopify sent
X-Shopify-Api-Version
in header for many years. The document useX-Shopify-Api-Version
. It is very reasonable to assume Shopify would publish an upcoming changelog / update the doc before such a change. - For apps that handle headers in a case sensitive way it is a breaking change to them. No matter how technically correct it is, it breaks thing without noticing people.
- Most importantly, when apps are down because of this, merchants and shoppers are affected.
Agree - Shopify are not taking this seriously. This was what the support agent sent me:
It happened today, but no worries at all—it was fixed within an hour! The update was regarding the x-shopify-topic instead of X-Shopify-Topic, which aligns with the concern you mentioned earlier. Everything is back on track now!
But it was within an hour of you noticing, it affected orders we received for 16 hours.
Things like this just erode confidence and trust in Shopify. Not good enough.
We got bit because we are accessing the headers as entries in a dictionary. This is a bit clunky but should prevent further issues if Shopify decides that conforming to the HTTP standard is sufficient:
def findHeader(__thekey, __thedict):
for key in __thedict.keys():
if __thekey.lower() == key.lower():
return key
return __thekey
# Capture required headers
validation_hmac = headers.get(findHeader('X-Shopify-Hmac-Sha256', headers),'')
shopify_webhook_id = headers.get(findHeader('X-Shopify-Webhook-Id', headers), '')
shopify_store_domain = headers.get(findHeader('X-Shopify-Shop-Domain', headers),'')
We are also facing the same issue since 3:00 IST. Some webhook headers that were previously in camel case (as per the documentation) are now appearing in lower case.
Has anyone else noticed this change? Is this a confirmed update from the platform, or could it be a temporary issue? It would help to know if this is final so we can adjust our implementation accordingly.
Looking forward to insights from the community or confirmation from the platform team.
Hey folks - this should have been resolved / reversed. If you’re still seeing this, please let us know.
What - that makes it worse… I fixed it for the case you changed it to. Now I’ve got to change it again. For goodness sake…just leave it alone.