The compare-at price is the struck-through number shown next to a sale price. When it disappears, products stop looking discounted, and on some themes badges and sale collections stop working too.
What usually causes it
- A bulk edit or import wrote an empty value into the compare-at field.
- A sale tool moved the original price into compare-at at the start, then cleared it at the end instead of restoring it.
- A CSV import omitted the compare-at column entirely, which some import flows treat as blank rather than unchanged.
- Two tools ran against the same products and the second overwrote the first.
The third one catches people most often. Leaving a column out of an import is not always the same as leaving it alone.
Getting them back
- Export the affected products now, including variant IDs, price and compare-at price.
- Find the previous values in a pre-sale snapshot, an older export, or the sale tool's backup.
- Restore compare-at on a few products and check the storefront badge and any sale collection.
- Restore the remainder in batches, then re-check any automated collection that filters on discount.
Preventing it next time
Any tool that touches compare-at should snapshot the previous value first and restore it afterwards, rather than clearing the field. When you import a CSV, include the compare-at column explicitly even when the values are unchanged.
SaleGuard stores both price and compare-at price per variant before a sale begins, and restores both from that snapshot when it ends.
Check after every sale
Compare-at is easy to miss because the product page still looks fine — it just stops looking discounted. Add it to your post-sale checks.