
How to Add Schema Markup to a Small Business Site (India 2026)
Add LocalBusiness JSON-LD the India way: +91 phones, PIN codes, hours, and a 2026 validation checklist for WordPress and Next.js.
Schema markup is JSON-LD code that tells Google who you are, where you sit, and what you sell. For a clinic in Jaipur, a marble yard in Kishangarh, or a salon in Pune, that code is how search can show hours, a Call button, and review stars. It is not a ranking switch and it will not put any site at number one overnight.
I am Vishvajeet Shukla, a Next.js freelancer in Jaipur. Most SME site audits still show no LocalBusiness schema, or a US template with a 10-digit phone and a missing PIN code. This is the India-first version for 2026: what to add, where it lives, and how to check it.
You do not need five plugins. You need one valid JSON-LD block that matches your Google Business Profile, your footer NAP, and the words on the page. Pair this with the local SEO checklist for Jaipur businesses so Maps and the website say the same thing.
What schema changes for an Indian SME
Search engines already read your HTML. Schema markup removes the guesswork. You declare the legal name, street address, +91 phone, hours, and service area in a format Google already understands. That is how a page becomes eligible for rich results.
Rich results are extra lines under the blue link: opening hours, price range, FAQ dropdowns, breadcrumbs, product price. Eligibility is not a guarantee. Google still needs matching on-page text, a healthy Google Business Profile, and no spammy review markup.
In 2026 the same JSON-LD also helps AI answers pick a clean entity. If the name, city, and phone on the site disagree with Maps, both humans and machines ignore you. Schema is the structured copy of facts you already publish, not a substitute for Google Business Profile optimization.
Five schema types that actually matter
Skip the 800 Schema.org types. A local shop, clinic, or service firm in India needs a short stack. Use a more specific type when it exists: Dentist, Restaurant, Attorney, AutoRepair, or Store instead of a bare LocalBusiness.
| Type | Use on | Must include |
|---|---|---|
| Organization | Every site | Legal name, logo, sameAs |
| LocalBusiness | Each physical location | NAP, geo, hours, areaServed |
| FAQPage | Service or FAQ pages | Questions visible on the page |
| BreadcrumbList | Inner pages | Same trail users see |
| Product or Service | Offers and catalogues | Price in INR, availability |
Organization describes the brand. LocalBusiness describes the shop people can visit. A single-location firm can nest both. Multi-branch brands need one LocalBusiness block per address, not one mashed JSON with three cities.
Build LocalBusiness JSON-LD the India way
Copy this pattern and replace every value with facts that already appear on the page. Do not invent a rating. Do not mark up a review you do not show.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Sharma Dental Clinic",
"url": "https://www.example.in",
"telephone": "+9198XXXXXXXX",
"priceRange": "₹₹",
"address": {
"@type": "PostalAddress",
"streetAddress": "12, C-Scheme",
"addressLocality": "Jaipur",
"addressRegion": "Rajasthan",
"postalCode": "302001",
"addressCountry": "IN"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 26.9124,
"longitude": 75.7873
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
"opens": "10:00",
"closes": "19:00"
}],
"areaServed": "Jaipur",
"sameAs": ["https://www.instagram.com/yourhandle"]
}Indian sites break on small fields. telephone must include +91. addressCountry is IN. postalCode is the six-digit PIN. addressRegion is the state name. priceRange can be ₹₹ or a rupee band such as INR 500-2000. sameAs should point only to live profiles. GSTIN is not a standard Schema.org field — keep it on invoices and the About page, not in a made-up property.
One rule: if a fact is not visible on the page or on your Google Business Profile, do not put it in JSON-LD.
Shops that close for lunch need two time windows on the same day. Festival closures belong in specialOpeningHoursSpecification, not a silent 10–8 that is wrong for Diwali week. NAP still beats extra fields. If the footer says one phone and schema says another, Google trusts neither.
Where to add the code
WordPress
Use Rank Math or the Yoast local module and fill NAP once. Avoid stacking two schema plugins. After every theme update, view source and confirm a single application/ld+json block. If the plugin writes three LocalBusiness graphs with three phone formats, turn the extras off.
Next.js
Add a script type application/ld+json with next/script, or pass a JSON-LD object through the App Router metadata. Keep one constants file for name, PIN, phone, and hours so Jaipur address edits do not drift across pages. A custom Next.js site is cleaner than five WordPress schema plugins fighting each other. The stack choice is covered in Next.js vs WordPress for local businesses.
Static HTML
Paste one script in the head or before the closing body tag. Home gets Organization plus LocalBusiness. A service page can add Service and FAQPage. A blog post gets Article, not another LocalBusiness dump with different hours.
Validate in this order
- Paste the live URL into Google’s Rich Results Test.
- Run the same JSON through the Schema.org validator if the first test is vague.
- After Google recrawls, check Search Console enhancement reports.
- Compare name, address, and phone to the Google Business Profile, character for character.
Use the best free SEO tools for small business for Search Console. Schema does not fix a slow page. If LCP is weak on mobile Jio or Airtel, follow the Core Web Vitals guide for small business websites first.
Wait two to four weeks after a clean deploy before judging rich results. New domains take longer. A valid test with no stars in search is normal when the query volume is low or Google chooses a plain snippet.
Mistakes that waste the work
- Review schema with fake 4.9 stars and no visible reviews.
- A Jaipur office marked up on a pan-India landing page that shows no address.
- FAQ schema for questions that are not on the page.
- http URLs in JSON-LD while the live site is https.
- A schema name that does not match the Google Business Profile name.
If markup is valid and traffic is still flat, the gap is content, Maps, or links — not missing JSON. Read how to rank your website on Google in India and why your website is not getting traffic.
A 30-minute SME checklist
- Write NAP exactly as it appears on Google Business Profile.
- Pick the most specific LocalBusiness subtype.
- Add +91 phone, IN country, state, and six-digit PIN.
- Add geo coordinates from the Maps pin, not a guess.
- List real hours, including lunch breaks.
- Add sameAs only for profiles you own.
- Add FAQPage only where the Q&A is visible.
- Validate, request indexing, then leave it alone for a crawl cycle.
That is enough for most single-location firms. Ecommerce catalogues need Product markup and honest INR prices; start from the same NAP rules, then expand. If the site itself is still a free builder with no custom domain, fix that before chasing rich results — see how to create a business website in India.
FAQ
Does schema markup improve Google rankings in India?
Not as a direct ranking factor. It helps Google understand the entity and can raise click-through when rich results appear. Rankings still come from relevance, Maps signals, and useful pages.
Is JSON-LD better than microdata for a small business site?
Yes. Google recommends JSON-LD. It stays in one script tag, so a designer can change the layout without breaking hidden itemprop attributes.
Can a WordPress plugin replace a developer for schema?
For a single shop with one address, Rank Math or Yoast is enough if someone checks the output. Custom Next.js sites, multi-branch NAP, or Service plus FAQ graphs are safer when written as one source of truth.
How long until rich results show after adding schema?
Often two to four weeks after a valid deploy and a recrawl. Some pages never get an enhanced snippet even when the test is green. That is Google’s choice, not a broken tag.
Should every page have LocalBusiness schema?
No. Put the full local graph on the homepage and the contact or location page. Inner service pages can reference the same business and add Service or FAQPage. Do not paste conflicting hours on the blog.
Do you need schema if Google Business Profile is already complete?
Yes. Maps and the website are two records. Schema ties the site to the same NAP so branded and “near me” queries resolve to one entity instead of two near-matches.
Next step
If the site needs LocalBusiness JSON-LD, a Next.js build, or a clean NAP pass against Maps, write via the contact page or email [email protected]. Bring the live URL and the Google Business Profile link so the markup can match both on the first pass.
Want a fast, SEO-friendly website for your business?
I build high-performance Next.js websites and web apps that load fast, rank on Google, and turn visitors into customers. Book a free, no-obligation consultation and let's talk about your project.