Yotpo injects duplicate FAQPage schema on Shopify pages
Summary
Yotpo's Shopify app injects FAQPage schema into product pages without store owner consent, causing duplicate structured data and Google validation errors. Duplicate or malformed FAQPage blocks cause Google to flag rich results as invalid or ignore them entirely, tanking eligibility. Add a JavaScript snippet to your theme.liquid file to strip the Yotpo-injected FAQPage blocks, but contact Yotpo support for a permanent server-side fix.
What happened
Yotpo’s Shopify app is injecting FAQPage structured data into product pages without store owners’ knowledge, causing duplicate schema and validation errors. A practitioner reported in r/TechSEO that their product pages were throwing “Main Entity Missing” errors, with the error field pointing to dynamically generated IDs from yotpo.com.
The user tried disabling the Yotpo addon and changing its settings, but neither resolved the issue. The FAQPage JSON-LD blocks persisted in the page source.
Why it matters
Duplicate or malformed FAQPage schema creates real problems in Google’s Rich Results validation. When two FAQPage blocks exist on a single product page, Google may flag both as invalid or simply ignore them. Either outcome means lost eligibility for FAQ rich results, which are now limited to well-known government and health sites.
The deeper issue is that third-party Shopify apps can inject structured data into your pages without explicit consent. Store owners who have carefully implemented their own FAQ schema may not realize Yotpo is adding a second, conflicting block. Duplicate or conflicting structured data blocks on a single page can cause validation errors and make it harder for Google to determine which markup to use for rich results.
Shopify merchants running Yotpo are the most directly affected. Any store with its own FAQ schema on product pages is at risk of duplicate conflicts. Even stores without custom FAQ markup could see validation warnings from Yotpo’s injected blocks if the required mainEntity property is missing.
What to do
Check your product pages first. Open a product page in Chrome DevTools, inspect the rendered DOM, and search for FAQPage in the JSON-LD blocks. Viewing raw page source will not show JavaScript-injected schema. If you see a block with a URL referencing yotpo.com, the app is injecting schema you didn’t add.
Run those pages through Google’s Rich Results Test to confirm whether validation errors are present.
The r/TechSEO poster shared a JavaScript fix that strips the Yotpo-injected FAQPage blocks from the DOM. Add the following to your theme.liquid file before the closing </body> tag:
<script>
(function() {
function removeYotpoFAQ() {
document.querySelectorAll('script[type="application/ld+json"]').forEach(function(el) {
if (el.innerHTML.includes('yotpo.com/go') && el.innerHTML.includes('FAQPage')) {
el.remove();
}
});
}
document.addEventListener("DOMContentLoaded", removeYotpoFAQ);
setTimeout(removeYotpoFAQ, 1000);
setTimeout(removeYotpoFAQ, 2000);
})();
</script>
The script runs at DOMContentLoaded and again at 1-second and 2-second delays. The repeated execution accounts for Yotpo potentially injecting its schema after initial page load.
This is a workaround for browsers, not a reliable fix for search crawlers. Googlebot’s rendering pipeline separates crawling and rendering, and there is no guarantee the setTimeout callbacks will execute before Googlebot captures the DOM. Contact Yotpo support to disable the FAQPage injection at the source for a permanent fix.
Watch out for
Googlebot may still see the duplicates. Google renders JavaScript, but timing matters. If Googlebot captures the DOM before the setTimeout callbacks fire, the duplicate FAQPage blocks will still be indexed. Server-side removal or disabling the injection through Yotpo’s settings would be more reliable.
Other Yotpo schema injections. If Yotpo is injecting FAQPage markup without explicit configuration, check whether it’s also adding Review or Product schema that conflicts with your own structured data. Search your page source for all JSON-LD blocks containing yotpo.com references.