This case study documents an eight-month engagement with a Singapore optical retailer that runs four outlets and sells frames, prescription lenses and contact lenses through its WordPress and WooCommerce store. Many of its product and category pages already ranked between positions 3 and 6 for searches like "titanium frames singapore" and "daily contact lenses". They were being outranked on clicks, though. Competitors' results showed price, stock status and review stars, while the retailer's results showed a plain blue link with a long, messy URL.
The site did have structured data, but most of it was broken. An old theme add-on output Product markup with no price or availability, the homepage carried review stars drawn from the business's Google reviews, and every page repeated two conflicting Organization blocks. Search Console's enhancement reports listed 214 errors, and only 37 pages qualified for any rich result at all. The team had no way of knowing how many clicks this was costing them, because nobody had compared click-through rate at the same positions over time.
| Metric | Baseline (Month 0) |
|---|---|
| Monthly Organic Clicks | 6,820 |
| Pages with Valid Rich Results | 37 |
| CTR at Positions 3 to 6 (product and category pages) | 2.9% |
| Rich-Result Impressions a Month | 9,400 |
| Structured Data Errors in Search Console | 214 |
| Product Pages Showing Review Snippets | 0 |
| Keywords Ranking Page 1 | 142 |
| Online Orders from Organic a Month | 118 |
| Eye Test Bookings from Organic a Month | 64 |
We tested every page template (home, category, product, outlet, article and FAQ pages) in Google's Rich Results Test and the Schema Markup Validator, and exported all errors and warnings from Search Console's enhancement reports. The audit found Product markup missing price and availability on all 318 products, review stars on the homepage taken from the business's own Google reviews, duplicate and conflicting Organization data, no outlet-level markup, no breadcrumbs and no author details on any article.
Schema only helps when Google can read it and trusts it. Broken markup is treated as if it is not there, and self-serving review markup can lose a site its rich results entirely. The audit gave the client's developer a single list of fixes, ranked by how many pages each one affected.
We wrote a Product and Offer specification for the developer: name, brand, GTIN where available, price in S$, availability, shipping and return details for merchant listings, and images. AggregateRating and Review markup was added only to product pages with real reviews left by verified buyers on the site. We removed the homepage stars that came from Google reviews, because Google does not show stars for reviews a business collects about itself in LocalBusiness or Organization markup.
Price, stock and shipping details in the search result answer the first questions a shopper has before they click. Stars from verified buyers add trust, and keeping them on product pages only is what Google's rules allow. Removing the self-serving markup also took away the risk of a manual action for misleading structured data.
We replaced the conflicting blocks with one Organization entity on the homepage, with the legal name, logo, contact details and links to the retailer's official profiles. Each of the four outlets got its own page with Optician markup (a type of LocalBusiness) showing its address, opening hours, phone number and eye test booking link, all matching its Google Business Profile. BreadcrumbList markup went on every category, product and article page.
One clear Organization entity helps Google connect the website, the brand and its outlets. Outlet markup that matches each Business Profile backs up the local results. Breadcrumbs replace the long URL in the search result with a short, readable path such as Home › Contact Lenses › Daily, which makes the result easier to scan.
The retailer's optometrists wrote or reviewed 26 eye care guides covering topics such as choosing lenses for screen work, myopia control for children and caring for contact lenses. Each guide has Article markup naming its author, linked to an author page listing the optometrist's qualifications and experience. We added FAQPage markup to product care and fitting pages to help Google understand the questions each page answers. We told the client upfront that Google now shows FAQ rich results mainly for well-known government and health websites, so we did not expect FAQ snippets to appear.
Eye care is health information, so Google looks for real expertise. Named, qualified authors make that expertise visible to people and to search engines. Being honest about FAQ markup kept expectations realistic: it helps understanding and can support other features, but it is not a shortcut to a bigger result.
We checked the Search Console enhancement reports every week and fixed new errors and warnings as they appeared, mostly missing shipping details and out-of-date prices on discontinued products. To measure impact fairly, we compared click-through rate for the same pages within the same average position band (3 to 6) across matching eight-week periods, and left out sale periods that would have skewed the figures.
Rich results can switch off quietly when a template changes or a field goes missing, so weekly checks kept the gains in place. Comparing CTR at the same positions separated the effect of the markup from ranking changes, which is the only honest way to show what schema did on its own.
| Metric | Baseline | Month 8 | Change |
|---|---|---|---|
| Monthly Organic Clicks | 6,820 | 14,930 | +119% |
| Pages with Valid Rich Results | 37 | 468 | +1,165% |
| CTR at Positions 3 to 6 (product and category pages) | 2.9% | 5.4% | +86% |
| Rich-Result Impressions a Month | 9,400 | 182,600 | +1,843% |
| Structured Data Errors in Search Console | 214 | 0 | All fixed |
| Product Pages Showing Review Snippets | 0 | 296 | New |
| Keywords Ranking Page 1 | 142 | 268 | +89% |
| Online Orders from Organic a Month | 118 | 241 | +104% |
| Eye Test Bookings from Organic a Month | 64 | 139 | +117% |
| Period | Focus | What Happened |
|---|---|---|
| Month 1-2 | Errors Fixed | Audit complete and the self-serving review stars removed. Product and Offer markup live on all products. Valid rich results on 152 pages. |
| Month 3-5 | Outlets + Breadcrumbs | Outlet, Organization and breadcrumb markup live. Review snippets showing on product pages. Organic clicks reach 10,480 a month. |
| Month 6-8 | Measured Gains | Valid rich results on 468 pages and zero errors. CTR at positions 3 to 6 reaches 5.4% and organic clicks 14,930 a month. |
Rankings barely moved for the pages we tracked. These four changes are what made more people click.
Shoppers comparing frames want to know the price and whether it is in stock before they click. Showing both in the search result made the retailer's listings more useful than plain links in the same positions.
Review snippets came from verified buyers on product pages, which Google allows. Dropping the homepage stars built from the business's own Google reviews kept the site within the rules and protected every other rich result.
A short path like Home › Contact Lenses › Daily tells a searcher where they will land. It looked cleaner than the long URL it replaced and helped people choose the right page from the results.
Most of the 214 errors were missing fields that made whole templates invalid. Fixing a handful of templates brought hundreds of pages back into eligibility at once, which is why the number of valid pages jumped so quickly.
Check what Google actually sees before adding anything new. Many sites already have structured data, but broken or conflicting markup is ignored. Fixing it at the template level is usually the fastest win.
Follow Google's rules on reviews. Stars can come from genuine reviews of products, but not from reviews of your own business marked up on your own site. Breaking that rule can cost you every rich result, not just the stars.
Measure schema by click-through rate at the same positions, not by traffic alone. That is the only way to see what the markup changed, separate from rankings and seasonal demand.
Not directly. Schema helps Google understand your pages and makes them eligible for rich results such as price, stock and review stars. Those features can lift click-through rate at the same position. On this project, CTR at positions 3 to 6 rose from 2.9% to 5.4% while rankings for those pages stayed broadly the same.
Not from reviews of your own business marked up on your own website. Google does not show stars for self-serving reviews in LocalBusiness or Organization markup. Stars can appear for products when the reviews are genuine and visible on the page, such as reviews left by verified buyers.
It can still help Google understand the questions a page answers, but Google now shows FAQ rich results mainly for well-known government and health websites. Most businesses should add it for clarity, not in the hope of a bigger search result.
Test each template in Google's Rich Results Test, then watch the enhancement reports in Search Console for errors and warnings. To measure impact, compare click-through rate for the same pages at the same average position before and after the change.
Start with a free SEO audit. We test your page templates in Google's tools, list every structured data error and warning, and show you which fixes would bring the most pages into rich results before you commit to anything.
Singapore’s specialist SEO agency for SMEs. We rank your business on Google — and only Google. No distractions, just results.
© 2026 Singapore SEO Agency. All rights reserved.