Discuss and resolve questions on Liquid, JavaScript, themes, sales channels, and site speed enhancements.
Hello,
I am trying to query productvariants based on a certain metafield value using GraphQL.
I have tried the following but it returns a "Field 'metafields' doesn't accept argument 'query'" error.
query { shop { name products(first: 100, query:"") { edges { cursor node { id title handle variants(first:100) { edges { node { id title metafields(query: "key: ean") { edges { cursor node { id namespace key value } } } } } } } } } } }
Is there any way to accomplish this?
Thanks.
Hi, @WouterBouwman,
This is Evita from On The Map.
Meta fields don't have query argument.
You can try to use metafield(namespace: "example", key: "ean") .
Read the Docs here: https://help.shopify.com/en/api/guides/metafields/admin-api-metafields#retrieving-metafields
Best,
Evita
Hi @OTM (Evita),
Thank you for your response.
Are you saying that there is no way to filter the results based on a metafield value?
Using 'metafield(namespace: "example", key: "ean") ' only returns a specific metafield.
Thanks.
Hi - I'm also interested in this. I want to add custom values to products (e.g. mark a product as "needing review"), and am not sure where I can add that information other than in the metafields. However if I add the information to the metafields, I can't make queries to pull all products that need review.
Hi people, did you happen to find a solution or a workaround to this problem?? I also want to be able to fetch product variants by metafield value.
Why? I want to store my wholesalers internal product id as "wholesaler_product_id" in a metafield for each product. Then, I can use that number for forwarding dropshipping orders and syncing stock levels.
While this won't help with filtering variants, you can filter products using a product tag. For example:
query MyQuery {
products(query: "tag:needs-review", first: 5) {
nodes {
id
title
images(first: 1) {
nodes {
url
}
}
variants(first: 1) {
nodes {
id
price
}
}
}
}
}
Wont work.
Cant use 'key'
'namespace' is usable.
Seems like shopify has tried to hobble any attempt to actually make use of metafields from graphql.
A perfectly reasonable query would be to get some product info and metafields of those products with a key value of "monkey"
e.g.
query {
products(first:40) {
edges {
node {
title
metafields(first:20 key: "monkey") {
edges {
node {
namespace
key
value
}
}
}
}
}
}
}
BUT NO! graphql errors:
Field 'metafields' doesn't accept argument 'key'
This works using namespace.
query {
products(first:40) {
edges {
node {
title
metafields(first:20 namespace:"football" ) {
edges {
node {
namespace
key
value
}
}
}
}
}
}
}
Let me guess, I need the 2k a month plan....
Metafields are totally broken in shopify. All these posts are so old.
Is anyone still developing at shopify?
Learn how to expand your operations internationally with Shopify Academy’s learning path...
By Shopify Feb 4, 2025Hey Community, happy February! Looking back to January, we kicked off the year with 8....
By JasonH Feb 3, 2025Expand into selling wholesale with Shopify Academy’s learning path, B2B on Shopify: Lau...
By Shopify Jan 28, 2025