How to add Product schema in WordPress
A step by step way to add Product schema to a WordPress page so an AI engine reads your price, availability, and product name as facts instead of guessing from layout.
Your product page shows a price, a name, and an "in stock" badge. To you that reads instantly. To a machine it is a styled number, a styled string, and a colored pill, with nothing saying which is the price and which is the title.
Product schema settles that. This is how to add it, and how to keep it from lying to an engine three weeks later.
What Product schema does
Product schema is a block of structured data that labels the parts of a product: its name, its price, its currency, whether it is in stock. An engine reading raw HTML weights what it can identify with confidence. A price labeled as a price is a fact. A price in a pretty box is a number it might misread.
Product schema turns the second into the first.
Do the task
Step 1: Pick one real product page
The markup describes a single product. Choose a page with a genuine product name, a price, and an availability state that a reader can see. A category grid is the wrong place. A single product page is the right one.
Step 2: Write the Product JSON-LD
Build a Product object with name, description, and an Offer. The Offer carries price, priceCurrency, and availability. Take every value from the visible page so there is no gap between what a person sees and what a machine reads.
Step 3: Add it to the page
Wrap it in a <script type="application/ld+json"> tag. In WordPress, place it with a custom HTML block, a code-snippet plugin, or your product template header. It lives in the source, not on the screen.
Step 4: Validate
Run the page through a structured data validator. Confirm the Product and its Offer parse cleanly. A block that almost validates is a block an engine may skip.
Step 5: Keep the price honest
This is where Product schema fails in real life. You run a sale, the page price drops, the markup keeps the old number. Now a machine is quoting a price you no longer charge. Update both together, every time, or wire it to your real product data so they cannot diverge.
The old way and the new way
The old way leaned on WooCommerce or an SEO plugin to emit base Product schema and assumed that was enough. It covered the obvious pages and went stale on the rest, silently.
The new way checks each product page for whether the markup is present, valid, and still matching the live price. That is a sharper bar. "The store plugin does schema" is not the same as "this page is correct right now."
The honest part
If you sell services, not products, this is the wrong schema. Do not stretch Product onto a consulting page to look complete. The wrong label is worse than a missing one, because it tells a machine something untrue with confidence.
And adding Product schema does not make any engine recommend you. It makes your price and name readable. Whether ChatGPT, Perplexity, Gemini, or Claude then names your product is something we measure and report, never something we guarantee. The automated apply, with a preview and a per-fix approval, runs only through the connected Citedon plugin on WordPress. On other platforms the scan still tells you what is missing, and you paste the block yourself.
Where to start
Run a free scan on your top product page. It shows whether an engine finds Product schema, whether the Offer is valid, and whether the labeled price still matches the page. Fix the page that drives the most revenue first.