Querying productvariants by metafields in GraphQL

Querying productvariants by metafields in GraphQL

WouterBouwman
Tourist
4 0 3

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.

Replies 7 (7)

OTM
Shopify Partner
696 170 252

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

On The Map Marketing | Developing custom Shopify Sites & Apps is our thing

- Install our latest app Accessibly - Makes your store accessible for everyone, helps to avoid fines
- Inc 5000 | Shopify Parners | 20+ stores launched | 300+ active clients
- Need help with your Shopify store? Reach out to us!
WouterBouwman
Tourist
4 0 3

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.

swooders
Tourist
3 0 11

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. 

DavedelaIsla
Tourist
9 2 3

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.

R-Daneel
Shopify Partner
15 0 19

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
        }
      }
    }
  }
}

 

crussell42
Visitor
2 0 0

Wont work.

Cant use 'key'

'namespace' is usable.

crussell42
Visitor
2 0 0

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?