/ โ† AEO Fixes / Schema for AI Answers
In this guide
  1. What schema can and cannot do for AI answers
  2. One connected graph instead of loose blocks
  3. The properties that carry identity
  4. The fix, step by step
  5. Finding what your site outputs now
  6. Platform notes
  7. Keeping it accurate
  8. Questions and answers

What schema can and cannot do for AI answers

It helps to be clear about the evidence. Google says it uses structured data to understand page content and the entities on it, and that AI Overviews are built on its normal Search systems. Microsoft recommends structured data in its Bing webmaster guidance. Beyond that, AI companies have said very little about whether their assistants read JSON-LD directly when writing an answer. Any claim that a particular schema property "gets you cited" goes further than the public evidence.

What schema does reliably is remove ambiguity. It can state, in a form software does not have to guess at:

Those are the facts that go wrong in AI answers when they are left for a model to infer. Schema does not replace a clear answer in the visible text. Assistants quote what readers see, so the page still has to answer the question well.

๐Ÿ’ก Think of AEO schema as identity markup, not as a way to get a special search result. Its job is to make sure that when your business is found, it is recognised correctly.

One connected graph instead of loose blocks

Many sites have several separate JSON-LD blocks that never refer to each other: a theme outputs an Organization, a plugin outputs an Article with the author as a plain name, and a reviews widget outputs a LocalBusiness with a slightly different name. To a machine these look like three unrelated things.

The fix is to give each entity an @id, a URL-style identifier that stays the same on every page, and to point to it wherever the entity is mentioned. The Article says its publisher is https://www.example.co.uk/#organization; every page that mentions the business uses that same identifier. Now there is one business, described once, referred to many times.

A working example

This graph is for a blog post on a fictional firm, Brookfield Garden Rooms. It is valid JSON and can be adapted.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://www.example.co.uk/#organization",
      "name": "Brookfield Garden Rooms Ltd",
      "alternateName": "Brookfield Garden Rooms",
      "url": "https://www.example.co.uk/",
      "logo": "https://www.example.co.uk/images/logo.png",
      "description": "Designs and builds insulated garden rooms and garden offices in West Yorkshire.",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "Unit 4, Mill Lane",
        "addressLocality": "Wakefield",
        "postalCode": "WF1 1AA",
        "addressCountry": "GB"
      },
      "sameAs": [
        "https://www.facebook.com/example-garden-rooms",
        "https://www.linkedin.com/company/example-garden-rooms"
      ]
    },
    {
      "@type": "Person",
      "@id": "https://www.example.co.uk/about/sam-carter/#person",
      "name": "Sam Carter",
      "jobTitle": "Lead designer",
      "url": "https://www.example.co.uk/about/sam-carter/",
      "worksFor": { "@id": "https://www.example.co.uk/#organization" }
    },
    {
      "@type": "WebPage",
      "@id": "https://www.example.co.uk/blog/garden-room-planning/#webpage",
      "url": "https://www.example.co.uk/blog/garden-room-planning/",
      "name": "Do garden rooms need planning permission?",
      "isPartOf": { "@id": "https://www.example.co.uk/#website" }
    },
    {
      "@type": "WebSite",
      "@id": "https://www.example.co.uk/#website",
      "url": "https://www.example.co.uk/",
      "name": "Brookfield Garden Rooms",
      "publisher": { "@id": "https://www.example.co.uk/#organization" }
    },
    {
      "@type": "Article",
      "@id": "https://www.example.co.uk/blog/garden-room-planning/#article",
      "headline": "Do garden rooms need planning permission?",
      "mainEntityOfPage": { "@id": "https://www.example.co.uk/blog/garden-room-planning/#webpage" },
      "author": { "@id": "https://www.example.co.uk/about/sam-carter/#person" },
      "publisher": { "@id": "https://www.example.co.uk/#organization" },
      "datePublished": "2026-03-02T09:00:00+00:00",
      "dateModified": "2026-08-14T10:30:00+01:00"
    }
  ]
}
</script>

