Skip to main content

AZHAD NIAZ & COMPANY

Schema markup for local business — a laptop showing a local business website with a map and location pin
GuidesNovember 9, 2026·10 min read

You have claimed your Google Business Profile, collected reviews and fixed your website speed — yet Google still seems unsure what your business actually is. That is exactly the gap schema markup for local business websites closes. It is a small block of code that tells Google, in a language machines read perfectly, your business name, address, phone number, opening hours, services and location.

1What Is Schema Markup?

Schema markup is structured data: a standardised vocabulary (from Schema.org, maintained jointly by Google, Microsoft, Yahoo and Yandex) that describes the facts on a page in a format search engines can read without guessing.

Think of it this way. Your website already shows your opening hours to humans — “Open 9am – 9pm”. Schema markup says the same thing to Google in a fixed format it can process instantly. The most common format is JSON-LD (JavaScript Object Notation for Linked Data), a small script block that sits in your page’s code and does not change how the page looks at all. Google explicitly recommends JSON-LD over the older Microdata and RDFa formats, because it sits separately from your visible design and is far easier to maintain.

For a local business, the relevant type is LocalBusiness — or, better, one of its more specific sub-types, which we cover below. A typical LocalBusiness block carries your name, business type, address, phone, website, opening hours, location coordinates, price range and social profiles.

2Why Schema Markup Matters for Local Businesses in 2026

Schema markup is not a ranking magic wand, and anyone selling it as one is overselling. What it genuinely does is remove ambiguity — and in local search, ambiguity is expensive.

  • Richer search results. Correct LocalBusiness markup can supply the business details Google shows in the knowledge panel, such as hours and contact information, and it is the foundation for rich results like FAQ dropdowns and (for eligible pages) review snippets. Rich results earn more clicks than plain blue links.
  • Stronger entity signal. When your website, your Google Business Profile and your directory listings all describe the same business in the same structured way, Google is more confident the business is real, established and located where you say it is. That confidence supports everything else in your local SEO.
  • AI search citations. AI search engines such as ChatGPT, Perplexity and Google’s AI Overviews increasingly cite local businesses in their answers — and well-formed LocalBusiness schema is one of the signals they use to verify a business’s facts. (One honest caveat: Google says no special schema is needed to appear in AI Overviews. Schema helps AI systems trust your facts; it is not a ticket in.)
  • It is a one-time job with lasting value. Unlike ads, which stop the day you stop paying, a correct schema block keeps working for years. The only maintenance is keeping the facts inside it current.

For Pakistani businesses, the competitive angle is real: most local competitors have no schema at all. A clinic in Peshawar, a salon in Lahore or a restaurant in Karachi with clean, validated LocalBusiness markup is ahead of nearly every rival in its niche before a single backlink is built. (If your local SEO foundations are not in place yet, start with our local SEO guide for Pakistani businesses — schema works best on top of a claimed profile and consistent listings.)

Google’s official LocalBusiness documentation is short and specific. Only two properties are strictly required; the rest are recommended — but “recommended” here means “include them if you want the full benefit”.

Property Status What it holds
@type Required The most specific business type that fits
name Required Your exact business name, as on your Google Business Profile
address Required Full postal address (street, city, region, postal code, country)
geo Recommended Latitude and longitude of your location
telephone Recommended Your business phone number
url Recommended Your website address
openingHoursSpecification Recommended Opening hours in structured form
priceRange Recommended Price level, e.g. $$ (or a PKR range in text)
sameAs Recommended Links to your Facebook, Instagram and other profiles
areaServed Recommended The cities or areas you serve
@id Recommended A permanent unique identifier URL, e.g. https://yoursite.com/#localbusiness
⚠️ The single most important rule

Every fact in your schema must match what is visible on your page and on your Google Business Profile, exactly. A phone number that differs by one digit, or hours that say “open till 9pm” while the site says 8pm, does not just waste the markup — mismatched structured data is one of the things Google penalises.

4Step 1: Pick the Most Specific Business Type

