No Organization or LocalBusiness schema
What Is This Issue
Organization or LocalBusiness schema is missing from your website. Organization schema defines your company as a formal entity, enabling Google’s Knowledge Graph panel to display your logo, description, social links, and contact info. LocalBusiness schema is essential for businesses with physical locations to appear in local search results, Google Maps, and voice search results.
Without these schemas:
- Your brand won’t have a Knowledge Graph panel in search results
- Local businesses won’t appear in Google’s local 3-pack
- Voice search results won’t be able to provide your business details
- Social media profiles won’t be linked to your brand entity
A proper Organization schema should include: @type (Organization), name, url, logo, contactPoint, sameAs (social profiles), and optionally foundingDate, address, etc.
A proper LocalBusiness schema should include: @type (specific subtype like Restaurant, Store, MedicalClinic), name, address (with PostalAddress), telephone, openingHoursSpecification, geo (latitude/longitude), and optionally priceRange, hasMap, review, etc.
Why Is This Important
Organization and LocalBusiness schemas are critical for brand visibility and local SEO:
- Knowledge Graph panels: Organization schema powers the information box shown in branded search results
- Local 3-pack: LocalBusiness schema is required to appear in Google’s local 3-pack results
- Google Maps: LocalBusiness schema helps your business appear in Google Maps results
- Voice search: Voice assistants rely on LocalBusiness schema to answer “near me” queries
- Brand entity recognition: Organization schema helps Google understand your brand as a distinct entity
- Social profile linking:
sameAsproperty connects your website to your social media profiles
Resolving this issue improves your SEO health score by ensuring search engines can properly identify and display your business information in search results.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing Organization or LocalBusiness schema:
-
Scan for entity signals: The crawler checks if the page contains:
- Company name in
<title>or<h1>tags - Logo image
- Contact information (phone, email)
- Social media links
- Physical address (for LocalBusiness)
- Company name in
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for Organization schema: The crawler verifies if any schema block has:
@typeset toOrganizationor a recognized subtype- Required properties:
name,url,logo
-
Check for LocalBusiness schema: The crawler verifies if any schema block has:
@typeset toLocalBusinessor a recognized subtype- Required properties:
name,address,telephone
-
Validate schema completeness: If schema is found, the crawler checks for:
- Proper
addresswithPostalAddresstype (for LocalBusiness) sameAsarray linking to social profiles (for Organization)geocoordinates (for LocalBusiness)openingHoursSpecification(for LocalBusiness)
- Proper
-
Trigger conditions: The issue is flagged when:
- Homepage or About page doesn’t have Organization schema
- Physical address is detected but LocalBusiness schema is missing
- Schema exists but is missing required properties
- The schema type is too generic (not using specific subtypes)
How To Fix
For Organization Schema:
-
Add JSON-LD structured data to your homepage or About page:
{ "@context": "https://schema.org", "@type": "Organization", "@id": "https://www.example.com/#organization", "name": "Your Company Name", "url": "https://www.example.com", "logo": "https://www.example.com/logo.png", "contactPoint": { "@type": "ContactPoint", "telephone": "+1-800-555-0100", "contactType": "customer support" }, "sameAs": [ "https://linkedin.com/company/yourcompany", "https://twitter.com/yourcompany", "https://facebook.com/yourcompany" ] } -
Include recommended properties:
foundingDate: When your company was foundedaddress: Company address (if applicable)description: Brief company description
-
Validate with Google’s Rich Results Test
For LocalBusiness Schema:
-
Choose the correct LocalBusiness subtype from Schema.org:
Restaurant,Store,MedicalClinic,Hotel,HairSalon, etc.- Use the most specific type that matches your business
-
Add JSON-LD structured data to your Contact or About page:
{ "@context": "https://schema.org", "@type": "Restaurant", "name": "Your Business Name", "address": { "@type": "PostalAddress", "streetAddress": "123 Main St", "addressLocality": "City", "addressRegion": "State", "postalCode": "12345", "addressCountry": "US" }, "telephone": "+1-555-123-4567", "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], "opens": "09:00", "closes": "17:00" } ], "geo": { "@type": "GeoCoordinates", "latitude": "40.7128", "longitude": "-74.0060" } } -
Validate with Google’s Local Business Structured Data Testing Tool
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? | Array of required fields that are missing |
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
Examples
Example 1: Missing Organization Schema on Homepage
Problematic state:
<!-- Homepage without Organization schema -->
<html>
<head>
<title>Example Corp - Home</title>
</head>
<body>
<header>
<img src="/logo.png" alt="Example Corp Logo" />
<h1>Example Corp</h1>
</header>
<p>Welcome to our website.</p>
</body>
</html>Corrected state:
<!-- Homepage with Organization schema -->
<html>
<head>
<title>Example Corp - Home</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Example Corp",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"sameAs": [
"https://linkedin.com/company/example",
"https://twitter.com/example"
]
}
</script>
</head>
<body>
<header>
<img src="/logo.png" alt="Example Corp Logo" />
<h1>Example Corp</h1>
</header>
<p>Welcome to our website.</p>
</body>
</html>Example 2: LocalBusiness Schema for Restaurant
Corrected state:
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Joe's Pizza",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10001",
"addressCountry": "US"
},
"telephone": "+1-212-555-1234",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"opens": "11:00",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Sunday"],
"opens": "12:00",
"closes": "21:00"
}
],
"servesCuisine": ["Italian", "Pizza"]
}Example 3: Incomplete Organization Schema
Problematic state:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Tech Startup"
}Missing required properties: url, logo
Corrected state:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Tech Startup",
"url": "https://www.techstartup.com",
"logo": "https://www.techstartup.com/logo.png",
"sameAs": ["https://linkedin.com/company/techstartup"]
}Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-57-organization-localbusiness-schema.test.js
Purpose
Validates that the crawler correctly detects when a page with local business content (address, phone, hours) is missing an Organization or LocalBusiness schema.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 57
- Issue Code:
organization_localbusiness_schema - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Organization schema present: Page has an
OrganizationJSON-LD schema — no issue reported. - LocalBusiness schema present: Page has a
LocalBusinessJSON-LD schema — no issue reported.
Negative Test Cases
- Local business content detected: Page has address, phone, and hours content but no Organization/LocalBusiness schema — issue is reported with status
localbusiness-missing. - Address content detected: Page has address content but no schema — issue is reported with
detectionHints.hasAddressContentset totrue. - Phone content detected: Page has phone content but no schema — issue is reported with
detectionHints.hasPhoneContentset totrue.
Boundary Cases
None.
Edge Cases
- Empty HTML:
<html></html>— no issue reported, no crash. - Malformed HTML: Unclosed tags and invalid JSON-LD — no crash.
Expected Outcome
Pass
Issue should not be reported when an Organization or LocalBusiness schema is present in the page.
Fail
Issue should be reported when the page contains local business content (address, phone, hours) but lacks an Organization or LocalBusiness schema. The details.status is localbusiness-missing and detection hints indicate which content patterns were matched.
Validation
- Correct issue detection when local business content is present without schema
- No issue detection when Organization or LocalBusiness schema is present
- Detection hints (
hasAddressContent,hasPhoneContent) populated correctly - Graceful handling of empty and malformed HTML
Related Production Files
xeopix-crawling-v2/toggleGroups/structuredDataRichResults.jsxeopix-crawling-v2/issueCodes.jsxeopix-crawling-v2/utils/context.jsxeopix-crawling-v2/utils/issues.jsxeopix-crawling-v2/utils/schema.js
Coverage Summary
- Covers presence of Organization schema and LocalBusiness schema
- Covers detection of address, phone, and hours content patterns
- Covers empty HTML resilience
- Covers malformed HTML resilience
References
- Google: Organization Structured Data — Google Search Central
- Schema.org: LocalBusiness — Schema.org
- Google: Local Business Structured Data — Google Search Central