Skip to content
WP Visibility

Local business SEO guide

Validate LocalBusiness Schema Against Your WordPress Location Page

Compare the name, address, phone, hours, and URL in your LocalBusiness markup with the visible location page, resolve conflicts, and validate it without expecting better map rankings.

Published

On this page

To validate LocalBusiness schema, list the business facts a visitor can see on the location page (name, address, phone, hours, and the page URL), list the same facts from the page’s JSON-LD, and compare them line by line. Fix disagreements at the source, then run a validator. Valid markup describes the location to search engines; it does not verify your Business Profile, and a passing validator result is not evidence of better map rankings.

Know what LocalBusiness markup is for

Google’s LocalBusiness structured data documentation, checked September 27, 2026, requires two properties, name and address (“the physical location of the business. Include as many properties as possible”), and recommends others:

Property Google’s description, in short
geo Latitude and longitude, with at least five decimal places
openingHoursSpecification “Hours during which the business location is open”
telephone “A business phone number meant to be the primary contact method for customers”
url “The fully-qualified URL of the specific business location”
priceRange A price indication, shorter than 100 characters
department A nested item for a single department

Two limits from Google’s pages shape what you should publish:

  • Reviews. Google says aggregateRating and review on LocalBusiness are “only recommended for sites that capture reviews about other local businesses.” A business marking up ratings of itself falls outside that.
  • Visible content. Google’s structured data guidelines, checked the same day, say: “Don’t mark up content that is not visible to readers of the page,” and that correct markup does not guarantee a rich result.

Business Profile verification is a separate process in Google Business Profile (Google’s verification help, checked September 27, 2026). Google’s local ranking help, checked the same day, explains local ranking in terms of relevance, distance, and prominence; the local business check covers that guidance and how to keep facts consistent across listings.

Compare three records per location. Location page: What a visitor reads on the page. JSON-LD: The business node in the page markup. Business Profile: The facts in your Google listing.
Name, address, phone, hours, and URL should agree across all three. A validator checks the markup's structure, not whether the facts are current.

Inventory visible and structured business facts

Work on one location page at a time.

  1. Capture the visible facts. Open the page logged out and write down the business name, street address, phone number, opening hours (including any seasonal or holiday note), and the page’s own URL. Take a screenshot with the date.
  2. Capture the structured facts. Fetch the server HTML and find every application/ld+json block:
curl -s https://example.com/locations/riverside/ -o location.html
grep -o 'application/ld+json' location.html | wc -l

The URL is illustrative. Copy each block into a formatter and find the nodes with a LocalBusiness type or a subtype such as Store or HomeAndConstructionBusiness.

  1. Capture the external facts. Write down the same fields from your Google Business Profile for this location.

Then build the comparison:

Fact Visible page JSON-LD Business Profile
Name name
Street address address.streetAddress
Town and postal code address.addressLocality, address.postalCode
Phone telephone
Hours, weekdays openingHoursSpecification
Hours, weekends and holidays openingHoursSpecification
Location URL The page address url Website field

Mark each row as a match, a mismatch, or “in markup only.” Anything in markup only is either missing from the page or should not be in the markup.

Resolve conflicting identities and hours

Common conflicts and how to settle them:

Two business nodes. A theme, a page builder, a local SEO plugin, and your SEO plugin can each print a business node. Identify each emitter (deactivate suspects on a staging copy and recapture) and keep one source per fact.

Name variations. The markup says “Garden Example LLC,” the page says “Garden Example Riverside,” the profile says “Garden Example.” Google’s Business Profile guidelines, checked September 27, 2026, ask you to represent the business “as it’s consistently represented and recognized in the real world across signage, stationery, and other branding,” and say that including unnecessary information in the name “isn’t permitted.” Use the real trading name, consistently.

A central number instead of the location’s. The same guidelines prefer “a local phone number instead of a central call center helpline number whenever possible.” If the page shows the branch number, the markup should too.

Hours out of date. Markup is often written once and forgotten. The profile guidelines ask for “regular customer-facing hours of operation.” When hours change, update the page, the markup, and the profile together. Google’s LocalBusiness documentation includes examples for hours past midnight, all-day opening, and seasonal closures; use those patterns rather than inventing your own.

A service-area business with no public address. Google’s profile guidelines say that “if you’re a service-area business, you should hide your business address from customers.” LocalBusiness markup requires an address. If the address is private, do not publish it in markup the page does not show. Describe the service area on the page instead; the service page guide covers that.

The wrong URL. On a multi-location site, each location’s url should be that location’s page, not the home page.

Add or correct the markup in WordPress

Know which tool produces the business node before you edit anything.

WP Visibility 2.10.3 does not generate LocalBusiness markup. Its site identity is an Organization or a Person, set as described in organization or person schema, and it has no address or hours fields. If you use WP Visibility and want a LocalBusiness node on a location page, the block editor’s WP Visibility sidebar has a Structured data panel with an Advanced field. JSON-LD entered there is added to that page’s schema graph. The plugin checks only that the text is a valid JSON object or array, and it skips any node without an @type, so a block wrapped in @graph prints nothing; it does not check the facts, the properties, or Google’s requirements.

An illustrative node for a fictional location, using example.com:

{
  "@type": "Store",
  "@id": "https://example.com/locations/riverside/#localbusiness",
  "name": "Garden Example",
  "url": "https://example.com/locations/riverside/",
  "telephone": "+1-951-555-0100",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 River Road",
    "addressLocality": "Riverside",
    "addressRegion": "CA",
    "postalCode": "90000",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "17:00"
    }
  ],
  "parentOrganization": { "@id": "https://example.com/#organization" }
}

Every value is invented. The parentOrganization reference links the location to the site’s organization node by its @id, which WP Visibility publishes as https://your-site.com/#organization in organization mode. Choose the most specific type from schema.org that honestly describes the location.

If a different plugin already prints a business node, correct it in that plugin rather than adding a second one.

Validate the graph and document its owner

  1. Paste the page URL into Google’s Rich Results Test and note what it detects, plus errors and warnings.
  2. Paste it into the Schema Markup Validator to find syntax mistakes and see a summary of the extracted graph (schema.org’s description of the tool, checked September 27, 2026).
  3. Repeat your comparison table using the tested page, not your draft.
  4. Record the result: date, URL, the plugin or field that prints the business node, the comparison, and validator output.

A passing Rich Results Test tells you Google can read the markup and found the required properties. It does not tell you the hours are right. Only the comparison does that.

Set a reminder to recheck when hours change, when you move, when you add a location, and after theme or plugin updates.

Checklist

  • Visible facts, markup facts, and profile facts compared for each location.
  • One business node per location, with its emitter identified.
  • Name, phone, and hours consistent with the page and the profile.
  • No self-assigned ratings, and no address the page does not show.
  • url points to the specific location page.
  • Rich Results Test and Schema Markup Validator results recorded.

Read next

WordPress SEO with your own assistant.

WP Visibility is $99 a year for unlimited sites, client sites included, with a 30-day refund. Use its SEO tools in WordPress or connect a supported assistant. Read how proposal review and permissions work.