Entities and Knowledge Graph

Product/Service Schema for Transactional Queries

When a customer asks Perplexity "how much does X cost" or "where can I book Y", the answer doesn't come from your sales site — it comes from data in a specific technical format that the AI knows how to read. If you only have plain text, then as far as the model is concerned your price and your availability simply don't exist: it answers with the data of the competitor who exposed them the right way. You're losing bookings silently, without knowing how many. Fixing it takes less than an afternoon.

Open Perplexity and type: “how much does a tour of Val d’Orcia for 4 people over 3 days cost”. Look at who gets cited in the answer, who ends up in the list of sources, and who is left out instead.

If your name isn’t there, you’re probably missing a technical piece that makes prices, availability and terms visible to anyone reading your page with an automated parser. And that piece has a name: Product/Service schema with Offer. Without it, the AI doesn’t find the data and answers the traveller “I don’t have precise information on prices”. A booking lost, silently, without you ever noticing.

In this article I explain why transactional queries (the ones with “how much does it cost”, “book”, “availability”) reward sites with readable structured data, what happens when it’s missing, and what you can do in one afternoon to change the situation.

What “schema for transactional queries” means

When a user asks ChatGPT or Perplexity the price of a service, the AI engine isn’t “reading your site” the way a human would. It’s looking for a structured piece of data: a `price` field, an `availability` field, an `areaServed` field. If that data exists in a machine-readable way, it makes it into the answer. If it’s only in your sales copy (“starting from just…”), the AI struggles to extract it with confidence.

In the world of knowledge graph research, this mechanism has been documented for a long time. Selvam and Kejriwal (2020) explain why schema.org has become one of the main inputs for search engines’ knowledge graphs:

“A particularly important source of data is schema.org markup in webpages.”

Selvam and Kejriwal, 2020

Translated: schema.org is the broadest and most pervasive structured-data source that engines use to build their representation of the commercial world. Not because it’s “pretty”, but because it’s uniformly readable across millions of pages.

The operational consequence is direct. If you sell a 3-day tour of Val d’Orcia at 1,800 euros for 4 people and that price is only in a downloadable PDF or in a marketing phrase (“custom packages on request”), then for the AI that data does not exist. For a competitor who exposes it in an `Offer` schema with `price: 1800`, it certainly does.

Why it sits upstream of AI answers (not downstream)

In the world of web data research, Selvam and Kejriwal (2020) clarify where this abundance of structured data comes from:

“Launched in the early 2010s by major search engines such as Google and Bing, schema.org was designed to facilitate structured (and even knowledge graph) search applications on the Web.”

Selvam and Kejriwal, 2020

Translated: schema.org was conceived in the early 2010s by the major engines to enable structured search applications — and knowledge graph applications — on the Web.

Translated into practice for you: today’s AI engines (ChatGPT with browsing, Perplexity, Gemini) are built on top of this very infrastructure. They’re not inventing a new way of reading prices. They’re using the semantic infrastructure that Google and Bing have promoted for 15 years. If your site ignores it, you’re not “not AI-optimised”: you’re outside the circuit the AI draws from.

This mechanism connects directly to how engines build the profile of your company as an entity — I talked about it in complete Organization schema and in author entity recognition: the organization entity is the container, Product/Service schema is the specific content.

Common mistake

Price only in the copy, never in schema.

The test you can run in 15 minutes

Take a service page from your site — for example the “Val d’Orcia 3-day Tour” page of a tour operator in Pienza, or the “Siena Historic Centre Tour Guide” page of a specialised guide. Open Google’s Rich Results Test, paste the URL, press “Test URL”.

Look at the result:

  • If you see `Product`, `Service` or `Offer` among the detected entities, with at least `name`, `description` and `offers.price`, you’re in the game.
  • If you see only `Organization` or nothing, the AI engine has no structured handhold for your price.
  • If you see errors or warnings on the `price`, `priceCurrency`, `availability` fields, that data isn’t getting through.

The binary threshold is this: either the price is in schema, or it isn’t there. There’s no middle ground for the parser.

Second step: take the 3-5 competitors the AI cites when you query Perplexity on your same query (“Val d’Orcia 3-day tour 4 people”) and run them through the same test. If they have Product/Offer schema and you don’t, in an hour you’ve explained why the AI never names you.

Pro tip

For every “catalogue” service (day tour, tasting, 4-hour private guide, 3-day package) publish a dedicated page with `Service` + `Offer` schema.