The name, address and people here are invented. Use your own real details, and only list profiles in sameAs that you actually control.

The properties that carry identity

PropertyOnWhy it matters for AI answers
@idEvery nodeLets every page refer to the same business and the same people, rather than creating new copies.
name, alternateNameOrganizationThe registered or full name, plus the short name people actually use. Helps separate you from similarly named firms.
url, logoOrganizationTies the entity to your official website and brand image.
sameAsOrganization, PersonLists official profiles elsewhere, so they can be connected to you instead of treated as separate entities.
address, telephoneOrganization or LocalBusinessMust match your Business Profile and directories exactly; mismatches are a common source of wrong facts.
authorArticle, BlogPostingPoints to a Person node, not a bare string, so the author can be identified across pages.
jobTitle, worksForPersonStates the author's role and links them to the business.
datePublished, dateModifiedArticleGives a clear date, which matters when facts change. Must match the visible dates.

Properties such as knowsAbout are valid schema.org and can describe specialisms, but there is no public evidence that assistants give them special weight. Add them if they are accurate; do not expect them to change results on their own.

The fix, step by step

Step 1

List the entities your site needs to identify

Write down the things an assistant should recognise: the business itself, each separate location if you have several, the people who write or are quoted on your pages, your main products or services, and the website. For each, note its exact official name, its main page on your site and any official profiles elsewhere. This list becomes the plan for your markup and stops you describing the same entity differently in different places.

Step 2

Give each entity one stable @id

Choose an identifier for each entity from your list, based on the URL of its main page plus a fragment, such as https://www.example.co.uk/#organization for the business and https://www.example.co.uk/about/sam-carter/#person for an author. Use exactly the same string on every page, including the protocol, the www and the trailing slash. The identifier does not need to load anything; it only needs to be unique and never change.

Step 3

Build a complete Organization node

Give the Organization, or the more specific LocalBusiness type if you serve customers at an address, its full name, a url, a logo, a one-sentence description of what you do and, where relevant, address and telephone. Add sameAs links to the profiles you control, such as LinkedIn, Facebook and trade directories. Output this node on every page, or at least the home page, and refer to it by its @id everywhere else.

Step 4

Mark up authors as Person entities

Create a short profile page on your site for each person who writes or reviews content, stating their role and relevant experience in plain words. On that page, output a Person node with name, jobTitle, url, worksFor pointing to the Organization @id, and sameAs links to their professional profiles if they are happy for those to be public. Use the same Person @id in every article they write.

Step 5

Connect articles to their author and publisher

In the Article or BlogPosting markup on each content page, set author to the Person @id and publisher to the Organization @id instead of plain text names. Add headline, datePublished, dateModified and mainEntityOfPage pointing to the WebPage node. For service and product pages that are not articles, link the WebPage to the Organization with publisher or about so every page connects back to the business.

Step 6

Check that markup and visible text agree

Compare each value in the markup with what a reader sees. The business name, address and phone number must match the footer and contact page. The author named in markup must be the author shown on the page. Dates must match the visible published and updated dates. Where they differ, correct the source of the wrong value, which is often a plugin setting, rather than hiding the difference. Conflicting information is worse than none, because it creates the confusion you are trying to prevent.

Step 7

Remove duplicate and conflicting blocks

View the page source and search for application/ld+json. If the theme, an SEO plugin and a reviews app each output their own Organization, keep the one that sits in the connected graph and switch the others off in their settings. Then paste the live URL into the Schema Markup Validator and the Rich Results Test, confirm there are no errors and that only one Organization and one Article appear, and repeat for a page of each template.

Finding what your site outputs now

Most sites already have some markup, and most of the work is tidying it rather than starting again. Check a small sample: the home page, the about or contact page, one service or product page and one blog post.

โš ๏ธ The Rich Results Test only reports types that can produce a Google rich result. Organization and Person may not appear there even when they are correct. Use the Schema Markup Validator to see the full graph.

