What gets tested
On every sampled product page, the check reads up to three price sources: the visible price from the DOM (with selectors for Shopify, Shopware, WooCommerce and Magento), Offer.price from the Product JSON-LD and the price inside the view_item event in the dataLayer. Pages with at least two readable sources get compared; more than one cent of difference yields "to review", with page and values as evidence.
Why it matters
The tracking price feeds revenue reports, ROAS and smart-bidding. When the dataLayer reports 19 percent less than the page, Google Ads bids on wrong basket values and optimises toward wrong targets. Such errors rarely surface. The numbers look plausible, they just aren't right.
Common causes
- Net/gross mix-up: the page shows gross, the backend feeds net into the template.
- The dataLayer carries the strike-through or base price instead of the sale price.
- Variant selection updates the visible price but not the JSON-LD or the event.
- Discount logic runs only in checkout; the product page keeps reporting the old amount.