This is the mistake most local sites make: they use generic LocalBusiness when a more specific sub-type exists. Schema.org defines hundreds of sub-types, and the more specific the type, the stronger the signal to Google. A salon should be BeautySalon, not LocalBusiness. A dental clinic should be Dentist. A lawyer’s office should be LegalService.

Common sub-types for Pakistani businesses

  • Restaurant — restaurants, dhabas, cafes (CafeOrCoffeeShop, Bakery)
  • Dentist, MedicalClinic, Physician — clinics and doctors
  • BeautySalon, DaySpa, HairSalon — salons and spas
  • LegalService — law firms and advocates
  • AccountingService — accountants and tax consultants
  • AutoRepair — workshops and mechanics
  • RealEstateAgent — property dealers and agencies
  • Store — retail shops (ElectronicsStore, FurnitureStore, ClothingStore)
  • HealthClub, Gym — fitness centres
  • Hotel — hotels and guest houses
  • ProfessionalService — agencies, consultants and service businesses (including web and SEO agencies)

If your business fits two types — say a bakery that is also a cafe — Google accepts an array, for example ["Bakery", "CafeOrCoffeeShop"]. If nothing specific fits, fall back to LocalBusiness or ProfessionalService, and be precise everywhere else.

5Step 2: Copy the JSON-LD Template

Here is a complete, production-ready template. It describes a fictional salon in Peshawar — replace every value with your own business’s facts. (The example uses our own agency’s approach: we added a ProfessionalService schema block to azhadniaz.com the same way.)

{
  "@context": "https://schema.org",
  "@type": "BeautySalon",
  "@id": "https://example-salon.pk/#salon",
  "name": "Glamour Salon & Spa",
  "description": "Ladies salon in Peshawar offering hair, makeup and bridal services.",
  "url": "https://example-salon.pk/",
  "telephone": "+92-91-5840000",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Shop 4, University Road",
    "addressLocality": "Peshawar",
    "addressRegion": "Khyber Pakhtunkhwa",
    "postalCode": "25000",
    "addressCountry": "PK"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 34.0151,
    "longitude": 71.5249
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday", "Saturday"],
      "opens": "10:00",
      "closes": "21:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Sunday",
      "opens": "12:00",
      "closes": "18:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/examplesalon",
    "https://www.instagram.com/examplesalon"
  ],
  "areaServed": [
    {
      "@type": "City",
      "name": "Peshawar"
    }
  ]
}

To use it, wrap the block in a <script type="application/ld+json"> tag — see Step 3 for where to put it.

A few notes on the template

  • @id is your business’s permanent identifier. Use your homepage URL plus /#localbusiness (or /#salon, as above). Use the same @id everywhere you reference the business — it is how Google connects the dots between your pages.
  • priceRange is free text. Google’s examples use $, $$, $$$. For a Pakistani business you can also write a PKR range, e.g. "PKR 500 - PKR 5,000" — either is valid; pick one and keep it consistent.
  • geo coordinates come from Google Maps: right-click your location on the map and copy the latitude and longitude. Do not guess them.
  • sameAs should list only profiles you actually own and keep updated. Dead or wrong social links are worse than none.
  • Opening hours use the 24-hour clock (21:00, not 9pm) and the full English day names. If you close for lunch, add a second entry for the same days with the split hours.

6Step 3: Add It to Your WordPress Site

You have three realistic routes on WordPress. All three produce the same result — pick the one that fits how you work.

Option A: An SEO plugin (easiest)

If you use Rank Math (free) or Yoast SEO (free), both can generate LocalBusiness schema automatically from the business details you enter in their settings. In Rank Math, go to Rank Math → Titles & Meta → Local SEO, choose your business type and fill in the fields. In Yoast, go to SEO → Settings → Site features and fill in your organisation details, then add your opening hours and social profiles under the relevant settings pages.

This is the best route for most small businesses: the plugin keeps the schema in sync with your site, and you never touch code. The trade-off is control — plugins generate a standard block, and adding custom properties (like areaServed or hasOfferCatalog for your services) usually needs the paid version or manual code.

