When will metaobjects be supported in Shopify Flow?
Topic summary
Support for interacting with metaobjects in Shopify Flow. Latest update: a new “Metaobject entry created” trigger is available to start workflows when new entries are added to a metaobject definition.
Current limitations and workaround:
- No built-in Flow action to create/update metaobjects. Recommended workaround is Send HTTP Request to the Admin GraphQL API using the metaobjectUpsert mutation.
- The team states there are no current plans for a dedicated update action due to the uniqueness of metaobjects and the complexity of generating a usable UI.
Use cases requested:
- Store and adjust a running “trees planted” total in a metaobject instead of a shop metafield.
- When a product is added to a metaobject list (variant grouping), automatically assign a corresponding product metafield.
- Trigger a static site build when metaobjects are updated (note: only a “created” trigger exists so far).
Troubleshooting notes for metaobjectUpsert:
- Ensure valid JSON (no trailing commas) and correct handle.type (metaobject definition name, e.g., “recipe”).
- Use valid handles and field keys (e.g., “ingredients”, not “recipe.ingredients”). Values like arrays may need to be JSON-encoded strings.
Status: Partially addressed (creation trigger added); no update action planned; requests for update triggers/actions remain open.
How are you looking to use metaobjects with Flow?
I use Flow to continuously count the total number of trees planted as a result of items purchased. Currently, the value is stored in a shop metafield (shop.metafields.mission.trees). I want to instead store it in a metaobject so that the client can adjust it if need be.
We don’t have an action for this yet, but in the meantime you could use Send HTTP Request to call the Shopify API to Update or Upsert a metaobject:
https://shopify.dev/docs/api/admin-graphql/2023-04/mutations/metaobjectUpsert
Just want to chime in and say this action would be very useful for me as well. Instead I’m going to have to build a whole custom app to do something that could be accomplished with a simple trigger/action in shopify flow
Can you elaborate more on what you would want to do with metaobjects in Flow?
@paul_n it would be useful for me in this case:
we are using metaobjects to group related products in a “variant group” so we can display links to products that look like variant selectors on the product page. It would be nice if Flow could handle an automated function where if a product is PLACED in a metaobject list, the product is automatically assigned a product metafield for that group so the shopify admin doesn’t have to do two steps. Right now they have to add the product to the metaobject list and then go into each product and add the metaobject to the product (since there is no way to reference a a metaobject if it isn’t assigned).
+1
Use case: I have a ssg frontend and I would like to trigger a build when metaobjects are updated.
+1 for this!
Hi Paul,
I am using metaobjectUpsert so it creates or updates the meta object
Getting error I have added all required fields on this
https://shopify.dev/docs/api/admin-graphql/2024-01/input-objects/MetaobjectUpsertInput
Send Admin API request
Attention
Early Access
25 Jul 2024 at 17:50
Mutation input evaluated to invalid JSON. Please ensure the input forms are valid JSON after the Liquid code is run.
metaobjectUpsert evaluated input may be handel I am using incorrectly?
{
“handle”: {
“type”: “text”,
“handle”: “Hoover-freestanding-fridge-freezers”
},
“metaobject”: {
“handle”: “Hoover-freestanding-fridge-freezers”,
“fields”: [
{
“key”: “or_see_more_choices.vendor_category_title”,
“value”: “Hoover Freestanding Washing Machine”
}
],
“capabilities”: {
“publishable”: {
“status”: “ACTIVE”
},
}
}
}
put that JSON in a JSON validator tool like this https://jsonlint.com/
Trailing commas are not allowed
Hi
Removed trailing comma
But still same error
You may have more in your mutation than you copied here. I don’t think whitespace should matter, but try copying exactly what is in that action now and sharing here using the code sample feature </>. Also share the error message.
hi
[image: image.png]
I don’t know what error your are getting, but I just ran a test with this and it worked:
{
"handle": {
"type": "recipe",
"handle": "scrambled-eggs"
},
"metaobject": {
"handle": "scrambled-eggs",
"fields": [
{
"key": "ingredients",
"value": "[\"eggs\",\"milk\"]"
}
]
}
}
It’s possible your handle is not a valid handle, if it has something like spaces/symbols in it. Or maybe your type isn’t correct. Or the key isn’t right.
FYI, the key seems to only accept “ingredients” and not “recipe.ingredients” so you may need to remove that first part of your key as well. When I have the full key, I get:
Mutation had user errors: “Field definition “recipe.ingredients” does not exist”
We recently released a Metaobject entry created trigger that should make it easier to trigger workflows when new entries are created on a metaobject definition.
I also have a need for this and interacting with the API is a lame “resolution” to this problem
A need for what? If you are referring to the ability to update a metaobject, we have no plans to offer a dedicated task for this currently as the solution in steps would be more difficult to use, because you need to handle programmatically building a list of fields to insert, and because each metaobject is completely unique so we could need to auto-generate a UI anyway and that would also be clunky.
