Phase 2 · Foundation

Schema Markup
(5 Pages)

Implement structured data (JSON-LD) on the 5 priority pages from the keyword map. Schema unlocks rich results, boosts click-through rate, and feeds AI overview eligibility. Deploy, validate, and document every page.

Phase 2 — Foundation Frequency: Onboarding + tiered re-audit Duration: ~1 hr/page (~5 hrs) Deliverable: Live schema on 5 pages + validation screenshots

Overview

What It Involves

For each of the 5 priority pages (from the keyword map), choose the correct schema type, build the JSON-LD block, deploy it to the page via the CMS, validate it in Google's Rich Results Test, and save a validation screenshot.

The 5 pages are typically: homepage (LocalBusiness or Organization), 2–3 service pages (Service), and 1 blog/article page (Article or FAQPage). BreadcrumbList is deployed sitewide as a bonus if the CMS supports it.

Why It Matters

Schema unlocks rich results in SERPs — review stars, FAQ accordions, breadcrumb trails, and How-To steps — which substantially lift click-through rate. It also feeds AI overview eligibility: pages with strong structured data are more frequently cited by Google's AI overviews and by ChatGPT and Perplexity.

Schema breaks easily when CMS templates change, which is why re-auditing on a tiered schedule matters.

Choose Schema Types

Identify the 5 pages and assign schema types

Pull the top 5 pages from the keyword map (or the page tweaks spreadsheet if done). Assign the most appropriate schema type to each:

Schema type assignments by page type

  • Homepage or contact page → LocalBusiness (for local businesses) or Organization (for non-local)
  • Service page → Service (with ServiceType, areaServed, provider)
  • Blog post or article → Article (with author, datePublished, publisher)
  • Page with FAQs → FAQPage (each Q&A as a Question + acceptedAnswer)
  • Product page → Product (with offers, price, availability)
  • Process or how-to guide → HowTo (with steps)

Record the page URL and assigned schema type in a simple tracking table before building anything.

Build the JSON-LD

Gather the required properties for each schema

Before writing any JSON-LD, collect the exact values you'll use. Do not guess — every property should reflect what is actually on the page.

Required data to collect before building

  • LocalBusiness: business name, address (streetAddress, addressLocality, addressRegion, postalCode, addressCountry), phone, website URL, opening hours, geo coordinates (from Google Maps), image URL, business category
  • Service: service name, description, provider name, provider URL, areaServed (city or region), serviceType
  • Article: headline (same as H1), author name, author URL or sameAs, datePublished (from the post), dateModified, publisher name, publisher logo URL
  • FAQPage: every question + answer pair visible on the page — only include Q&As that appear visibly on the page

Never invent data. If the business has 47 reviews, the schema shows 47. If it has none, do not add a reviewCount.

Write the JSON-LD block

Build the JSON-LD as a <script type="application/ld+json"> block. Use schema.org vocabulary. Nest types correctly.

Key rules for valid JSON-LD

  • Use @context: "https://schema.org" at the root of every block
  • Use @type to declare the schema type
  • For LocalBusiness: include @id set to the business's canonical URL
  • For multiple schema types on one page (e.g. FAQPage + BreadcrumbList): use an array [{...}, {...}] or two separate script blocks
  • Do not include properties that aren't reflected in visible page content — this is schema stuffing and violates Google's guidelines
Schema stuffing: Only include properties that correspond to content actually visible on the page. Adding data that isn't on the page (fake reviews, hidden Q&As, invented business hours) violates Google's structured data guidelines and can result in a manual penalty.

Deploy to the Page

Deploy the schema to the page

Deployment method depends on the CMS:

CMS deployment methods

  • WordPress (Yoast or Rank Math): both have built-in schema editors. For LocalBusiness, use the plugin's Organisation/Local Business settings. For custom schema on a specific page, use the "Schema" tab in Yoast or the Schema Generator in Rank Math
  • WordPress (manual): add a Custom HTML block (Gutenberg) or a text widget, and paste the <script type="application/ld+json"> block
  • Webflow, Squarespace, Wix: use the page's custom code/embed section in the page settings to inject the script block in the <head> or before </body>

