Price and availability are the attributes that change most and the ones that cause the most disapprovals and wasted money when they lag behind: an out-of-stock product that keeps being advertised pays for clicks with no sale; a discount the feed does not reflect shows an expensive price and loses the click. This lesson covers the tools that keep the feed moving at the shop's pace.
The three tools
| Tool | Frequency | What for |
|---|---|---|
Partial price/stock feed (a file with id, price, sale_price, availability) on a schedule |
Several times a day | Catalogues with medium turnover; the full feed stays daily |
| Content API (pushing changes) | Immediate | Large catalogues or ones with continuous changes (marketplaces, fast fashion); requires integration |
| Automatic item updates (Google reads the page's structured data) | On crawl (hours) | A safety net: fixes what the feed did not update in time |
The typical combination: full daily feed + partial feed every 2-4 hours
- automatic item updates enabled. With the API, the partial feed is redundant.
Sales with a scheduled sale_price
sale_price + sale_price_effective_date (start/end date) let you
schedule the discount: the reduced price is shown only within the
window, without touching the feed on the day of the sale. Requirements:
the page must show the same reduced price during the same window; the
"sale" annotation requires a base price that was genuinely charged for a
prior period. For sale campaigns (Black Friday, seasonal): feed with
sale_price scheduled a week ahead, landing page ready and, in
Shopping/PMax, budget and target adjusted before the peak (module 9 of
Intermediate).
Stock by warehouse and partial availability
- Availability is global per product in the online feed; if stock is spread across warehouses, the rule is "it exists if it can be shipped to the feed's country/area".
- Products with low stock (1-2 units): consider marking them unavailable in the feed before they run out at checkout, or lowering their bid via a label.
- Backorder / preorder with
availability_date: advertisable, with the lead time visible. - Variants: availability per variant (a sold-out size 42 should not show even if size 41 is still there).
Not advertising what is running out: the circuit with bidding
A product that sells out at midday pays for clicks until the next feed. The recommended circuit:
- Stock < threshold →
custom_label"low_stock" (via a rule or the API). - In the campaign, the "low_stock" group with a high ROAS target or excluded.
- Stock = 0 →
availability = out_of_stockin the partial feed or via the API within minutes. - Restocked → it comes back on its own.
Shopping Ninja spots the fingerprint of the opposite case: products that keep receiving clicks with no sales after a stock or price change.
Validating freshness
Every week: a random sample of 20 products, comparing price and availability in the feed, in Merchant and on the page. Merchant diagnostics: disapprovals for price/availability (if they rise, the frequency is not enough). And the figure that sums it all up: the average time between a change in the shop and the change in Merchant — the target is under an hour in high-turnover catalogues.
Typical mistakes
- A full feed once a day in a shop with daily discounts.
- A price excluding VAT in the JSON-LD and including VAT on screen: automatic updates "correct" it to the wrong price.
sale_pricewith no dates: the sale never ends (or Google ignores it).- Global availability when stock is per variant.
- Relying on automatic updates alone (they are a safety net, not a system).
💡 Ninja trick: the partial price and stock feed is also the cheapest way to automate dynamic labels (low stock, active discount, margin recalculated with the new price) without touching the full feed: a four-column file, generated by the shop every hour, that Merchant rules turn into campaign structure.
What you should remember
- A partial feed several times a day or an immediate API, plus automatic updates as a net.
sale_pricewith dates to schedule discounts; matching landing page.- Availability per variant; low stock labelled and given a high target or excluded; sold-out items pulled within minutes.
- Measure the shop → Merchant time; target under an hour.