What can we help you with?
ClaimReview Schema Integration
ClaimReview Schema Integration
Instructions
Implement ClaimReview structured data markup for fact-checking content. ClaimReview is the schema.org standard that enables search engines and AI systems to identify, index, and surface fact-check results in search results, knowledge panels, and AI answers.
ClaimReview Schema Structure
Required Properties
{
"@context": "https://schema.org",
"@type": "ClaimReview",
"url": "https://example.com/fact-check/claim-title",
"claimReviewed": "The exact claim being fact-checked, quoted verbatim",
"author": {
"@type": "Organization",
"name": "Fact-Checking Organization Name",
"url": "https://example.com"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": 1,
"bestRating": 5,
"worstRating": 1,
"alternateName": "False"
},
"itemReviewed": {
"@type": "Claim",
"author": {
"@type": "Person",
"name": "Person who made the claim"
},
"datePublished": "2026-04-10",
"appearance": {
"@type": "OpinionNewsArticle",
"url": "https://source-where-claim-appeared.com/article"
}
},
"datePublished": "2026-04-14"
}
Rating Scale Standards
Define a consistent rating scale and map it to ratingValue:
| Rating Name | ratingValue | Description |
|---|---|---|
| True | 5 | Claim is accurate |
| Mostly True | 4 | Claim is largely accurate with minor issues |
| Mixed | 3 | Claim contains both accurate and inaccurate elements |
| Mostly False | 2 | Claim is largely inaccurate |
| False | 1 | Claim is inaccurate |
Additional optional ratings to consider:
- Unverifiable: Claim cannot be verified with available evidence
- Misleading: Technically accurate but presented in a deceptive context
- Out of Context: Claim is accurate in isolation but misrepresents the source
- Satire: Claim originates from satirical content
Map these to the 1-5 scale consistently. Document the mapping in your editorial guidelines.
Optional but Recommended Properties
{
"reviewBody": "Summary of the fact-check findings (2-3 sentences)",
"dateModified": "2026-04-14",
"itemReviewed": {
"@type": "Claim",
"author": {
"@type": "Person",
"name": "Claim Author",
"jobTitle": "Title/Role",
"sameAs": "https://profile-url"
},
"datePublished": "2026-04-10",
"appearance": [
{
"@type": "OpinionNewsArticle",
"url": "https://first-appearance.com/article",
"headline": "Article headline",
"datePublished": "2026-04-10"
}
],
"firstAppearance": {
"@type": "OpinionNewsArticle",
"url": "https://original-source.com/article"
}
}
}
Google Fact Check Tools API Integration
Claim Search API
Search existing fact-checks across all publishers:
GET https://factchecktools.googleapis.com/v1alpha1/claims:search
?query={search_query}
&languageCode=en
&key={API_KEY}
Response structure:
{
"claims": [
{
"text": "claim text",
"claimant": "who said it",
"claimReview": [
{
"publisher": { "name": "", "site": "" },
"url": "",
"title": "",
"reviewDate": "",
"textualRating": "",
"languageCode": "en"
}
]
}
]
}
Use the Claim Search API to:
- Check if a claim has already been fact-checked by others
- Avoid duplicate fact-checking effort
- Cross-reference your rating with other organizations’ findings
Claim Markup API
Submit your ClaimReview markup for indexing:
POST https://factchecktools.googleapis.com/v1alpha1/pages
?key={API_KEY}
{
"pageUrl": "https://your-site.com/fact-check/article",
"claimReviewMarkups": [
{
"url": "https://your-site.com/fact-check/article",
"claimReviewed": "The claim text",
"claimDate": "2026-04-10",
"claimFirstAppearance": "https://source-url.com",
"claimAuthor": { "name": "Claim Author" },
"rating": {
"textualRating": "False",
"ratingValue": 1,
"worstRating": 1,
"bestRating": 5
}
}
]
}
WordPress Implementation
PHP Function for ClaimReview Injection
function render_claimreview_schema( $post_id ) {
$claim = get_post_meta( $post_id, '_claimreview_claim', true );
$rating = get_post_meta( $post_id, '_claimreview_rating', true );
$claimant = get_post_meta( $post_id, '_claimreview_claimant', true );
$claim_date = get_post_meta( $post_id, '_claimreview_claim_date', true );
$claim_url = get_post_meta( $post_id, '_claimreview_claim_url', true );
if ( empty( $claim ) || empty( $rating ) ) {
return;
}
$rating_map = [
'true' => [ 'value' => 5, 'name' => 'True' ],
'mostly-true' => [ 'value' => 4, 'name' => 'Mostly True' ],
'mixed' => [ 'value' => 3, 'name' => 'Mixed' ],
'mostly-false' => [ 'value' => 2, 'name' => 'Mostly False' ],
'false' => [ 'value' => 1, 'name' => 'False' ],
];
$r = $rating_map[ $rating ] ?? $rating_map['mixed'];
$schema = [
'@context' => 'https://schema.org',
'@type' => 'ClaimReview',
'url' => get_permalink( $post_id ),
'claimReviewed' => $claim,
'author' => [
'@type' => 'Organization',
'name' => get_bloginfo( 'name' ),
'url' => home_url(),
],
'reviewRating' => [
'@type' => 'Rating',
'ratingValue' => $r['value'],
'bestRating' => 5,
'worstRating' => 1,
'alternateName' => $r['name'],
],
'itemReviewed' => [
'@type' => 'Claim',
'author' => [ '@type' => 'Person', 'name' => $claimant ],
'datePublished' => $claim_date,
],
'datePublished' => get_the_date( 'c', $post_id ),
];
if ( ! empty( $claim_url ) ) {
$schema['itemReviewed']['appearance'] = [
'@type' => 'OpinionNewsArticle',
'url' => $claim_url,
];
}
echo '<script type="application/ld+json">' . wp_json_encode( $schema, JSON_UNESCAPED_SLASHES ) . '</script>';
}
add_action( 'wp_head', function() {
if ( is_singular( 'fact-check' ) ) {
render_claimreview_schema( get_the_ID() );
}
});
Validation and Verification
Pre-Publication Checklist
- [ ]
claimReviewedcontains the exact verbatim claim (not paraphrased) - [ ]
authoridentifies the fact-checking organization with URL - [ ]
reviewRatinguses the correct scale (1-5) withalternateName - [ ]
itemReviewed.authoridentifies who made the claim - [ ]
datePublishedis in ISO 8601 format - [ ] JSON-LD syntax is valid (test with JSON validator)
- [ ] Schema validates in Google Rich Results Test
- [ ] Page is accessible to Googlebot (not blocked by robots.txt)
Google Search Console Verification
- Submit the fact-check URL in Search Console’s URL Inspection tool
- Verify “ClaimReview” appears in detected structured data
- Check for errors or warnings in the Enhancement report
- Monitor the “Fact check” section in Search Console Enhancements
- Track indexing status and rich result appearances
Multiple Claims per Article
When a single article fact-checks multiple claims, use an array:
[
{ "@context": "https://schema.org", "@type": "ClaimReview", "claimReviewed": "Claim 1", ... },
{ "@context": "https://schema.org", "@type": "ClaimReview", "claimReviewed": "Claim 2", ... }
]
Each claim must be independently rated and sourced.
Inputs Required
- The exact claim being fact-checked (verbatim)
- Who made the claim (person or organization)
- When and where the claim was made (date, source URL)
- Fact-check verdict (rating on the defined scale)
- Fact-check article URL
- Fact-checking organization name and URL
- Google Fact Check Tools API key (for API integration)
Output Format
## ClaimReview Implementation: [Claim Summary]
### Generated JSON-LD
[Complete, valid ClaimReview JSON-LD block]
### Validation Results
- JSON syntax: [valid/invalid]
- Required properties: [all present / missing: X]
- Google Rich Results Test: [pass/fail]
### API Integration
- Claim Search: [X existing fact-checks found for this claim]
- Markup submission: [submitted / pending / not applicable]
### WordPress Integration
- Post meta fields: [configured / needs setup]
- Injection hook: [active / needs activation]
Anti-Patterns
- Paraphrasing the claim —
claimReviewedmust be the exact verbatim claim, not a summary or interpretation - Missing claim author — Google requires identification of who made the claim; anonymous claims weaken the markup
- Inconsistent rating scales — Define your 1-5 scale once and use it identically across all fact-checks
- Fact-checking opinions — ClaimReview is for factual claims; opinions and predictions are not fact-checkable
- Self-serving ratings — Rating your own organization’s claims positively undermines credibility
- No validation before publication — Always test in Google Rich Results Test before going live
- Ignoring Search Console — Monitor the Fact Check enhancement report for errors and indexing issues
- Stale claim dates — Ensure
datePublishedon the claim reflects when the claim was actually made, not when you reviewed it