Platform notes

WordPress

Yoast SEO and Rank Math both output a connected graph with @id values already. The common gaps are settings, not code: the site representation set to a Person when it should be an Organization, no logo, empty social profile fields, and authors left as "admin". Fill in the Organization details in the plugin's site settings and each author's user profile. Avoid adding a second schema plugin, which usually creates duplicate nodes.

Shopify

Themes output their own Organization and Product markup, and many apps add more. Check the theme's theme.liquid and product templates for JSON-LD, and each installed SEO or review app's settings, then choose one source for the Organization. If you add a blog author graph by hand, reference the same Organization @id the theme uses rather than creating a new one.

Custom and static sites

Generate the graph in one shared template or component, fed by one configuration file holding the business details and one data file for authors. Build the JSON with a proper encoder, such as json_encode() in PHP or JSON.stringify() in JavaScript, so a quote mark in a name can never break the block.

Keeping it accurate

For assistants stating wrong facts about your business, see fixing wrong attribution. For the wider schema checks, see the AI Schema guide.

Questions and answers

1. Does schema markup help my site get cited by ChatGPT or Perplexity?

There is no public confirmation that either assistant reads JSON-LD directly when choosing sources, so nobody can promise that. What schema does is state clearly who the business is, who wrote each page and when it changed, in a form search engines use. That supports correct identification and fewer wrong facts. The pages that get quoted still need a clear, visible answer, because assistants quote the text readers see, not the markup behind it.

2. What is an @id and why does it matter?

An @id is an identifier you give to an entity in your markup, usually your page URL plus a fragment such as #organization. When the same @id is used on every page, search engines can see that every mention refers to the same business or the same author, rather than a series of separate, slightly different ones. It does not need to load a real page. It just needs to be unique to that entity and never change.

3. Should I use Organization or LocalBusiness?

Use LocalBusiness, or one of its more specific subtypes such as a trade or shop type, when customers visit you at an address or you serve a defined local area from one. Use Organization for businesses without a public location, such as online-only firms. LocalBusiness is a kind of Organization, so it carries all the same identity properties. Whichever you choose, give it one @id and use it consistently across the whole site.

4. What should I put in sameAs?

Links to official profiles about the same entity that you control or that clearly represent you, such as your LinkedIn company page, Facebook page, trade association listing or Wikidata item if one exists. Do not add links to pages that merely mention you, such as news articles or review pages, and do not add profiles you do not own. Each sameAs link should be a page about exactly the same business or person as the node it sits on.

5. Do I need author markup if we are a small business?

It is worth doing if your site has advice or blog content, because it tells machines who is behind the information and connects that person to your business. It does not need to be elaborate. A short profile page stating the person's role and experience, with a matching Person node linked from each article, is enough. For pages with no individual author, such as service pages, linking the page to the Organization is sufficient.

6. Is knowsAbout worth adding for AI search?

knowsAbout is a valid schema.org property for describing what an organisation or person has expertise in, and adding accurate values does no harm. However, there is no public evidence that AI assistants give it particular weight when choosing sources, so it should not be treated as a ranking or citation lever. Put your effort first into the properties that establish identity, such as name, url, sameAs and author links, then add knowsAbout if it fits.

7. How do I test entity markup that the Rich Results Test ignores?

Use the Schema Markup Validator at validator.schema.org, which shows every type and property it finds, including Organization and Person nodes that do not produce a Google rich result. Paste the live URL, expand the graph and check that each entity appears once, that references by @id resolve to the right node, and that the values match the visible page. Use the Rich Results Test alongside it for types such as Article that Google does report.

See how AI assistants describe you

The AI Visibility Tracker asks AI assistants the questions your customers ask and records whether your brand is cited, mentioned, recommended or missing, so you can see where identity problems show up and track progress over time.

Open AEO Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All AEO Fixes  ·  Organization Schema  ·  Schema @id References  ·  Wrong Attribution  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.