hello@datascale.de+49 89 921 35 623tracked cookie-free · /openDEEN

Search services, integrations and blog posts.

DatascaleResourcesChecksPrice consistency

Check · C04 · Product & price data

Price consistency: page, JSON-LD and dataLayer compared

The check compares the visible price on real product pages with JSON-LD Offer.price and the dataLayer. Deviations distort ROAS and revenue reports.

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.

The fix

First settle the source of truth: the amount the customer pays per unit. Then feed all three outputs (page, JSON-LD, dataLayer) from that same backend value instead of three templates. Finally verify with GA4 DebugView and the Rich Results Test, on one product page with a sale price and one without.

Check it yourself first

The Tracking Check tests this point along with all the others, in seconds.

Start the Tracking Check →
What does the "price consistency" finding mean?

On at least one sampled product page, the price sources disagree: the customer sees a different amount than JSON-LD or the dataLayer report. The finding names the page and the measured values as evidence.

Is a deviation always a mistake?

No, which is why the finding reads "to review" and never critical. Some B2B shops deliberately track net while the page shows gross, and a strike-through price next to the sale price can catch the DOM heuristic. What matters is that the difference is documented and deliberate.

Which price belongs in tracking?

The GA4 convention is the amount the customer pays per unit, consistent with the event's currency. If you track net, do it uniformly and state it in reporting; mixed logic per template is the real damage.

The fix, delivered

Wired up in days, not sprints.

Findings from the Tracking Check go into a ranked sequence with effort estimates in the Audit Sprint, every module with an acceptance criterion.