Is_price_reduced query not working on products

The is_price_reduced query parameter on the products query isn’t working. It doesn’t seem like the match is working at all.

For example (query),

{
  products(first: 2 query:"is_price_reduced:true") {
    nodes {
      id
      variants(first: 5) {
        nodes {
          price
          compareAtPrice
        }
      }
    }
  }
}

Results:

{
  "data": {
    "products": {
      "nodes": [
        {
          "id": "gid://shopify/Product/4288600637512",
          "variants": {
            "nodes": [
              {
                "price": "4.83",
                "compareAtPrice": "4.83"
              }
            ]
          }
        },
        {
          "id": "gid://shopify/Product/4288600703048",
          "variants": {
            "nodes": [
              {
                "price": "3.08",
                "compareAtPrice": "3.08"
              }
            ]
          }
        }
      ]
    }
  },
  "extensions": {
    "cost": {
      "requestedQueryCost": 8,
      "actualQueryCost": 6,
      "throttleStatus": {
        "maximumAvailable": 2000,
        "currentlyAvailable": 1994,
        "restoreRate": 100
      }
    },
    "search": [
      {
        "path": [
          "products"
        ],
        "query": "is_price_reduced:true",
        "parsed": {
          "field": "is_price_reduced",
          "match_all": "true"
        }
      }
    ]
  }
}

One would think that these products should not be returned, since their price is the same as the compare at price?

Anyone have luck with this query?

Hi Ozzy,

When I run the same query, I am seeing products where price < compare at price, which is expected:


Did you test this in the GraphiQL app?

Hi Liam,

Thanks for reaching out! Yes, I have been testing this in the GraphiQL app.
Still unable to get it to work - using it on 5 different Shopify stores (4 in production and 1 dev store). Same result with all stores (inconsistent results).

For example;

Sure, the first one would apply. But the next 4 products are not on sale and are returned.

Thanks,
Matt

Still having this issue on the latest version (2025-01).

is_price_reduced is giving me very strange results.

You can see the some results are indeed “price reduced” even though I the query is set to false.

And when I change the query to ask for the ones that are price reduced, I get a mix bag (most of which are not price reduced).

I would really love to use this query on products, but it isn’t reliable at all.

When looking at the productsCount query it is saying that I only have 15 of my 36,000 products that are not price reduced…

It looks like it may only be finding products that have a compareAtPrice set to null? But this doesn’t seem to fit what the query should do.

Hey Ozzy,

I’m sure not able to replicate this on my test store - even with products that have variants which don’t have any compareAtPrice (so it would be set to null). If you remove the active inventory condition in the last example, are you still seeing results where there are variants with no compare at price being returned?

Hi Liam, Thanks for getting back to me.

Ya the active inventory doesn’t seem to affect the results.

I am using Markets on my store. I thought this may have something to do with it, but after running some tests, I can’t find anything in common with the items that are returned with “is_price_reduced:true”.

Here is a sample request that I did for a single item. I even went into edit the item. Placed both compareAtPrice and Price to the same value (2.07) and saved the item.

I still get the item returned when setting “is_price_reduced:true”.

Body:

{
    "query": "{\n  products(query: \"is_price_reduced:true sku:CEAERHOLLY\" first:10) {\n    nodes {\n      variants(first: 10) {\n        nodes {\n          sku\n          compareAtPrice\n          price\n        }\n      }\n    }\n  }\n}"
}

Response:

{
    "data": {
        "products": {
            "nodes": [
                {
                    "variants": {
                        "nodes": [
                            {
                                "sku": "CEAERHOLLY",
                                "compareAtPrice": "2.07",
                                "price": "2.07"
                            }
                        ]
                    }
                }
            ]
        }
    },
    "extensions": {
        "cost": {
            "requestedQueryCost": 30,
            "actualQueryCost": 5,
            "throttleStatus": {
                "maximumAvailable": 2000,
                "currentlyAvailable": 1995,
                "restoreRate": 100
            }
        },
        "search": [
            {
                "path": [
                    "products"
                ],
                "query": "is_price_reduced:true sku:CEAERHOLLY",
                "parsed": {
                    "and": [
                        {
                            "field": "is_price_reduced",
                            "match_all": "true"
                        },
                        {
                            "field": "sku",
                            "match_all": "CEAERHOLLY"
                        }
                    ]
                }
            }
        ]
    }
}

Request ID: 5283b2ea1b681e46d99fb4689ad7418e

I appreciate you looking into this. I’m happy to provide more details, or access to our store.

Could there be any other apps on this store that would impact compareAtPrice?

We have some apps that write to this field, on occasion. But they are only installed on some of the stores (not all of them).

I’m not sure how that would affect the query if the values of price and compareAtPrice remain the same.