Product variant pricing mismatch with Google Merchant Center

#330381
  • Resolved Marco van Hattem
    Rank Math free

    Hi,
    From the 20th of January Google merchant center started to disallow products and the counter is still going up because of a price mismatch. What I can see is that it take the lowest price of the 5 variations I have for a particuar product eg. Therapeutic No Nits Essential Oil Blend – 10 ml
    https://aromasense.co.nz/store/no-nits-essential-oil-blend/?attribute_pa_size=10-ml

    The only thing I can see in the schema markup that has shows the lowest price is in aggregateoffer lowest price.

    Now this also happened from Jan 1 till Jan 5 and then all came good again.
    Any idea what this could be? I don’t recall the latest rankmath updates
    cheers
    Marco

Viewing 5 replies - 1 through 5 (of 5 total)
  • Hello,

    Thank you for contacting Rank Math, and sorry for any inconvenience that might have been caused due to that.

    Please refer to our changelog, to know about our latest updates:
    https://rankmath.com/changelog/page/3/

    As for variable Product pricing mismatch with Google Merchant Center, I looked at the source code of the URL shared and noticed the mismatch in the lowest price in the schema and the price output on the page.

    The lowest price in the source code is "lowPrice":"5.75" however on the page it is $25.00 which could be the reason for the mismatch.

    Please check the WooCommerce settings to make sure that the price you are inserting doesn’t include taxes or anything that could alter the price.

    Also, when you are adding/changing prices for each variation of the product, please let our plugin generate the schema automatically.

    As the plugin will also generate the aggregate offers and apply the low and high price values that would indicate to Google the price range.

    Please note, Google sees the price variants as you output them on your page, and the mismatch probably indicates the same, that it was found via a page crawl.

    Please let us know how that goes. Looking forward to helping you further.

    Thank you

    Thanks for your reply.
    Not sure what you mean when you

    The lowest price in the source code is “lowPrice”:”5.75″ however on the page it is $25.00 which could be the reason for the mismatch.

    The lowest price is 5.75 for that product and then there are 4 more prices and the one that I put in the feed for Google shopping ads is $25. The highest price is $178.50, so the aggregateoffer lowprice 5.75 and high price $178.50 in the schema markup is correct.
    But the price for the variable that is in the google feed is 25 in the feed and on the website.

    Any idea?

    Hello,

    Thank you for your patience.

    The method we use for the Schema markup is according to Google guidelines for the Product Schema: https://developers.google.com/search/docs/advanced/structured-data/product

    However, if you would like to modify that to show each offer and its data individually you can add and modify this filter to your particular needs:

    add_filter( 'rank_math/snippet/rich_snippet_product_entity', function( $entity ) {
        if ( ! is_product() ) {
            return $entity;
        }
    
        $product = wc_get_product( get_the_ID() );
        if ( ! $product->is_type( 'variable' ) ) {
            return $entity;
        }
    
        $variations = $product->get_available_variations();
        if ( ! empty( $variations ) ) {
            $offers = [];
            foreach ( $variations as $variation ) {
                $price_valid_until = get_post_meta( $variation['variation_id'], '_sale_price_dates_to', true );
                $offers[] = [
                    '@type'           => 'Offer',
                    'description'     => strip_tags( $variation['variation_description'] ),
                    'price'           => $variation['display_price'],
                    'priceCurrency'   => get_woocommerce_currency(),
                    'availability'    => $variation['is_in_stock'] ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
                    'itemCondition'   => 'NewCondition',
                    'priceValidUntil' => $price_valid_until ? date_i18n( 'Y-m-d', $price_valid_until ) : '2025-12-31',
                    'url'             => $product->get_permalink(),
                    'sku'             => $variation['sku'],
                ];
            }
        }
    
        $entity['offers'] = $offers;
    
        return $entity;
    } );

    You can change each property according to your needs and remove any properties that you donā€™t require for the offers.

    The filter should be added to your active themeā€™s functions.php file. Hereā€™s another way to apply the filter using the rankmath.php file:
    https://rankmath.com/kb/filters-hooks-api-developer/#adding-filters-and-hooks-in-rank-math-php

    Lastly, we also recommend that you read through this guide to learn more about the way Google tries to identify the price and the guidelines that you need to set for your prices on the website: https://support.google.com/merchants/answer/6324371

    I hope that helps.

    Thank you.

    Thanks a lot for that, really appreciated!
    Looked at GMC again today and it looks like Google changed its mind, only 1 product left with a price mismatch.

    Hello,

    Glad that helped.

    Please feel free to reach out to us again in case you need any other assistance.

    We are here to help.

    Thank you.

Viewing 5 replies - 1 through 5 (of 5 total)

The ticket ‘Product variant pricing mismatch with Google Merchant Center’ is closed to new replies.