BreadcrumbList Schema Missing
Issue No: 59
Category: Structured Data & Rich Results
Issue type: Issue
Priority: IMPORTANT
Description
Inner pages are missing BreadcrumbList schema, preventing Google from displaying breadcrumb paths in SERPs and reducing the engine's understanding of site hierarchy.
How do we capture it
- For all non-homepage pages with depth > 1, check JSON-LD for
"@type": "BreadcrumbList" - Validate each
ListItemhasname,position, anditem(URL)
What to store
StructuredDataAudit with schemaType = BreadcrumbList, issueNumber = 57, plus StructuredDataField rows:
| Field | Type | Comment |
|---|---|---|
item_count | integer | Number of ListItem entries in the breadcrumb |
has_valid_items | boolean | All items have both name and item (URL) |
last_item_is_page | boolean | Final breadcrumb item matches current page URL |
Core audit fields: isPresent, rawJson
Condition for trigger
The following rules trigger this issue:
- Trigger Rule 1: Schema absent
- Target Field:
isPresent - Evaluation Logic:
isPresent = false - Severity: CRITICAL
- Diagnostic Message: "No BreadcrumbList on non-homepage page"
- Target Field:
- Trigger Rule 2: No items
- Target Field:
item_count - Evaluation Logic:
item_count = 0 (StructuredDataField) - Severity: CRITICAL
- Diagnostic Message: "Block exists but empty"
- Target Field:
- Trigger Rule 3: Invalid items
- Target Field:
has_valid_items - Evaluation Logic:
has_valid_items = false - Severity: CRITICAL
- Diagnostic Message: "Items missing name or URL"
- Target Field:
Sources
Long description
One of the most-deployed schema types (38–42% of AI-cited pages). Replaces raw URLs in SERPs with readable paths like example.com › blog › post-title.
Example:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://www.example.com/blog"
},
{ "@type": "ListItem", "position": 3, "name": "Post Title" }
]
}
SERP without schema: https://www.example.com/blog/post-title
SERP with schema: example.com › blog › post-title
How to Fix
- Add
BreadcrumbListto all inner pages dynamically from CMS hierarchy - Use sequential
positionvalues (1, 2, 3...) - Match visible breadcrumb navigation on the page exactly
- Last item may omit
itemURL (it is the current page)