Skip to Content
Structured SchemaIssue 66

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: sameAs property 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:

  1. 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)
  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

  3. Check for Organization schema: The crawler verifies if any schema block has:

    • @type set to Organization or a recognized subtype
    • Required properties: name, url, logo
  4. Check for LocalBusiness schema: The crawler verifies if any schema block has:

    • @type set to LocalBusiness or a recognized subtype
    • Required properties: name, address, telephone
  5. Validate schema completeness: If schema is found, the crawler checks for:

    • Proper address with PostalAddress type (for LocalBusiness)
    • sameAs array linking to social profiles (for Organization)
    • geo coordinates (for LocalBusiness)
    • openingHoursSpecification (for LocalBusiness)
  6. 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:

  1. 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" ] }
  2. Include recommended properties:

    • foundingDate: When your company was founded
    • address: Company address (if applicable)
    • description: Brief company description
  3. Validate with Google’s Rich Results Test

For LocalBusiness Schema:

  1. Choose the correct LocalBusiness subtype from Schema.org:

    • Restaurant, Store, MedicalClinic, Hotel, HairSalon, etc.
    • Use the most specific type that matches your business
  2. 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" } }
  3. 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

FieldTypeDescription
schemaTypeSchemaTypeThe type of schema (e.g., Organization, Person)
schemaFormatSchemaFormatThe format of the schema (JSON-LD, Microdata, RDFa)
schemaIdentifierString?Unique identifier for the schema
rawJsonJson?The raw JSON-LD or structured data content
schemaErrorsJson?Array of validation errors found in the schema
isValidSchemaBoolean?Whether the schema is valid according to validation
missingFieldsJson?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 Organization JSON-LD schema — no issue reported.
  • LocalBusiness schema present: Page has a LocalBusiness JSON-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.hasAddressContent set to true.
  • Phone content detected: Page has phone content but no schema — issue is reported with detectionHints.hasPhoneContent set to true.

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
  • xeopix-crawling-v2/toggleGroups/structuredDataRichResults.js
  • xeopix-crawling-v2/issueCodes.js
  • xeopix-crawling-v2/utils/context.js
  • xeopix-crawling-v2/utils/issues.js
  • xeopix-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

Last updated on