After deploying: view the page source and search for application/ld+json to confirm the script block is live and unescaped.

Validate

Validate in Google's Rich Results Test

Go to https://search.google.com/test/rich-results. Enter the page URL (or paste the HTML if the page is not yet live).

Check for: detected schema types, any Errors (must fix — schema won't show as a rich result), and Warnings (review — usually non-critical missing properties).

Validation outcomes

  • No errors: clean pass — schema is eligible to appear as a rich result
  • Errors present: must fix before the schema will fire in SERPs
  • Warnings only: acceptable if they relate to optional properties you've intentionally omitted
  • Take a screenshot of the validation result for each page — save named "schema-validation-[page-name]-[date].png" to the client's Drive folder
Always validate: Schema syntax errors silently prevent rich results. You can deploy schema that looks correct in the CMS but never fires in SERPs. Validation is not optional — it is the only way to confirm the schema is working.

Document & Log

Log in Zoho

Add a Zoho comment with the following information:

Required Zoho comment fields

  • List of pages and schema types deployed (e.g. "Homepage — LocalBusiness, Service page 1 — Service, Service page 2 — Service, Blog post — Article, FAQ page — FAQPage")
  • Validation status for each page: pass / pass with warnings / fail — and if fail, what was fixed
  • Link to the Drive folder containing validation screenshots
  • Time logged

Schema Type Reference

All Supported Schema Types

Use the correct type for each page. Only use a schema type if the page actually contains the relevant content.

LocalBusiness

Businesses with a physical location or service area

name · address · telephone · openingHours · geo · image · url
Business info panel, map appearance

Organization

Non-local businesses or companies without a service area

name · url · logo · sameAs (social profiles) · contactPoint
Brand knowledge panel

Service

Individual service pages

name · serviceType · provider · areaServed · description
May appear in service search features

Article

Blog posts, news, editorial content

headline · author · datePublished · publisher · image
Top Stories, article rich results

FAQPage

Pages with visible FAQ sections

mainEntity → Question + acceptedAnswer pairs
FAQ accordion in search results

HowTo

Step-by-step process pages

name · step → HowToStep with name + text per step
How-to steps in search results

Product

Product pages with pricing and availability

name · offers (price, availability) · image · description
Price and availability in results

BreadcrumbList

Sitewide navigation trail (deploy on all pages if CMS supports it)

itemListElement → position · name · item URL per crumb
Breadcrumb trail under result URL
Always check schema.org directly for the current recommended properties for each type. Schema.org evolves — some types and properties become deprecated. Do not copy old examples blindly.

Common Mistakes

Mistakes to Avoid

Mistake Why It Happens How to Avoid It
Adding properties that aren't visible on the page Google calls this schema stuffing. A business with no reviews adding a 5-star reviewCount is deceptive markup. Only include properties that correspond to content actually visible on the page.
Using deprecated schema types Schema.org evolves. Some types or properties are outdated. Copying old examples without checking can produce invalid schema. Check schema.org directly for the current recommended properties for each type. Do not copy old examples blindly.
Skipping validation Schema syntax errors silently prevent rich results. You might deploy schema that never fires in SERPs. Always validate in Google's Rich Results Test. Save the screenshot as evidence.
Not re-validating after CMS updates Theme changes, plugin updates, or page rebuilds often strip or break JSON-LD blocks without warning. Re-validate schema as part of the tiered re-audit schedule. Add it to the checklist.
Adding FAQPage schema for questions not visible on the page Google requires FAQ schema to match content the user can actually see. Hidden or dynamically loaded Q&As that aren't in the HTML don't count. Only mark up Q&As that appear in static HTML on the page.