Schema markup is a block of code that tells search engines, in plain terms, what your business is, where it is, and what a page is about. It does not make you rank higher by itself. What it does is remove the guesswork, and a search engine that is not guessing describes you more accurately.
This guide was first written in early 2025. A lot of schema advice from that period has aged badly, including some of ours, so this version has been rewritten. It covers what schema still does for an Iowa business, what it stopped doing, and how to add it without installing another plugin.
What is schema markup, in plain English?
Your website is written for people. A person reads “Open till 5, closed Sundays, just off Highway 149” and understands it. A machine sees a string of text and has to work out whether that is an address, a slogan, or a line from a blog post.
Schema markup, also called structured data, is a second copy of the important facts written in a format machines read without interpretation. The vocabulary comes from Schema.org, a shared standard that Google, Microsoft, and others agreed on in 2011.
There are three ways to write it: JSON-LD, Microdata, and RDFa. Use JSON-LD. It is the format Google recommends, and it sits in one tidy block instead of being threaded through your page’s HTML. When the phone number changes, you edit one line in one place.
Does schema markup improve your Google rankings?
No, not directly. Google has said for years that structured data is not a ranking factor. Anyone who promises a ranking jump from schema alone is selling something.
What schema does is narrower and still worth having:
- It confirms the facts. Name, address, phone, hours, and service area, stated once, in a format that leaves no room for misreading.
- It makes some pages eligible for rich results. These are the enhanced listings with extras like product prices, event dates, or breadcrumb trails. Eligible is the key word; Google decides whether to show them.
- It connects your profiles. The
sameAsproperty ties your website to your Facebook page, LinkedIn, and other listings, so they are treated as one business instead of several lookalikes.
Google’s documentation cites large sites that saw real gains: Rotten Tomatoes measured a 25% higher click-through rate on pages with structured data. Read that with some caution. A national movie site and a hardware store in Marengo are not the same case. For a local business, the honest benefit is accuracy first and clicks second.
Which rich results did Google remove?
This is where most older schema guides fall apart, so check the date on anything you read. Several of the features schema was sold on no longer exist in Google search:
- FAQ rich results. Dropped in May 2026. The expandable questions under a search listing are gone.
- How-to rich results. Removed in 2023.
- The sitelinks search box. Retired in late 2024.
- Review stars on your own business. Google stopped showing stars for reviews a local business marks up about itself back in 2019. Marking up your own testimonials will not put gold stars under your listing.
FAQ markup is not useless. Bing still reads it, and a clear question-and-answer section helps the people on your page. But if someone quotes you a price for “FAQ schema to win rich snippets in Google,” they are working from an old playbook. Our running log of Google algorithm updates tracks changes like these as they happen.
Which schema types does an Iowa business actually need?
Schema.org lists hundreds of types. Most small businesses need three or four.
LocalBusiness: the one that matters most
If you serve customers in a specific area, this is where to start. It states who you are and where you work. Pick the most specific subtype that fits, such as Plumber, Dentist, or AutoRepair, instead of the generic LocalBusiness.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HardwareStore",
"name": "Example Hardware",
"url": "https://www.example.com",
"telephone": "+1-319-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Williamsburg",
"addressRegion": "IA",
"postalCode": "52361",
"addressCountry": "US"
},
"openingHours": "Mo-Sa 08:00-17:00",
"areaServed": [
{ "@type": "Place", "name": "Williamsburg, Iowa" },
{ "@type": "Place", "name": "Iowa County, Iowa" }
],
"sameAs": [
"https://www.facebook.com/examplehardware"
]
}
</script>Every value in that block must match your Google Business Profile exactly. Same name, same address format, same phone number. Schema that disagrees with your other listings creates the confusion it was supposed to remove. That consistency is a large part of local SEO for Iowa businesses.
Article: for blog posts and guides
Article schema names the author, the publish date, and the date of the last update. It will not win a special listing, but it gives search engines a clear answer to “who wrote this, and is it current?”
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Winterize a Lawn Mower",
"author": { "@type": "Person", "name": "Pat Example" },
"datePublished": "2026-09-15",
"dateModified": "2026-10-01",
"image": "https://www.example.com/images/mower.jpg"
}
</script>BreadcrumbList, Product, and Event
Add these only where they apply. BreadcrumbList shows where a page sits in your site. Product covers price and availability if you sell online. Event covers dates and locations for classes, sales, or fundraisers. Product and Event are two of the types that still earn rich results.
How do you add schema markup without a plugin?
The earlier version of this post recommended a schema plugin. We no longer do, and we do not use one on the sites we build. A plugin adds weight to every page load, hands control of your markup to someone else’s update schedule, and often outputs a second, conflicting copy of schema your site already has.
Hand-written JSON-LD is short, and it goes in one of two places:
- Site-wide facts go in the theme. Your LocalBusiness block belongs on every page, so it is output once from the child theme’s
functions.phpfile. One source, no duplicates. - Page-specific schema goes on the page. An Article or Event block is pasted into a code module on the page it describes, and nowhere else.
Google reads JSON-LD from the head or the body of a page, so placement inside the page is not something to lose sleep over. If you are not comfortable editing theme files, this is a small, one-time job for a developer. It is part of every custom WordPress site we build.
How do you test whether your schema works?
Do not publish schema and assume it is fine. A missing comma breaks the whole block, and nothing on the visible page will tell you. Use three free tools:
- Google’s Rich Results Test. Shows which rich results a page is eligible for. It only checks the types Google supports, so a clean result here is not the full picture.
- Schema Markup Validator. Checks all Schema.org markup for syntax errors, whether Google uses that type or not.
- Google Search Console. The Enhancements reports list errors Google found across the whole site, not one page at a time.
Test after every change to your theme or page layout. Schema problems are a regular finding in our technical SEO audits, and most of them trace back to a redesign nobody retested.
What are the most common schema mistakes?
- Marking up things that are not on the page. Google’s guidelines require schema to describe content a visitor can see. Hidden reviews or invented ratings can earn a manual penalty.
- Letting it go stale. New hours, a new address, or a new phone number have to be changed in the schema too. The original version of this post carried markup claiming it was 1,600 words long. It was 685. Nobody is immune.
- Running two sources. A theme, a plugin, and a pasted snippet all describing the same business three slightly different ways.
- Using the generic type.
LocalBusinesswhenElectricianexists. - Expecting a ranking boost. Schema supports good content. It does not replace it.
Does schema markup help with AI search?
Probably some, and nobody outside these companies can tell you how much. Microsoft has said publicly that structured data helps its AI systems understand content. Google’s position is that there is no special markup for AI Overviews; the same fundamentals apply.
The sensible reading is this: AI answers are built from facts the system is confident about, and schema is one of several ways to state your facts clearly. Consistent business details across your site, your Google Business Profile, and directory listings matter at least as much. We cover the wider picture in GEO vs SEO for Iowa businesses.
Frequently asked questions about schema markup
How long does schema markup take to show up?
Google has to recrawl the page first. That can take a few days or a few weeks. You can request indexing in Search Console to speed it up.
Can you use more than one schema type on a page?
Yes. A blog post can carry Article and BreadcrumbList alongside the site-wide LocalBusiness block. Each one should describe something that is really on that page.
Is FAQ schema still worth adding?
Not for Google rich results; those ended in May 2026. It still has some value for Bing. Write the questions for your visitors first and treat the markup as optional.
Do you need a plugin to add schema to WordPress?
No. A JSON-LD block is plain text. It can be added through the child theme or a code module, with nothing extra to update or slow the site down.
Will schema fix a site that is not ranking?
No. If the content is thin or the site is slow, schema describes those problems more precisely. Fix the foundation first.
Where should you start?
Start with one accurate LocalBusiness block that matches your Google Business Profile. Test it. Then add page-level schema where it fits. That is an afternoon of work for most small sites, and it does not need to be repeated every year.
If you would like it handled, schema setup is part of our Iowa SEO services. You can also get in touch and ask us to check what your site is outputting now. Sometimes the answer is “nothing,” and sometimes it is three plugins arguing with each other.













