No WebSite schema with SearchAction
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
WebSiteschema is never reported. - It does not require sitelinks search box markup. A
WebSite'spotentialAction/SearchActionproperty 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.
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" } }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 searchurl: Your website's canonical URLdescription: Brief description of your website
potentialAction/SearchActionis 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.Make it referenceable: Other schemas (Article, BreadcrumbList) can reference this via
isPartOfValidate 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
Read the declared structured data: every JSON-LD block on the page is parsed, with
@graphwrappers flattened into their individual entities.Select declared
WebSiteentities: any schema block whose@typeisWebSite. A page that declares noWebSiteschema is not examined, and nothing is reported.Check the required properties: a declared
WebSitemust havenameandurl.Observe, but do not require, the sitelinks search box markup: a
WebSitecarrying apotentialActionof@typeSearchActionis 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.Check for conflicting duplicates: two or more
WebSiteblocks that disagree onnameorurlare reported once as a conflicting-declaration finding. Duplicate blocks that agree are not flagged.This is reported when: the page declares a
WebSiteschema missingnameorurl, or declares two conflictingWebSiteblocks. A page that declares noWebSiteschema 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