/ AI Visibility Fixes / Schema for AI

How to Fix Missing Schema for AI

AI engines extract facts from structured data faster and more reliably than from prose. Pages without schema force engines to parse paragraphs to find dates, authors, prices, ratings — they often miss or misextract. Pages with comprehensive schema get cited 2-3x more for the same content. This guide covers the schema types AI engines extract most reliably and the implementation order.

1. Schema types ranked by AI extraction value

SchemaWhat AI extractsCitation impact
OrganizationBrand entity (name, logo, sameAs)Foundation — needed by everything else
Person (author)Authority signals, credentialsVery high — author-attributed citations
Article + author + datePublishedContent provenance, freshnessVery high — date-sensitive queries
FAQPageQ&A atoms ready for extractionHighest for "how does X work" queries
HowToStep-by-step instructionsHigh for procedural queries
Product + offersPrice, availability, brandHigh for commerce queries
LocalBusinessAddress, hours, phoneHigh for local-intent queries
RecipeIngredients, time, yieldHigh for cooking queries
EventDate, location, ticket URLHigh for "when is X" queries
BreadcrumbListSite hierarchy contextModest — helps disambiguation

2. Foundation: Organization + WebSite

Add to every page (in template / layout):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Acme Corp",
      "url": "https://example.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://example.com/logo.png",
        "width": 600,
        "height": 60
      },
      "description": "B2B SaaS for [specific category]",
      "sameAs": [
        "https://linkedin.com/company/acme",
        "https://twitter.com/acmecorp",
        "https://github.com/acmecorp"
      ],
      "contactPoint": {
        "@type": "ContactPoint",
        "telephone": "+44-1273-555-012",
        "contactType": "customer service",
        "email": "hello@example.com",
        "areaServed": "GB"
      }
    },
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com",
      "name": "Acme",
      "publisher": { "@id": "https://example.com/#organization" },
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://example.com/search?q={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    }
  ]
}
</script>

3. Per content type: Article + Person author

On every blog post, guide, news article:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "@id": "https://example.com/authors/jane-baker#person",
      "name": "Jane Baker",
      "jobTitle": "Sales Operations Lead",
      "url": "https://example.com/authors/jane-baker",
      "image": "https://example.com/authors/jane-baker.jpg",
      "sameAs": [
        "https://linkedin.com/in/janebaker",
        "https://twitter.com/janebaker"
      ]
    },
    {
      "@type": "Article",
      "@id": "https://example.com/blog/post-1#article",
      "headline": "How to choose a CRM",
      "description": "Decision framework for B2B teams choosing first CRM.",
      "image": "https://example.com/blog/post-1/cover.jpg",
      "datePublished": "2026-01-15T09:00:00Z",
      "dateModified": "2026-04-22T14:30:00Z",
      "author": { "@id": "https://example.com/authors/jane-baker#person" },
      "publisher": { "@id": "https://example.com/#organization" },
      "mainEntityOfPage": "https://example.com/blog/post-1"
    }
  ]
}
</script>

The @id references close the graph — AI engines build the strongest entity signal when Article → author → Person and Article → publisher → Organization all link via @id. See schema references for details.

4. FAQPage — highest extraction yield

For any page with Q&A content, add FAQPage schema. Each Q/A becomes an extractable atom:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What does a CRM cost for a small team?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A CRM for a 5-25 person team typically costs £30-£150 per user per month. Entry-level options start at £15-£30; mid-tier at £50-£90; enterprise exceeds £150."
      }
    },
    {
      "@type": "Question",
      "name": "Can I switch CRMs later?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, but expect 3-6 weeks of migration work. Export from old, clean fields, map to new schema, import in batches. Plan for downtime in sales reporting during transition."
      }
    }
  ]
}
</script>

Tip: 3-8 FAQ items per page is the sweet spot. Beyond that, AI engines treat the page as primarily Q&A and may downweight other content. Real questions only — fabricated FAQs detected and penalised.

5. HowTo for procedural content

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to set up Google Search Console",
  "totalTime": "PT30M",
  "step": [
    {
      "@type": "HowToStep",
      "name": "Sign in to Search Console",
      "text": "Go to search.google.com/search-console and sign in with the Google account you'll use to manage the property."
    },
    {
      "@type": "HowToStep",
      "name": "Add your property",
      "text": "Click 'Add property' and choose Domain (recommended) or URL prefix. Domain captures all subdomains and protocols."
    },
    {
      "@type": "HowToStep",
      "name": "Verify ownership",
      "text": "Add the TXT record to your DNS or upload the HTML file. Wait 5 minutes after DNS update for verification to succeed."
    }
  ]
}

HowTo schema pairs with HowTo on-page content; AI engines extract the steps and cite them when answering "how do I X".

6. Product for ecommerce

{
  "@type": "Product",
  "name": "Blue Widget",
  "image": "https://example.com/widget.jpg",
  "description": "Hand-thrown ceramic widget, 12cm.",
  "sku": "WID-BLU-12",
  "brand": { "@type": "Brand", "name": "Acme" },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/widget",
    "priceCurrency": "GBP",
    "price": "29.00",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2026-12-31"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "142"
  }
}

For commerce queries ("how much does X cost", "is X in stock"), Product schema with offers is what AI engines extract.

7. Implementation order for invisible sites

Week 1: Organization + WebSite + BreadcrumbList (site-wide template)
Week 2: Article schema on all blog/guide pages, with named Person author
Week 3: Per-content-type: Product (ecommerce), LocalBusiness (services), Recipe (food)
Week 4: FAQPage schema on Q&A pages, HowTo on guides
Week 5: Validate all with Rich Results Test, fix warnings
Week 6: Monitor AI Visibility Tracker — expect first lift within 4-8 weeks

8. Validate

💡 Don't ship schema you haven't validated. One bad property silently breaks the entire entity, and you won't notice until citations don't appear. Run every new schema through Rich Results Test before deploying. Build a CI check that blocks deploy on schema regressions.

🤖 Track AI visibility impact

Schema improvements show in citation tracking within 4-8 weeks.

Run AI Visibility Tracker →
Related Guides: AI Visibility Fixes  ·  AI Schema Fixes  ·  Fix JSON-LD Coverage  ·  Fix Author Trust
💬 Got a problem?