A Guide on How to Make Structured Data: Part 2
6. Testing and Validating Your Structured Data
Structured data only helps you if it is valid. Errors - even minor ones - can cause search engines to ignore your markup entirely.
- Google Rich Results Test (
search.google.com/test/rich-results) - paste a URL or code snippet to see which rich result types are eligible and which properties are missing or incorrect. - Schema.org Validator (
validator.schema.org) - checks conformance against the Schema.org specification independently of Google's requirements. - Google Search Console - under the Enhancements section, shows structured data coverage across your entire site with warnings and errors.
| Error | How to Fix |
|---|---|
| Missing required property | Add the required field per the Google documentation for that type |
| Invalid value type | Check the expected type (Text vs URL vs Number) and correct it |
| Incorrect @context URL | Use exactly "https://schema.org" - no trailing slash variations |
| Not eligible for rich result | Check Google's eligibility requirements; not all schema types get rich results |
| Mismatched content | Ensure structured data reflects visible page content |
| Broken JSON syntax | Run your JSON through a linter (jsonlint.com) to find syntax errors |
7. Implementation Strategies
7.1 Static HTML Sites
Add a <script type="application/ld+json"> block directly to the <head> of each page. Author it by hand or generate it from your content at build time.
7.2 CMS Platforms
- WordPress - use a plugin like Yoast SEO, Rank Math, or Schema Pro. These generate JSON-LD automatically based on post type, categories, and custom fields.
- Shopify - product and breadcrumb schema is often built in; supplement with an app for richer types like Review or FAQPage.
- Webflow - add custom code blocks to page
<head>sections, or use CMS collection fields to inject dynamic values.
7.3 JavaScript Frameworks (React, Vue, Next.js)
Inject your JSON-LD via a library like next-seo or react-helmet. For server-side rendered frameworks, generate the JSON-LD server-side so it is present in the initial HTML response - critical for crawlability.
// Next.js example using next-seoimport { ProductJsonLd } from "next-seo";export default function ProductPage({ product }) { return ( <ProductJsonLd productName={product.name} images={product.images} description={product.description} brand={product.brand} offers={[{ price: product.price, priceCurrency: "GBP", availability: "InStock" }]} /> );}7.4 Dynamically Generated Schema
For sites with product catalogues, event listings, or article archives, generate your JSON-LD programmatically. Pull values from your database or API and serialise them into valid JSON. This ensures your structured data stays in sync with your actual content - a critical requirement, since Google penalises markup that does not match visible page content.
8. Best Practices and Common Pitfalls
8.1 Best Practices
- Only mark up content that is visible to users on the page. Hidden or misleading markup violates Google's guidelines.
- Use the most specific type available. If your business is a Dentist, use
Dentist, not justLocalBusiness. - Include as many recommended properties as possible - not just required ones.
- Keep your structured data in sync with your content. If a product price changes, update both the page and the schema.
- Combine multiple schema types using
@graphon pages where more than one entity is relevant. - Test with the Rich Results Test after every significant change.
8.2 Common Mistakes
- Using structured data for content that is not on the page - this is a spam violation.
- Copy-pasting example code without updating all placeholder values.
- Forgetting to update schema when prices, dates, or availability changes.
- Using conflicting types or properties on the same entity.
- Ignoring Search Console errors - eligible rich results can be revoked.
Important: Google explicitly prohibits structured data that deceives users or misrepresents content. Markup that does not match visible page content, or that uses misleading information, may result in manual penalties applied to your entire site.
9. Advanced Topics
9.1 sameAs and Linked Data
The sameAs property links your entity to its counterpart on authoritative sources like Wikidata, Wikipedia, or social media profiles, helping search engines build a confident knowledge graph entry.
{ "@type": "Organization", "name": "Example Ltd", "url": "https://example.com", "sameAs": [ "https://www.wikidata.org/wiki/Q12345", "https://twitter.com/exampleltd", "https://www.linkedin.com/company/example-ltd" ]}9.2 Speakable
The Speakable schema type designates which sections of a page are most appropriate for audio playback - useful for voice search and currently used primarily by Google Assistant for news articles.
9.3 Dataset and Scientific Data
If you publish open data or research findings, the Dataset type makes your data discoverable in Google Dataset Search. Key properties include name, description, url, license, creator, and distribution.
9.4 Structured Data and AI
As AI-powered search (such as Google's AI Overviews) becomes more prevalent, structured data is playing a new role. Well-marked-up content is more easily parsed by large language models serving as search intermediaries, making it more likely your content will be cited or surfaced in AI-generated summaries.
10. Quick Reference Checklist
Use this checklist when adding structured data to any new page:
- Identify the most specific Schema.org type that fits your content
- Confirm the content the schema describes is visible on the page
- Include
@contextand@typeas the first two properties - Add all required properties for the type (check Google's documentation)
- Add all recommended properties for maximum rich result eligibility
- Nest related types (Offer, AggregateRating, PostalAddress) appropriately
- Place JSON-LD inside a
<script type="application/ld+json">block in<head>or<body> - Validate using Google Rich Results Test before publishing
- Monitor Google Search Console Enhancements after deployment
- Update structured data whenever page content changes
For the latest Schema.org types and properties, refer to schema.org. For Google's specific requirements and rich result features, refer to developers.google.com/search/docs/appearance/structured-data/intro-structured-data.
Website Plans

Start-Up Recruiter Plan — £149 + VAT per month
Launch your agency with enterprise-grade technology on a bootstrap budget. This plan delivers our most robust features at an entry-level price point, ensuring you don't have to compromise on tech while managing cash flow. It provides the credibility needed to win the attention of clients and candidates without the capital expenditure of a custom build.
This plan has no build cost and no upfront fees, just a simple, recurring monthly fee.

Template Website Designs — £199 + VAT per month
Start with a proven theme, then tailor it and build truly unique internal pages with Design Studio.
This plan has no build cost and no upfront fees, just a simple, recurring monthly fee.

Semi-Bespoke Design — £299 + VAT per month
Get a homepage that’s designed uniquely for your agency, then build unlimited internal pages using Design Studio. It’s the hybrid option for recruiters who want more than a theme, without the cost and timelines of a fully bespoke design.
This plan has no build cost and no upfront fees, just a simple, recurring monthly fee.

Fully Bespoke Design — £599 + VAT per month
Our designers hand-draw every layout to align with your agency’s specific goals for every page of your website. We do not simply modify a theme; we build a pixel-perfect representation of your unique design goals.
This plan has no build cost and no upfront fees, just a simple, recurring monthly fee.

Get a Demo
Talk to a Recruitment Website Specialist
If you’re tired of rebuilding, replatforming, or being boxed in by your website provider, it’s time for something built properly. Use the link below. Or you can:
Call 01223 655278
Email darren@recruiterweb.co.uk
Connect on LinkedIn








