I’m at a loss and hoping someone here has seen this before. I’ve spent weeks debugging this and I’m running out of ideas.
My store: negativescu.ro (analog photography — film stock, lab development, accessories)
Background: Migrated from OpenCart to Shopify in March 2026. All 301 redirects in place, sitemaps submitted, no crawl errors. Saw steady growth in GSC through May — merchant listings, product snippets, favicon all showing correctly.
What collapsed in June:
Product rich snippets dropped sharply
Merchant listings nearly disappeared
Favicon stopped showing in SERPs
No errors, no manual actions, no GSC warnings — nothing
What I investigated and fixed:
After digging into the page source I found a conflict: my Rise theme was outputting {{ product | structured_data }} while Judge.me was injecting a separate aggregateRating microdata block — two competing structured data nodes on the same page.
I fixed it by:
Replacing {{ product | structured_data }} with a fully custom JSON-LD block in sections/main-product.liquid
Adding aggregateRating conditionally from Judge me metafields (reviews.rating / reviews.rating_count)
Adding shippingDetails, hasMerchantReturnPolicy, validFrom, priceValidUntil to the Offer node
Completely disabling Judge me JSON-LD and microdata injection
Rich Results Test now returns zero errors, zero warnings — Product, Merchant Listing, and Review snippets all detected correctly
Current situation: The decline continues. I understand GSC has a delay, but it’s been weeks and the trend hasn’t reversed. I’m not sure if:
The post-migration Google Dance is still affecting rich result eligibility
There’s something else in my setup causing this
I just need to wait longer
What I’ve already ruled out:
Redirect issues (all 301s verified)
Sitemap problems (submitted and indexed)
Crawl errors (none in GSC)
Structured data syntax errors (Rich Results Test passes clean)
Duplicate JSON-LD (only one application/ld+json block in page source)
I’m genuinely stuck. Has anyone experienced a similar post-migration drop in rich results that persisted despite clean structured data? How long did it take to recover?
You’ve done thorough debugging, so here are the usual causes of a persistent post-migration rich-result decline even with clean markup. (1) Merchant listings depend heavily on Merchant Center, not just on-page markup, so check that your GMC feed / free listings are still active and there are no item disapprovals separate from GSC. (2) Rich result eligibility isn’t the same as display; Google often reduces snippet display for a domain after a platform migration while it re-evaluates trust, and the Product snippets vs Merchant listings reports recover on different timelines (often 8-12+ weeks). (3) Confirm Google fetches the JSON-LD from the rendered page: URL Inspection > View crawled page > check the rendered HTML actually contains one ld+json block, since a client-side-injected block can pass Rich Results Test but be missed at crawl. (4) Favicon dropping usually signals a rendering/head change from the theme edit, so verify rel=“icon” and canonical are still valid in the rendered head. If the rendered HTML shows a single clean Product node and GMC is healthy, this is most likely still the re-evaluation window; the fix is patience plus keeping the feed clean. Recovery in similar cases has typically been 1-3 months.
One caution before treating this as a fixed 8-12 week waiting period: Google does not publish a fixed rich-result recovery window after a migration. A clean Rich Results Test and valid enhancement items establish eligibility, not whether Google will serve the feature.
I would separate a rich-result display change from a broader search visibility change:
In Search Console Performance, compare the same product URLs and queries before and after the decline, then filter Search appearance for Product snippets and Merchant listings. If ordinary impressions or positions fell too, this is broader than the JSON-LD.
For a sample of affected URLs, use URL Inspection to check the Google-selected canonical, last crawl, and crawled HTML. A clean live test does not prove that the currently indexed canonical contains the same markup.
If Merchant Center is connected, check item status and price or availability mismatches. A feed is not required for merchant-listing eligibility; Google supports structured data, a feed, or both, and says using both together maximizes eligibility.
Treat the favicon separately. Check the home page rel=“icon”, confirm that the home page and icon are crawlable, and keep the icon URL stable. You can then request reindexing of the home page. Google says favicon processing can take days to weeks and display is not guaranteed.
The dates are also worth comparing. Google’s May 2026 core update finished on June 2, and its global June spam update ran June 24-26. That does not prove either caused the decline, but it makes “the March migration is still settling” only one hypothesis.
I would avoid further schema changes unless one of those checks exposes a real mismatch.
According to my experience, this is a classic post-cleanup re-evaluation delay combined with how Google handles domain trust after structural schema changes. Passing the Rich Results Test with 0 errors means your syntax is correct, but Google showing rich snippets is an algorithmic privilege, not an automatic guarantee immediately after a fix.
Here is what is likely happening and the exact steps you should take:
Re-evaluation & Processing Delay (4 to 8 Weeks)
When Google detects conflicting or duplicate schema (like the Theme + Judge.me clash you had), it often revokes rich snippet eligibility for the domain. Once you push a fix, Googlebot needs to re-crawl all affected pages, re-index them, and then pass that data through their trust algorithms. It normally takes 3–6 weeks (and sometimes up to 8 weeks) after a complete fix for the trend to reverse in GSC.
Check @id Reconciliation in Custom JSON-LD
Since you built a fully custom JSON-LD block in main-product.liquid, ensure your Product and Offer nodes share a consistent @id anchored to the canonical URL. If Shopify generates variant URLs (e.g., ?variant=12345), the schema should explicitly reference the main canonical URL so Google doesn’t evaluate variants as fragmented product nodes.
Empty Conditional Metafields
Double-check your conditional Judge.me metafield implementation (reviews.rating / reviews.rating_count). If a product has 0 reviews, make sure the Liquid code completely omits the aggregateRating node instead of rendering empty or 0 values. Empty nodes can quietly strip rich snippet eligibility for those specific URLs.
Google Merchant Center (GMC) Sync
Merchant Listings rely heavily on your direct GMC feed connection, not just on-page JSON-LD. After migrating from OpenCart to Shopify, ensure the official Google & YouTube app is actively syncing your feed without item-level disapprovals inside GMC. On-page schema supports Merchant Listings, but GMC feed health dictates eligibility.
Favicon Dropping
Favicon loss in Shopify usually happens due to CDN path changing or strict Google Favicon crawler requirements. Ensure your <link rel="icon"> in theme.liquid uses a fixed size (multiples of 48x48px, e.g., 48x48, 96x96) and is easily crawlable without dynamic CDN redirection blockages.
What to do now:
Use the GSC URL Inspection tool to manually trigger “Request Indexing” on 10–15 top product pages to speed up re-crawling.
Check Google Merchant Center for any silent warnings under the Diagnostics tab.
Give it another 2–3 weeks without altering the structured data code again, as constant edits reset the re-crawling queue.
I hope you find these suggestions helpful.
Thanks!
From the screenshots, the technical side looks much cleaner now: I can see 0 invalid HTTPS URLs and the structured data reports are showing valid items with no current critical issues.
One thing I would be careful about is assuming that the Rich Results Test passing means the rich results should automatically return. Google explicitly says that valid structured data makes a page eligible, but does not guarantee that the rich result will actually be shown.
Since you’re seeing both Product snippets and Merchant listings decline, I’d check those separately in Search Console rather than treating them as one structured data issue. Google has separate reporting for Merchant listings and Product snippets.
I’d also take a few of the affected product URLs and run them through URL Inspection → Live Test, then compare what Google can actually see there with the JSON-LD you’re testing manually. That can help rule out a difference between the source you’re testing and what Googlebot is receiving.
If you use Merchant Center/free listings, I’d check the product diagnostics there as well. Google notes that using both product structured data and a Merchant Center feed can help maximize eligibility and allow Google to compare the product data.
So I wouldn’t conclude yet that this is simply a “Google Dance” or that you just need to wait. Your cleanup was worthwhile, but I’d verify the live Googlebot view and Merchant Center side before attributing the continued decline to the migration alone.
If you find my answer helpful, please feel free to mark it as the solution.
The Enhancements reports in Search Console only report on a sampling of your URLs to determine if data is detected or not, and if detected, is the data valid or invalid.
This is not a report to measure how effective the data is and if you are earning Rich Results.
As an example, the Review Snippets chart can fluctuate based on the number of URLs Google samples that have review data. The report is only reporting from a sample of URLs if the review data is present and valid (quality). It’s not a measurement of pages with Review Rich Results (effectiveness).
Google’s Docs on their Rich Results reporting is very clear on this. Even their reporting says the only effective way to measure with accuracy if the data is present, is to run a given page through the Rich Results Testing Tool (or URL inspection tool via Search Console)
The reports aren’t a comprehensive list of all detected items. They show a sample of detected items to help assess the quality of your structured data. Use the URL Inspection tool to see if URLs not listed in the report have detected the structured data. Rich result report overview - Search Console Help
All that to say, the Search Enhancements reports aren’t concerning to me at all. Pick any product page, run it through the testing tools, and you’ll see the data is present and hopefully valid. That’s the concern, if the data is valid or not.
Since you’ve already fixed the duplicate schema, I’d check two things next:
URL Inspection in Search Console — inspect a few affected product URLs and compare Google’s indexed version with the current page. Check the Google-selected canonical and the rendered page as well.
Google Merchant Center — check the Products/Diagnostics area for visibility, approval issues, price or availability mismatches, and other product data problems. Merchant listings depend on more than the schema on the page.
I’d also treat the favicon issue separately from the product rich-result issue.
If both URL Inspection and Merchant Center look healthy, I would avoid changing the JSON-LD again for now and monitor the affected URLs over the next few weeks. A successful Rich Results Test by itself isn’t enough to explain a drop in actual Google Search visibility.
Clean schema can still lose rich results when the visible product data, canonical URL, or Merchant Center feed tells Google something different. I’d compare one affected product with a product that still has rich results and look for mismatches there.
You’ve already done a much deeper cleanup than most migration cases I’ve seen, so I’d be hesitant to keep changing the JSON-LD without checking whether Google is actually processing the new signals.
One thing I’d compare in GSC is the affected products before vs. after the drop: URL Inspection → indexing/canonical status, then the Merchant listings and Product snippets reports by issue/date. I’d also check a sample of URLs in Google’s cached/live rendered HTML to make sure the structured data Google sees matches what the Rich Results Test sees.
The timing is interesting too — if everything was healthy through May and the decline started in June, I’d look for a broader change in Google’s eligibility/processing rather than assuming the migration itself is still “settling.” A clean Rich Results Test only confirms that the markup is valid; it doesn’t guarantee Google will choose to show the result.
I’d probably stop making further schema changes for the moment, establish a controlled sample of 10–20 products, and monitor their indexing, Merchant listings eligibility, and impressions separately. That should help identify whether this is a crawling/indexing issue, an eligibility issue, or simply reduced SERP visibility.
I am so sorry you are dealing with this. It is incredibly frustrating to fix the technical code perfectly and still watch your numbers drop. You are definitely not alone in experiencing this nightmare.
When Google saw the conflict between your Rise theme and the Judge.me app, it dropped your rich results to be safe. Now that you have built a clean, custom JSON-LD block, Google has to completely re-evaluate and re-trust your pages. This recovery almost always takes 4 to 6 weeks, so you are likely just stuck in Google’s waiting room right now.
However, you should double-check one very common trap: when you write custom schema in Shopify, it often fails to update dynamically when a user switches a product variant (like picking a different film format or ISO). If Google’s live crawler catches mismatched price or stock data on a variant, it will continue to hold your rich snippets back.
Honestly, managing custom JSON-LD in your theme files is a massive headache because it can easily break again when your theme updates. To avoid this stress, I highly recommend using SearchPie: SEO, Speed & Schema. It automatically builds advanced, conflict-free schema markup for your products and reviews. It handles all the complex dynamic variant variables in the background, so you never have to manually edit liquid code to keep your Google listings healthy.
Hang in there! You did the right troubleshooting, and your recovery should be right around the corner.