The properties that matter
name is required. offers is what makes the markup worth adding — without a
price there is nothing to enhance.
Inside offers:
priceas a number in a string, no currency symbol, a full stop for decimals regardless of localepriceCurrencyas an ISO 4217 code:USD,EUR,KGSavailabilityas a Schema.org URL
Keep it generated, not written
Product markup goes stale the instant a price changes, and stale price markup is worse than none — it is the case Google actively checks. Generate it from the same data that renders the page, so the two cannot drift.
This tool is for getting the shape right and for one-off pages. For a catalogue, put it in the template.
What it will not do
Product markup does not affect ranking. It changes how a result looks, which affects click-through. Sites that add it and see nothing usually added it to pages that were not ranking in the first place — the markup was never the constraint.
Questions
Will this show my price in Google?+
It makes the page eligible. Whether the price appears depends on the query, the site and Google's own judgement. Eligibility is necessary and not sufficient, and no markup changes that.
What if the price is wrong in the markup?+
That is the one thing to get right. A price in structured data that differs from the price on the page is a manual-action risk, and it is the most-checked property in the whole vocabulary. Generate it from the same source the page renders from.
Do I need review markup?+
Not for the price to show, and self-serving review markup — reviews you wrote about your own product — is explicitly against the guidelines. Only mark up reviews that genuinely exist and are visible on the page.
What does availability need to say?+
A Schema.org URL, not a word: `https://schema.org/InStock` or `OutOfStock`. Writing "in stock" as plain text produces a property that is silently ignored.