sale_price
The discounted price for promotional periods, alongside `sale_price_effective_date` for the start/end window. Only set during actual promotions — a permanent sale_price tells the algorithm this is always discounted, dampening the urgency signal.
Also known as: promo_price , discount_price
Channel support
| Channel | Status | Field name | Notes |
|---|---|---|---|
| Google Merchant Center | Optional | sale_price | — Docs → |
| Meta Commerce Manager | Optional | sale_price | — |
| TikTok Shop | Optional | sale_price | — |
| Pinterest Catalog | Optional | sale_price | — |
| Amazon | Optional | sale_price | — |
| Bing Merchant Center | Optional | sale_price | — |
Why it matters
When set correctly, sale_price triggers strikethrough pricing in Shopping placements, sale badges in Meta Advantage+ creative, and 'discount' filtering on Pinterest. Set incorrectly (permanent, or higher than price), it does the opposite — channels suppress the listing or treat it as fraudulent.
`sale_price` is the single most misused field in promotional catalogs. The pattern that works: set sale_price only when there's an active promotion, pair it with `sale_price_effective_date` to mark the window, clear both when the promotion ends. The pattern that fails: leave sale_price set permanently as a marketing tactic — channels treat permanent sale_price as "this is always discounted" and dampen the urgency signal, suppressing the listing's eligibility for promo-tag placements.
Channels show strikethrough pricing only when sale_price is genuinely a discount from price. The minimum effective discount is around 5% — below that, the visual strikethrough doesn't render in most placements because the difference isn't compelling. The maximum sensible discount before triggering "suspicious price" classifiers is roughly 70-80% — anything more dramatic gets flagged for counterfeit or pricing-error review.
The operational discipline that pays off: schedule promotional pricing via sale_price_effective_date rather than manual flipping. Load BFCM discounts into the feed two weeks in advance with the date range set; let the date control activation; don't rely on someone updating the feed at midnight on the start date. This separates the promotional plan from the execution, which means promotional plans actually happen as planned.
Format rules
-
Same format as price field: 'amount CURRENCY'
Applies to: Google Merchant Center, Meta Commerce Manager, Pinterest Catalog, Bing Merchant Center
-
Must be lower than price — equal or higher prices are rejected
Applies to: Google Merchant Center, Meta Commerce Manager, TikTok Shop, Pinterest Catalog, Amazon, Bing Merchant Center
-
Must match the landing-page sale price exactly
Applies to: Google Merchant Center, Meta Commerce Manager, Pinterest Catalog, Bing Merchant Center
-
Pair with sale_price_effective_date when the promotion has a defined window
Applies to: Google Merchant Center, Meta Commerce Manager, Pinterest Catalog
Valid examples
19.99 GBP When the regular price field shows 29.99 GBP
Cleared (empty) When the promotion ends, blank it out — don't leave the old value sitting there
Common mistakes
29.99 GBP (when price is also 29.99 GBP) Equal to price — must be lower
39.99 GBP (when price is 29.99 GBP) Higher than price — backwards
0.01 GBP Absurd discount fires Google's anti-fraud flag
Related fields
price The product's standard selling price including the currency code. The single field every shopping channel reads first — wrong prices, wrong currency, or mismatches against the landing page break delivery outright.
Read moreavailability Whether the product can be bought right now. Channels suspend out-of-stock items from delivery automatically — provided the field actually flips when stock hits zero, which is the operational problem most catalogues quietly carry.
Read moreCommon issues involving this field
Related tools
FAQ
Should I leave sale_price set after a promotion ends?
No. Clear it. A permanent sale_price tells the algorithm 'this is always discounted,' which suppresses the urgency signal and dampens click-through. Channels prefer clean transitions between regular and promotional pricing.
Can I use sale_price_effective_date for a future promotion?
Yes. Set the start/end window and the discount only activates within that window. Useful for scheduled launches like Black Friday — load the discount into the feed in advance, let the date control activation.
What's the minimum discount channels will display?
Around 5% — below that, channels often don't show strikethrough pricing because the visual difference isn't meaningful. Discounts under 2% sometimes get suppressed entirely.
Last reviewed: 26 May 2026
Why wait? Try it free today.
Stop managing feeds manually. Start optimising with AI in 30 seconds.
- Free plan, no credit card required
- 1 brand, 1 feed, 100,000 products per feed
- Full AI Product Optimisation, Rule Engine, and 200+ channel exports
- Pay only for AI credits when you need them