Shopify Orders API response fields are inconsistent

New Member
2 0 0


I'm a developer working on ingesting Shopify data via API to build ETL scripts for a data warehousing project of which Shopify is a key data source. I am iterating through all orders via the pagination page token. I've noticed that the Orders API is inconsistent in the fields that is returned in the response. Empty fields are fine but when fields are entirely missing, they break the ETL scripts as I am expecting those fields to be ingested. I've noticed this happening on several fields, some of which may be explained and I've opted to remove them from being ingested but others are entirely unexplainable and should be in the responses at all times.


I've noticed this issue so far with these fields: 

  • origin_location within the line_items nested object of an order object - this is mentioned in the documentation, and I see no reason why the field should ever be missing in the response.
  • client_details within an order object - this is mentioned in the documentation, and I see no reason why the field should ever be missing in the response.
  • destination_location within the line_items nested object of an order object - I started ingesting this field since I noticed most of the responses include this field; however, the field is not explicitly mentioned in the documentation, which may explain its inconsistency.
  • payment_details within an order object - this field is mentioned to be deprecated in the documentation but I still see it returned in most responses, albeit inconsistently as it is probably due to being discontinued altogether soon.


For destination_location and payment_details, I could surmise reasons why they are not consistently returned but it is extremely frustrating to see origin_location and client_details to be missing in some responses as these are fields explicitly called out in the documentation that should be supported. If these fields are missing because there is no information regarding those fields for an order, that's fine for the fields to exist and be empty but I find it a very bad practice for the fields themselves to be missing altogether as it can have a number of consequences for ETL scripts. This puts the reliability of Shopify APIs to be doubtful. If anyone is aware of this bug, please let me know that it's being addressed.