When a price difference needs attention
An import or edit can turn 29 into 290 or 2.90. If that is an error, it can deter a purchase or sell the product below its intended price. The same ratio can also be correct for a pack of ten. The price difference alone cannot distinguish these cases.
For example, four single mugs at 30 and one six-pack at 180 trigger this check. Each mug still costs 30. Keep the six-pack price and dismiss the finding if that is the intended offer. A premium material, capacity or specification may also explain a price difference.
How to find variation price outliers manually
Variations are rows in wp_posts with
post_type = 'product_variation', and the regular price
sits in wp_postmeta under _regular_price.
This WP-CLI query lists variations priced at least three times above
or below the average across the product, including the target variation:
wp db query "SELECT v.post_parent AS product_id, v.ID AS variation_id,
v.post_title, m.meta_value AS regular_price, s.avg_price
FROM wp_posts v
JOIN wp_postmeta m ON m.post_id = v.ID AND m.meta_key = '_regular_price'
JOIN (
SELECT v2.post_parent, AVG(m2.meta_value + 0) AS avg_price
FROM wp_posts v2
JOIN wp_postmeta m2 ON m2.post_id = v2.ID AND m2.meta_key = '_regular_price'
WHERE v2.post_type = 'product_variation' AND v2.post_status = 'publish'
AND m2.meta_value + 0 > 0
GROUP BY v2.post_parent
) s ON s.post_parent = v.post_parent
WHERE v.post_type = 'product_variation' AND v.post_status = 'publish'
AND m.meta_value + 0 > 0
AND (m.meta_value + 0 >= s.avg_price * 3 OR m.meta_value + 0 <= s.avg_price / 3)
ORDER BY v.post_parent;"
Adjust the table prefix if yours isn't wp_. The
+ 0 casts the text meta value to a number.
This works, with two gaps. It compares against an average, and a single misplaced decimal drags the average so far that the outlier can hide behind it — or a normal sibling gets flagged instead. And it answers once: the next import can reintroduce the same slip the day after you fix it.
How CatalogLift finds it
The scan walks every published variable product in the synced catalog and reads the regular price of each of its published variations — variations that are drafts, stale, or priced at zero do not take part, because a sibling priced at nothing would drag the median and invent outliers. At least five published variations with positive regular prices must remain before the product is checked.
Instead of a mean, CatalogLift uses the median and the median absolute deviation of the product's prices, including the target variation. A price must be at least three times above or below the median and have a modified z-score above 3.5. When the median absolute deviation is zero, a ratio of at least five is required instead. These limits reduce small differences; they do not identify pack quantities or distinguish a premium from an error. Each finding is raised at medium severity and carries the parent product, the variation's attributes, its price, the sibling median, the number of siblings and how many times away from the median it sits.
Check the offer before entering a price. Dismiss an intentional difference with a reason. For a confirmed error, supply the correct price and authorize the change through the panel or a connected agent. CatalogLift writes it to WooCommerce and re-scans. AI does not choose the price, and the comparison median is not a recommended selling price.