The test I ran myself

I ran 12 sites of tour operators and specialised tour guides for Val d’Orcia, Siena and southern Tuscany through Google’s Rich Results Test, then I asked Perplexity and ChatGPT transactional queries like “how much does a private guide for Siena centre cost” and “Montalcino 2-day wine tour price”.

Out of 12 sites, 9 had no Product/Service/Offer schema at all. They only had a basic `Organization` or the CMS widget. The 3 that had correct Offer schema appeared in the AI answers for 7 queries out of 10. The other 9 showed up sporadically, and almost never with the price cited correctly.

An indicative test, not a study: small sample, manual queries, a single week of observation. But the pattern is consistent with what Selvam and Kejriwal (2020) describe at Web scale. And when I repeated the test on restaurants in Siena centre and wineries in Montalcino, the ratio was similar: those who expose prices in schema make it into transactional AI answers, those who keep them in the sales copy don’t.

Real analysis at scale requires professional tools for mass crawling and parsing. This is an entry-level check, a first step to understand whether you’re in the game.

The mistakes I notice most often

There are four patterns that come back in almost every audit of niche tour operators, tour guides and farm stays in southern Tuscany.

Price only in the copy, never in schema. The page says “packages from 450 euros per person” in a paragraph, but in the JSON-LD schema there’s no `price` field. For the AI that 450 is sales text, not structured data.

`Organization` schema but no `Service` or `Product`. The site has the basic block with name, logo, address, but no service page is marked up as an entity in its own right. The AI engine knows you exist, it doesn’t know what you sell.

`Offer` without `availability` or `areaServed`. The price is there, but the “available / sold out” field is missing and the geographic area served is missing. For a query like “Val d’Orcia tour availability September 2026”, the AI has nothing to answer with.

Duplicate or contradictory schema across pages. The home says one price, the landing page another, the schema a third. The AI receives contradictory signals and chooses the most reliable source, which is almost never yours.

What can you concretely do?

A minimal plan you can work on with your developer or a technical consultant:

  • For every “catalogue” service (day tour, tasting, 4-hour private guide, 3-day package) publish a dedicated page with `Service` + `Offer` schema.
  • In `Offer` put at least `price`, `priceCurrency`, `availability`, `url`, `validFrom`.
  • If the price varies by number of people or season, use `PriceSpecification` with a range — it’s preferable to “from X euros” with no structured data.
  • Add `areaServed` (e.g. “Val d’Orcia”, “Province of Siena”) to intercept geo-transactional queries.
  • Run every page through the Rich Results Test until the report is clean.
  • Link the `Service` schema to the `Organization` schema via `provider`: you create a chain of entities that engines appreciate.

Two honest notes. This is not a magic factor: if your brand is invisible on everything else (authority, reviews, third-party mentions), schema alone won’t make you appear. And the AI doesn’t always cite the exact price even when it’s structured: sometimes it uses it as a trust signal without exposing it. But without schema, you start at a disadvantage by default.

In the world of web data research, Selvam and Kejriwal (2020) observe that:

“Structured descriptions of products embedded in HTML pages are now not uncommon, especially on e-commerce websites.”

Selvam and Kejriwal, 2020

Translated: structured product descriptions embedded in HTML pages are no longer a rarity, especially on e-commerce sites. The “uncommon” of 2020 is the standard today. If you’re not doing it in 2026, you’re behind not relative to the state of the art, but relative to the baseline level of your market.

Chapter 4 · Entities and Knowledge Graph

Continue with the deep dives

40 deep dives across the 5 sections of the chapter.

4.1 Entity Monitoring & Maintenance 8 deep dives
4.2 Entity Recognition 8 deep dives
4.3 Entity Relationships 8 deep dives
4.4 Knowledge Graph Optimization 8 deep dives
4.5 Vertical & Local Entities 8 deep dives
The author
Roberto Serra at the Senate of the Republic Senate of the Republic · Palazzo Giustiniani Conference “The power of artificial intelligence”
Roberto Serra Roberto Serra

SEO consultant for over 15 years, founder of the Serra SEO Agency (RAANK). He helps multinationals and SMEs stay visible where search is moving: ChatGPT, Perplexity, Gemini and Google's AI Overviews.

As featured in
ANSA Il Sole 24 Ore Le Iene Università di Cagliari La Repubblica
How visible is your brand to AI? Analyze your brand