Available for projects & agency overflow · Quick reply, from the person who does the work

Sale prices, shipping and availability in a product feed

Three product feed attributes account for most of the rejections and incorrect listings I fix: the sale price (sale_price), shipping cost and time (shipping), and availability. These aren’t minor attributes: badly filled in or out of sync with the real site, they trigger a disapproval or show the buyer false information.

Describe my issue Send a message

The situations I handle

  • A promotion that ended on the site but a sale price still showing in the ad
  • Shipping costs shown in the ad different from what’s actually charged at checkout
  • A product out of stock on the site but still advertised as available
  • A wrongly set promotion end date that makes the sale price disappear or reappear at the wrong time
  • Shipping costs that vary by country without the feed reflecting it
  • A Merchant Center disapproval pointing at one of these three attributes without knowing which to fix first

How I check these three attributes

  1. Checking the sale price and its dates

    I check sale_price matches exactly what’s actually charged at checkout, and that sale_price_effective_date correctly frames the promotion’s validity period. An expired end date left in the feed shows a sale price that no longer exists on the site. I also check the UTC offset is written explicitly (+0200 on French summer time, +0100 in winter): without it, Google reads the dates as UTC and the promotion ends two hours early.

  2. Checking shipping costs and times

    I check the shipping sub-field and its components: the delivery country covered, the service offered, the price charged and the time announced. A feed that doesn’t detail these sub-fields by market shows identical costs for every destination, even when that isn’t true.

  3. Aligning availability with real stock

    I check availability reflects the product’s real state at the time Google crawls the page: in stock, out of stock, or preorder as appropriate, never a state frozen at the last feed generation.

  4. Cross-checking with the product page

    For each of the three attributes, I compare what the feed sends with what’s actually shown on the product page, including any schema.org markup that might contradict either one.

  5. Scheduling a regular refresh

    I make sure these three attributes, more than others, get recalculated at every feed refresh: they’re the ones that change most often on a live shop.

Why these three attributes cause the most trouble

Price, shipping and availability share one thing: they’re the attributes that move most often on an active shop, sometimes several times a day. A static attribute like description or image stays correct for months; these three go stale fast if the feed isn’t resynchronised at the same pace as the site.

  • sale_price with wrong dates shows a sale price after the offer really ended, or hides it before it starts.
  • shipping not broken down by country or service gives the buyer a wrong cost estimate before they even reach the site.
  • availability out of sync with stock gets a buyer clicking an ad for a product that’s no longer available.

In all three cases, the consequence goes beyond a technical disapproval: it’s a degraded buying experience that damages trust, even once the product does become available.

flux-google.xml
<item>
  <g:id>REF-0001</g:id>
  <g:price>39.90 EUR</g:price>
  <g:sale_price>29.90 EUR</g:sale_price>
  <g:sale_price_effective_date>2026-07-01T00:00+0200/2026-07-31T23:59+0200</g:sale_price_effective_date>
  <g:availability>in_stock</g:availability>
</item>

Related pages

Describe your need in one minute

A few targeted questions so I can reply with an estimate rather than another questionnaire.

outil
api
sens
frequence (facultatif)
Please provide an email or a phone number so I can get back to you.

Please provide an email or a phone number so I can get back to you.

Frequently asked questions

What’s the difference between price and sale_price?
price is the product’s normal price, sale_price the promotional price actually charged. Both need sending together for Google to show the sale price correctly.
What happens if sale_price_effective_date isn’t kept up to date?
The sale price can keep showing after the promotion really ended, or fail to appear on time when it starts, depending on the date set in the feed.
Do shipping costs need breaking down by country?
Yes, as soon as costs or delivery times genuinely vary by destination: the shipping sub-field lets you specify country, service, price and delivery time separately.
What values are expected for availability?
The attribute needs to reflect the product’s real state, typically in stock, out of stock or preorder, matching the stock shown on the page at the time Google crawls it.
Are these attributes the same across every feed platform?
The names and the principle are close from one platform to another, but each has its own format rules or accepted values, as shown on the Pinterest and Meta pages.