Option B: A dedicated schema plugin

Plugins such as Schema Pro (paid) or the free Schema & Structured Data for WP let you build LocalBusiness blocks field by field, including multiple locations and extra types (FAQ, services, reviews). Worth it if you run several locations or want the full hasOfferCatalog service list in your markup.

Option C: Add the code manually (most control)

If you can edit your theme, paste the JSON-LD block into a <script type="application/ld+json"> tag. The safest way is a code-snippets plugin such as Header Footer Code Manager (HFCM) — create a snippet, set it to load on the homepage (or the relevant location page), and paste the block. That is exactly how we added the schema block to azhadniaz.com itself: one HFCM snippet, verified in the page source.

💡 Our recommendation

Whichever route you choose, add the LocalBusiness block to your homepage at minimum, and to each location page if you serve several cities — one block per page, describing that page’s location. Never put all your locations into a single block on one page.

7Step 4: Get Your Opening Hours Right

Hours are where most local business markup goes stale — and stale hours actively hurt you, because Google may show them to customers who then arrive to a closed shop.

  • Use the 24-hour format and full day names exactly as in the template above.
  • Match your Google Business Profile hours exactly. If your profile says you close at 9pm on Fridays, your schema must say the same.
  • Handle split days properly. Friday prayers, lunch breaks and Ramadan timings mean many Pakistani businesses open and close twice a day. Use two OpeningHoursSpecification entries for the same day rather than one wrong one.
  • Update for Ramadan and Eid. Add special hours (or mark closures) in your Google Business Profile, and update the schema to match — then change it back afterwards. A schema block that still says “open till 9pm” during Eid holidays is worse than no schema at all.
  • If you are open 24 hours, say so explicitly with "opens": "00:00", "closes": "23:59" for every day, and make sure your profile agrees.

8Step 5: Validate Before and After Publishing

Never publish schema you have not tested. Two free tools cover everything:

  1. Google Rich Results Test (search.google.com/test/rich-results) — paste your page URL or the code itself. It tells you which rich result types Google detects and flags every error. Fix all errors; warnings are advisory, but clear the ones you can.
  2. Schema.org Validator (validator.schema.org) — checks the code against the full Schema.org vocabulary, including properties Google does not use. Use it to catch typos in property names, which the Rich Results Test sometimes misses.

Test before publishing (paste the code) and after (test the live URL). Then check again whenever you change your hours, phone number or address — a single changed digit makes the whole block wrong.

9What Schema Markup Will Not Do

Honest expectations matter more than hype, so here is what schema cannot do:

  • It will not rank you on its own. Schema is a supporting signal. Without a claimed Google Business Profile, reviews, local content and a fast site, markup alone moves nothing. (Our technical SEO checklist for WordPress covers the rest of the foundation.)
  • It will not replace your Google Business Profile. For the map pack, your profile, your reviews and your proximity do the heavy lifting. Schema supports the website side of the same facts.
  • It will not give you review stars for your own business. Google’s review snippet rules are explicit: pages that review their own business with LocalBusiness or Organization markup are ineligible for star results — including reviews pulled in from a widget. Do not add AggregateRating to your homepage claiming your own Google rating; Google ignores it, and misleading markup can be penalised.
  • FAQ markup is no longer a free win. Since 2023, Google shows FAQ rich results only for a limited set of well-known, authoritative government and health websites. A FAQ schema block on a small business site will validate fine but almost certainly never display. Keep FAQs on the page for users and AI search — just do not expect a dropdown in the results.
  • It will not fix inconsistent business details. If your website says one phone number, Facebook says another and your profile says a third, schema just makes the contradiction machine-readable. Fix your NAP consistency first — our local SEO guide’s Step 2 walks through the audit.

