How to implement Google's new out of stock rules?

Has anyone come across this yet from Google for their updated best practice for out of stock products?

https://support.google.com/merchants/community-video/418238108/google-merchant-center-just-changed-the-rules-for-out-of-stock-products

It feels like a hugely clumsy UX/UI step to say the least but for many retailers who use things like Apple/Android pay, Shopify dynamic buttons etc disabling those isn’t an easy matter as best I can tell.

Any advice on how I might implement this in my theme code for the dynamic payment buttons?

The fix that worked for us was wrapping the payment_button output with an availability check. In Dawn (or themes based on it) it’s in snippets/buy-buttons.liquid - look for {{ form | payment_button }} and wrap the surrounding container:

{% if product.selected_or_first_available_variant.available %}
  {{ form | payment_button }}
{% endif %}

Same idea at the variant level. If you use a section that swaps state on variant change, the payment_button block re-renders so the JS picks it up automatically when an OOS variant is selected.

The trickier part is feed-level. Google’s update mostly checks the rendered product page, but if your product feed still sends availability=in_stock while the page shows sold-out, that mismatch is what trips the misrepresentation flag. Worth checking your Google Shopping feed sends availability=out_of_stock on the variant level, not just hiding the CTA visually.

What theme are you on? The exact file location depends on it.

Good topic to raise — this one is catching a lot of Shopify merchants off guard right now.

Google rolled out this update on March 19, 2026, and the core change is that if a product is marked as out of stock in your feed, the landing page must show a visibly grayed-out, disabled buy button. Both active buy buttons and hidden buy buttons are now non-compliant. So the old approach of just removing the button entirely doesn’t fly anymore either.

The good news for Shopify specifically — Shopify’s default behavior already grays out the buy button and shows “Sold Out” when a variant is at zero inventory, as long as you have inventory tracking enabled. One thing worth checking though — sometimes custom JavaScript in a theme quietly overrides that default sold out behavior without you realizing it. If you’re unsure, open your product-form.liquid or buy-buttons.liquid file and just make sure the disabled state is actually being applied when stock hits zero.

For the dynamic payment buttons like Apple Pay and Shop Pay that you mentioned, the fix lumine shared above is the right approach — wrapping the {{ form | payment_button }} output in a Liquid availability check so those buttons only render when the variant is actually in stock. On themes that update on variant change, the block re-renders automatically when someone selects an out of stock option, so that part should handle itself.

The feed side is equally important though and worth double checking. If your product feed still sends availability=in_stock while the page shows sold out, that mismatch is exactly what triggers the misrepresentation flag. Google’s Inaccurate Availability policy has identified a non-functional buy button as one of the primary triggers for a violation since September 2021 — but the March 2026 update makes it far more serious, with patterns of non-compliance now potentially leading to account-level suspension rather than just individual product disapprovals.

Also worth knowing — the official Google documentation actually gives you a bit of flexibility here. For out of stock products you can either display clear text like “sold out” or “item not available,” or use a disabled/grayed out buy button. If the page has multiple variants, you can also disable specific options in the selection grid to indicate they are unavailable. So it’s not strictly one-size-fits-all as long as the availability is clearly communicated and matches your feed.

What theme are you running? That would help narrow down exactly which file to edit.

Hello there @welcomebrand

Google’s revised policy is definitely causing headaches for shops that have implemented dynamic checkout buttons. A pragmatic solution is to enable/disable the dynamic payment button based on variant availability and keep the product page active with an explicit out of stock message.

In most Shopify themes this can be done by adding a variant availability check in the product form and lining the dynamic checkout button is only shown if the variant is available. Don’t forget to test variant switching, accelerated checkout methods, and any custom product apps you may be using, to make sure the button state is updating as you expect.