Schema Markup and Structured Data
Schema markup tells search engines what your content means, not just what it says. A plumbing service page without schema is plain text. The same page with Service, Organisation, and FAQPage schema is a structured entity Google can parse, categorise, and surface in rich results.
We implement schema as hand-written JSON-LD within an entity-interconnected @graph. Every schema node on every page references back to your site-wide Organisation and WebSite entities through @id, creating a web of structured data that reinforces your site's topical identity across every page.
Schema Types We Implement
Core Entity Types
- Organisation: your business entity, referenced by every other schema node on the site through @id.
- WebSite: your site entity, linked to the Organisation as publisher and used as the parent reference for all WebPage nodes.
- WebPage: page-level metadata including canonical URL, date published, and date modified.
Content and Service Types
- Service: describes an offered service. Use provider to reference the organisation and areaServed to describe its coverage. Add offers with pricing where applicable.
- Article: for blog posts and guides, with author, publisher, and date properties.
- FAQPage / HowTo: describe FAQs and step-by-step instructions. Google Search no longer displays rich results for these types. See our schema markup statistics for adoption trends.
- BreadcrumbList: navigation path schema on every page, helping search engines understand your site hierarchy.
How Do You Connect Entities with Schema Markup?
Connect entities with schema markup by assigning each entity a stable @id. Reference the organisation through the provider property of each Service and the publisher property of each Article or WebSite where those relationships apply. Use one @graph per page to organise the nodes.
Use an absolute URL such as https://example.co.uk/#organization as the organisation's @id. Reuse that identifier wherever the markup describes the same organisation. In JSON-LD, objects with the same @id identify the same entity. Repeating a full object with that identifier does not create a separate entity. Consistent identifiers express relationships explicitly but do not guarantee how Google reconciles entities across pages.
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://example.co.uk/#organization",
"name": "Example Plumbing Ltd", "url": "https://example.co.uk/" },
{ "@type": "WebSite", "@id": "https://example.co.uk/#website",
"url": "https://example.co.uk/",
"publisher": { "@id": "https://example.co.uk/#organization" } },
{ "@type": "Service", "@id": "https://example.co.uk/boiler-repair/#service",
"name": "Boiler repair",
"provider": { "@id": "https://example.co.uk/#organization" } }
]
}Our entity linking process runs in four steps:
- Step 1: Audit existing schema. We crawl your site to identify any existing schema markup, check for errors in current implementations, and document which pages have schema and which do not.
- Step 2: Define the entity graph. We map out the entities on your site (your organisation, your services, your content types) and define how they connect through @id references within a single @graph per page.
- Step 3: Write per-page JSON-LD. Each page receives a hand-written JSON-LD block containing the schema types appropriate to its content. Every node references back to the site-wide Organisation and WebSite entities.
- Step 4: Validate and deploy. All schema is tested through Google Rich Results Test and Schema.org Validator. We fix any warnings or errors before deployment and verify that rich results are eligible where applicable.
Schema Validation
Invalid structured data can prevent the affected markup from qualifying for supported rich results. We validate every page through three layers: Google Rich Results Test for eligibility checking, Schema.org Validator for specification compliance, and manual JSON-LD inspection for entity relationship integrity.
Check for invalid JSON, inappropriate property values, inconsistent @id references and markup that does not match the visible content. Check required properties against the documentation for each supported Google search feature. Organisation names and article publication dates are recommended details rather than universally required properties.
Frequently Asked Questions
We implement Organisation, WebSite, WebPage, Service, ProfessionalService, Article, FAQPage, HowTo, BreadcrumbList, Offer, ItemList, and LocalBusiness schema types. Each type is used where it is semantically appropriate. We do not add schema types speculatively or where the page content does not support them.
We write all schema as manual JSON-LD within an @graph structure. Plugins like Yoast or RankMath generate schema automatically but cannot handle entity interconnection, cross-page @id references, or custom schema types like HowTo with step-level granularity. Manual implementation gives us full control over every node and relationship.
We validate every page through Google Rich Results Test, Schema.org Validator, and manual inspection of the JSON-LD output. We check for missing required properties, incorrect @id references, broken entity relationships, and schema types that do not match the page content. Validation results are included in the handover document.
Related Services
SEO Website Build
A complete SEO-optimised website built from keyword research through to deployment. 15-50 pages with topical authority architecture.
Keyword Research
50-200 keywords clustered by intent and mapped into a hub-and-spoke architecture that builds topical authority from day one.
Technical SEO Setup
Canonical URLs, XML sitemaps, robots.txt, heading hierarchy validation, Core Web Vitals optimisation, and search engine submission.