Join us for an upcoming Shopify Partner webinar on February 27, 2024. Discover the latest Checkout Extensibility features, and deep dive on improvements to Shopify Functions and Web Pixels. Register now for either the 10am EST or 2pm EST sessions.

Regularly update variant-level metafields via app/API

Shopify Partner
6 0 1

Hi there! This is my first time posting so please be gentle!


I have a Shopify store that sells a limited number of products, but I am looking to expand. I want to build a Shopify app that automates the process of generating a specific string for each product variant that will be saved as a variant-level metafield.


I can figure out the coding myself - I would just appreciate some high-level guidance on what exactly I need to build. This is my first time building an app, so any ideas are appreciated.


Summary of project:


Each product variant in the store needs to have a 'shipping message' metafield. This metafield is a string that will look something like this:


'Product ships in 4-6 business days'


The exact syntax and date-range of each variant's metafield will be determined by on the basis of a number of factors (product availability, product tags, certain other metafields). I have written the logic for generating this string - so I do not need any guidance on this front.


The aforementioned factors that determine the exact syntax and date-range of the string can change on a day-by-day basis. One of the metafields is updated regularly by a third-party app. A variant's availability can change when the product is sold out. I change product's tags fairly regularly too.


For this reason, I want to build an app that updates each variant's 'shipping message' metafield on a regular basis - perhaps every hour.


I have set up a basic embedded app using the Shopify CLI 3.0. Now I've done this, I'm a bit lost. Here is what I'm guessing I need to do:

1. Set up some kind of simple interface so that the app's user can select a collection that contains all the store's products. 

2. Once this collection has been selected, the ID of that collection will be used to retrieve a list of every product in that collection.


3. From there, each of each products' variant can be looped through.


4. Once at the variant-level, various information about that variant can be grabbed (product availability, product tags, certain other metafields). 


5. With this information, I would (i) generated each variant's shipping message using the pre-written logic, and (ii) replace its current 'shipping_message' metafield with the newly generated shipping message.


[repeat steps 2-5 every hour]



If anybody could give me any pointers, suggestions ideas about which APIs I should use, how they should be implemented, and any best practices that I should follow, I would be really grateful. 


Thanks for taking the time to read this!

Replies 2 (2)

Shopify Staff
1779 263 383

Hey @gut_und_gunstig 


That process sounds solid to me.


If the app is for your own store, you could skip the "select a collection" step / hardcode.


You'll want to use the Metafields API to create/update metafields. There's a product variant example on this page:


Good luck!

Scott | Developer Advocate @ Shopify 

Shopify Partner
6 0 1

Thanks very much for your help!