Free templates
Schema markup templates
Tell search engines and AI exactly who you are.
These schema markup templates give you valid JSON-LD for the four types most business websites need: LocalBusiness for the business itself, Service for each service page, FAQPage for visible FAQs and BreadcrumbList for site structure. Replace everything in square brackets, paste the code into the page's HTML and test it.
Schema should repeat what the page already says, never add claims the page doesn't make.
At a glance
- What
- Four JSON-LD schema templates with placeholder values, free to copy.
- For
- Business websites, and the developers who look after them.
- Test with
- Google's Rich Results Test and the Schema Markup Validator.
- Next
- Prefer a form? The schema generator builds LocalBusiness markup in your browser.
Ready when you are.
We'll reply within the hour (working hours).
LocalBusiness schema template
Use once, on the homepage or contact page. Swap LocalBusiness for a more specific type if schema.org has one for your trade, such as Plumber or Dentist. A business with no public address can use Organization and drop the address.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://www.example.co.uk/#business",
"name": "[Business name]",
"description": "[One sentence: what you do, who for and where]",
"url": "https://www.example.co.uk/",
"logo": "https://www.example.co.uk/logo.png",
"image": "https://www.example.co.uk/photo.jpg",
"telephone": "[+44 phone number]",
"email": "[email address]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[Street address]",
"addressLocality": "[Town]",
"addressRegion": "[County]",
"postalCode": "[Postcode]",
"addressCountry": "GB"
},
"areaServed": [
{
"@type": "City",
"name": "[Town or city]"
},
{
"@type": "AdministrativeArea",
"name": "[County or region]"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "17:30"
}
],
"sameAs": [
"[Google Business Profile URL]",
"[LinkedIn URL]",
"[Facebook or Instagram URL]"
]
}
</script>Service schema template
One per service page. The provider line points back to the LocalBusiness above using the same @id. Remove the offers part if you don't publish a price.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "[Service name]",
"serviceType": "[Service type, as buyers search for it]",
"description": "[One or two sentences that match the service page]",
"url": "https://www.example.co.uk/services/[service]/",
"provider": {
"@id": "https://www.example.co.uk/#business"
},
"areaServed": {
"@type": "AdministrativeArea",
"name": "[County, region or United Kingdom]"
},
"offers": {
"@type": "Offer",
"priceCurrency": "GBP",
"price": "[from price, numbers only]",
"description": "[What the from price includes]"
}
}
</script>FAQPage schema template
Only for questions and answers that are visible on the same page, word for word. Add one Question block per FAQ.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "[Question, exactly as it appears on the page]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer, exactly as it appears on the page]"
}
},
{
"@type": "Question",
"name": "[Second question]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Second answer]"
}
}
]
}
</script>BreadcrumbList schema template
Match the breadcrumb trail shown on the page. The last item is the current page.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.co.uk/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Services",
"item": "https://www.example.co.uk/services/"
},
{
"@type": "ListItem",
"position": 3,
"name": "[Service name]",
"item": "https://www.example.co.uk/services/[service]/"
}
]
}
</script>How do you add schema markup templates to your site?
Fill in the template, paste it into the page, then test it. Most platforms let you add code to the page head or body.
- 1
Fill in the brackets
Use the exact name, address and phone number you use everywhere else. Delete any line you can't fill in honestly.
- 2
Keep the @id the same
Use one @id for your business across every page, so Service markup links back to it.
- 3
Paste it into the page
Inside the page's HTML, in the head or the body. On WordPress, an SEO plugin or a header code setting usually does it.
- 4
Test it
Run the page through Google's Rich Results Test and the Schema Markup Validator, and fix any errors.
- 5
Keep it in step
When a price, address or FAQ changes on the page, change the schema too.
Which schema mistakes should you avoid?
Most schema problems come from markup that doesn't match the page, or that's copied from a template and never filled in.
- Claims the page doesn't make.Reviews, prices or services in the markup that aren't on the page break Google's guidelines.
- FAQ markup for hidden FAQs.Only mark up questions people can see on the page.
- Placeholders left in.Search the code for square brackets before you publish.
- Different details on different pages.One business name, address and phone, written the same way everywhere.
- Several plugins adding schema.Two sets of LocalBusiness markup on one page confuse more than they help.
How does Foundry use schema markup?
On our own site, the schema is generated from the same content files as the pages, so the markup always matches what visitors read. Organization and LocalBusiness run sitewide, with Service, FAQPage and BreadcrumbList on each service page.
We set up the same on every website we build, and fix it as part of our SEO and AI SEO work.
Our averages. Not our best days.
Our averages
5days
Website, kick-off to livethis service
20mins
Average reply time
Schema markup templates FAQs
A way of writing structured data as a block of code, separate from the page's visible HTML. Google recommends it, and it's the easiest format to add and maintain.
It states your facts in a form machines read easily, which helps search engines and assistants understand the page. It's one part of the work, not a shortcut to being named.
Probably not. Google now shows FAQ rich results only for a small set of well-known government and health sites. The markup still describes the page clearly.
LocalBusiness if customers visit you or you serve a local area. Organization if you're an online-only business with no public address.
Yes. A service page often has Service, FAQPage and BreadcrumbList, with LocalBusiness on the homepage or sitewide.
Yes. It's part of every website we build, and of our SEO work. We'll reply within the hour (working hours).
Related
Want it set up for you? Get moving.
Tell us what you need. We'll reply within the hour (working hours), and most websites go live about 5 days after kick-off.
We'll reply within the hour (working hours).
Or email hello@foundryagency.co.uk