Rule: structured-data-complete
Different schema types have different required fields. An Article without a headline, a Product without a name, a FAQ without mainEntity — these are structurally valid JSON-LD but functionally useless for rich results. This rule goes beyond @context/@type validation and checks type-specific required fields.
What it checks
For each JSON-LD block with a recognized @type, Indxel checks that the required fields for that type are present. Supported types and their required fields: Article (headline, author, datePublished), Product (name, description), FAQPage (mainEntity), Organization (name, url), WebSite (name, url), BreadcrumbList (itemListElement), HowTo (name, step), SoftwareApplication (name, applicationCategory).
Thresholds
All recognized schema types have their required fields present
One or more recognized schema types are missing required fields
Edge cases
Unrecognized @type values (e.g., custom types not in Indxel's list) are skipped. The rule only validates types it knows about.
Nested objects count: if Article requires 'author' and you provide author: { '@type': 'Organization', name: 'Acme' }, that passes. An empty author: {} does not.
Arrays count: FAQPage requires mainEntity. An empty array (mainEntity: []) technically passes presence check but is functionally empty. Indxel checks for presence, not emptiness of arrays.
If structured-data-valid fails (missing @context or @type), this rule is still run on blocks that do have @type.
Configuration
// indxel.config.ts
import { defineSEO } from "indxel";
export default defineSEO({
rules: {
"structured-data-complete": true, // enabled by default
},
});
// Required fields by type:
// Article: headline, author, datePublished
// Product: name, description
// FAQPage: mainEntity
// Organization: name, url
// WebSite: name, url
// BreadcrumbList: itemListElement
// HowTo: name, step
// SoftwareApplication: name, applicationCategoryFrequently asked questions
What types does Indxel know about?
Indxel validates required fields for: Article, Product, FAQPage, Organization, WebSite, BreadcrumbList, HowTo, and SoftwareApplication. Other types are ignored by this rule but still pass structured-data-present and structured-data-valid.
How do I find the required fields for a schema type?
Check schema.org for the official specification. Google's Rich Results documentation lists which fields are required vs recommended for each type. Indxel's checks align with Google's required fields.