!Common Schema Markup Mistakes (and How to Fix Them)

  • Using generic LocalBusiness when a sub-type fits. Pick the most specific type, as in Step 1.
  • Mismatched NAP. Your schema name, address and phone must match your Google Business Profile and your website footer character for character.
  • Marking up facts that are not on the page. Every property in your schema should be visible somewhere on the page. Hidden or false data can lead to a manual action.
  • Adding your own Google rating as AggregateRating. Ineligible and ignored, as above.
  • Stale opening hours. Review your schema every time your hours change — Ramadan, Eid, winter timings.
  • One block for many locations. Each location gets its own page and its own block.
  • Copy-pasting someone else’s example without changing the values. It happens more than you would think. Run the validator — it catches placeholder addresses instantly.
  • Forgetting to test after a theme or plugin change. A redesign can silently strip a manually added script. Re-validate after any major site change. (Speed work can have the same side effect — see our WordPress speed guide for what to re-check after optimisation.)

11How Long Until You See Results?

Schema markup itself is instant — Google can read it the next time it crawls the page, usually within days. Visible changes (knowledge panel details, richer listings) typically follow within 2 – 4 weeks, and only where Google chooses to display them. There is no notification and no guarantee for any single rich result; what you get is a cleaner, more trustworthy entity in Google’s eyes, which supports your rankings over time.

If you validate cleanly and nothing changes after a month, the problem is almost never the schema — it is the rest of your local SEO. Check your profile completeness, your review velocity and your local content, and confirm your site itself is technically sound. (And if you are weighing what any of this costs to have done professionally, our 2026 SEO pricing guide for Pakistan has the real numbers.)

?Frequently Asked Questions

What is schema markup for a local business?

Schema markup is a small block of structured data (usually JSON-LD code) added to a local business website that tells search engines your business name, type, address, phone number, opening hours and location in a machine-readable format. Google requires only the name and address, and recommends geo coordinates, telephone, website, opening hours and price range.

Does schema markup help local SEO?

Yes, as a supporting signal. It helps Google understand your business with certainty, supplies details for the knowledge panel and rich results, and strengthens the connection between your website, your Google Business Profile and your listings. It does not replace reviews, citations or local content — it makes them work together.

How do I add schema markup to WordPress?

The easiest way is an SEO plugin: Rank Math and Yoast SEO both generate LocalBusiness schema from the business details you enter in their settings. For full control, use a dedicated schema plugin (Schema Pro or Schema & Structured Data for WP) or paste a JSON-LD block manually via a code-snippets plugin such as Header Footer Code Manager, set to load on your homepage.

What is the best schema type for a local business?

The most specific LocalBusiness sub-type that fits your business. A salon should use BeautySalon, a dental clinic Dentist, a law firm LegalService, a restaurant Restaurant. Only use generic LocalBusiness (or ProfessionalService for agencies and consultants) when no specific sub-type fits.

How do I test my schema markup?

Use Google’s Rich Results Test (search.google.com/test/rich-results) to check which rich results Google detects and to flag errors, and the Schema.org Validator (validator.schema.org) to check the code against the full vocabulary. Test the code before publishing and the live URL after.

Can I add schema markup without a plugin?

Yes. Paste the JSON-LD block inside a <script type="application/ld+json"> tag in your page, using a code-snippets plugin or your theme’s header/footer settings. Google reads the script from either the head or the body of the page. Always validate afterwards — a single misplaced comma breaks the whole block.

Do I need different schema for each location?

Yes. Each location should have its own page with its own LocalBusiness JSON-LD block containing that location’s address, phone and hours. Never combine multiple locations into one schema block.

Schema markup for local business — pin this guide on adding LocalBusiness schema to your website
Pin this guide for later

Make Google Sure About Your Business

Schema markup is one of the smallest jobs in local SEO and one of the highest-leverage ones: thirty minutes of careful work, a copy-paste template, two free validation tools — and Google stops guessing about who you are, where you are and when you are open. At Azhad Niaz & Company in Peshawar, schema markup is part of every local SEO setup we do: LocalBusiness blocks, NAP consistency, Google Business Profile optimisation and the technical fixes that make it all stick.

Get a Free Consultation →

Leave a Reply

Your email address will not be published. Required fields are marked *