Skip to content
Issue docs

No WebSite schema with SearchAction

Standardwebsite_schema_searchactionIssue 90

What is this issue?

This issue reports a WebSite schema block your page already declares that is missing name or url — not a site that has no WebSite schema at all.

What this issue is not:

  • It does not guess. A homepage with no WebSite schema is never reported.
  • It does not require sitelinks search box markup. A WebSite's potentialAction/SearchAction property is recorded as an observation, never checked for absence — Google retired the sitelinks search box from search results on 21 Nov 2024, and a rich result that can no longer appear is not worth a finding.

Why it matters

WebSite schema is important for site identity and search experience:

  • Sitelinks Search Box: Enables users to search your site directly from Google search results
  • Entity recognition: Helps Google understand your website as a distinct entity
  • Knowledge Graph: Strengthens your site's presence in Google's Knowledge Graph
  • AI search readiness: Provides AI engines with clear context about your website
  • Brand consistency: Ensures your site name appears consistently in search results

Resolving this issue improves your SEO health score by establishing your website as a recognized entity in search engines.

How to fix it

If this issue was raised, your page already declares a WebSite block that is missing name or url, or two blocks that disagree — open the finding for specifics. The steps below are for a homepage that declares no WebSite schema yet: worthwhile to add, and never reported as a defect while absent.

  1. Add WebSite JSON-LD structured data to your homepage <head>:

    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "@id": "https://www.example.com/#website",
      "name": "Your Website Name",
      "url": "https://www.example.com",
      "description": "Description of your website",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://www.example.com/search?q={search_term_string}",
        "query-input": "required name=search_term_string"
      }
    }
  2. Include recommended properties:

    • @id: Use a consistent anchor (e.g., https://www.example.com/#website)
    • name: Your website name as you want it to appear in search
    • url: Your website's canonical URL
    • description: Brief description of your website
  3. potentialAction/SearchAction is optional: it is the markup for the sitelinks search box, which Google retired from search results on 21 Nov 2024. PixyScan records it as an observation; it is not required and its absence is not checked.

  4. Make it referenceable: Other schemas (Article, BreadcrumbList) can reference this via isPartOf

  5. Validate with Google's Rich Results Test

Examples

Example 1: No Schema Declared — Not This Issue

<!-- Homepage without any WebSite schema -->
<html>
  <head>
    <title>Example Corp - Home</title>
  </head>
  <body>
    <h1>Welcome to Example Corp</h1>
    <p>Your trusted partner for digital solutions.</p>
  </body>
</html>

Nothing is reported. See How to fix it for why adding WebSite schema is worth doing anyway.

Example 2: WebSite Schema With SearchAction (passes, and not required)

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://www.example.com/#website",
  "name": "Example Corp",
  "url": "https://www.example.com",
  "description": "Your trusted partner for digital solutions.",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://www.example.com/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

name and url are both present, so this passes. The potentialAction/SearchAction block is recorded as an observation on the page — it is not required, since Google retired the sitelinks search box it powers.

Example 3: WebSite Schema Missing name and url (fails)

Problematic state:

{
  "@context": "https://schema.org",
  "@type": "WebSite"
}

Reported: name missing, url missing.

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://www.example.com/#website",
  "name": "Example Corp",
  "url": "https://www.example.com",
  "description": "Your trusted partner for digital solutions."
}

Example 4: Two Conflicting WebSite Blocks (fails)

Problematic state:

[
  { "@context": "https://schema.org", "@type": "WebSite", "name": "Example Corp", "url": "https://www.example.com" },
  { "@context": "https://schema.org", "@type": "WebSite", "name": "Example Corp Blog", "url": "https://blog.example.com" }
]

Reported: Page declares 2 conflicting WebSite schemas — Google cannot tell which one describes the site.

Corrected state: publish one WebSite block per site, or make sure any duplicates agree on name and url.

How PixyScan detects this

  1. Read the declared structured data: every JSON-LD block on the page is parsed, with @graph wrappers flattened into their individual entities.

  2. Select declared WebSite entities: any schema block whose @type is WebSite. A page that declares no WebSite schema is not examined, and nothing is reported.

  3. Check the required properties: a declared WebSite must have name and url.

  4. Observe, but do not require, the sitelinks search box markup: a WebSite carrying a potentialAction of @type SearchAction is recorded as a fact on the page (hasWebsiteSearchAction). This is informational only and is never a finding — Google retired the sitelinks search box from search results on 21 Nov 2024, so a site is not obliged to publish this markup, and its absence is not checked.

  5. Check for conflicting duplicates: two or more WebSite blocks that disagree on name or url are reported once as a conflicting-declaration finding. Duplicate blocks that agree are not flagged.

  6. This is reported when: the page declares a WebSite schema missing name or url, or declares two conflicting WebSite blocks. A page that declares no WebSite schema at all is never reported.

What we store

Storage Level

Page Level — This issue is evaluated for each individual URL that contains structured data.


Database Table / Prisma Model

PageStructuredData


Stored Fields

Field Type Description
schemaType SchemaType The type of schema (e.g., Organization, Person)
schemaFormat SchemaFormat The format of the schema (JSON-LD, Microdata, RDFa)
schemaIdentifier String? Unique identifier for the schema
rawJson Json? The raw JSON-LD or structured data content
schemaErrors Json? Array of validation errors found in the schema
isValidSchema Boolean? Whether the schema is valid according to validation
missingFields Json? Reserved for future use — the crawler always writes null here today; no check currently populates it

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
  • Structured Data Validation — The extracted schema is validated against Schema.org definitions
  • Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed

Further reading