Case study / Landig
A review setup built around Landig’s store and workflows.
Starting point
Landig has no review app yet. It needs a complete setup that matches the store’s design and follows its internal rules for review requests.
Optimisation
Display reviews throughout the buying journey, including search and cart. Automate post-purchase requests and exclude certain orders by tag or order value.
Implementation
Custom theme components, embedded review forms, manual approval and Shopify discount codes. The PDP form is available only to logged-in customers who have bought the product.
Technical results
Initial reviews and Product JSON-LD are included directly in the HTML; ratings also work in dynamically loaded content. The average Lighthouse score in the preview test with test reviews remains virtually unchanged: 56.2 without, 56.1 with the integration.
My contribution: Social proof integration as part of a relaunch with Eshop Guide: data integration, configuration, design customisation, placement and theme development.

01
Reviews in Landig’s design, right through to the cart
The rating beside the price, product cards and PDP reviews use customisable markup and CSS. The review list includes star distribution, sorting and merchant replies, switching from two columns to one on mobile. Landig can place sections and app blocks in the theme editor and reuse them on other templates. JavaScript adds sorting and loading further reviews.
Ratings also appear in search and the cart drawer
A shared Liquid snippet passes the product ID, average rating and count to a web component in product cards. It displays ratings on collection and search results pages, in featured products and cross-selling, and in the cart and cart drawer. Suggestions loaded while typing and updated cart content also receive ratings without a full page refresh.
From order to review in the store
- 01
Check the order
Order tags and order value exclude specific orders; product tags exclude individual products from the request. Eligible requests are sent after the configured delay following fulfilment.
- 02
Request a review
An email links to the post-purchase review form, followed by internal approval and a Shopify discount code as an incentive.
- 03
Display in the store
Approved reviews are stored in Shopify. Ratings and review text are integrated into the different theme areas.
02
Post-purchase requests following Landig’s rules
- A delay after fulfilment
- Requests follow fulfilment status. The requested 7 to 14 days after fulfilment are configurable; purchase does not trigger immediate sending.
- Exclusions by order and product tags
- Specified order tags exclude entire orders. Product tags such as “Seminar” exclude individual products from the request.
- Order-value exclusions
- Alongside tags, a configurable maximum order value can exclude orders, for example above €5,000.
- Discount codes and manual approval
- Native Shopify discount codes reward submitted reviews. The Landig team manually approves new reviews before publication.

Review after purchase: by email or directly on the PDP
- PDP review form with purchase check
- Liquid checks login status and Shopify order history server-side. Only customers who have purchased the product receive the PDP form and can review without an email link.
- Post-purchase review form
- The email link opens the ordered products in the post-purchase form. Product presentation, copy, fields and buttons are tailored to this workflow.
03
Make reviews readable for Google and AI
Liquid reads reviews from Shopify metaobjects and rating figures from product metafields. Product JSON-LD associates the average rating and count (AggregateRating), review text (reviewBody) and star rating (reviewRating) with the product. The structured data and initial visible review list are already in the server response, without JavaScript or an external widget request.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Fleischwolf W 50",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5.0",
"reviewCount": 3
},
"review": [
{
"@type": "Review",
"reviewBody": "Tolles Produkt",
"reviewRating": {
"@type": "Rating",
"ratingValue": 5
}
},
...
]
}
</script>04
Performance & Lighthouse
More social proof with comparable loading performance.
The rating beside the price and initial reviews arrive with the product page, without a separate widget request. Customers do not wait for additional review content. Unexpected layout shifts can interrupt reading or cause misclicks; CLS measures this movement. With the integration, the PDP scores a low 0.007 on mobile and 0.070 on desktop. Despite additional ratings in search and cart, the average Lighthouse score remains virtually unchanged in the test: 56.2 without and 56.1 with the integration.
Without integration
With integration
Mean performance score across all pages and devices
Google PageSpeed Insights, 11 September 2026. Means from 120 individual measurements: three page types × two devices × two variants × ten runs. Shopify Preview (*.shopifypreview.com, pb=0), not the live store; with CPU throttling for comparable measurements.
Lighthouse scores compared side by side
Performance score from 0 to 100 · Mean values
Full measurement comparison
For each metric, the value without the review integration is on the left and the value with it is on the right. The change is shown underneath: green means better, red means worse. Higher performance scores are better; lower values are better for the other metrics. Lighthouse results vary between runs.
| Page / device | Performance | FCP | LCP | TBT | CLS | Speed Index | Transfer size |
|---|---|---|---|---|---|---|---|
| Mean · All test groups | 56.2 → 56.1(-0.1) | 2.7 s → 2.7 s(0.0 s) | 7.6 s → 7.5 s(-0.1 s) | 575 ms → 673 ms(+98 ms) | 0.023 → 0.027(+0.004) | 5.8 s → 5.9 s(+0.1 s) | 3,846 KiB → 3,846 KiB(0 KiB) |
| Mean · Mobile | 42.7 → 43.3(+0.6) | 4.7 s → 4.6 s(-0.1 s) | 13.3 s → 13.1 s(-0.2 s) | 713 ms → 797 ms(+84 ms) | 0.014 → 0.030(+0.016) | 9.0 s → 9.0 s(0.0 s) | 3,613 KiB → 3,615 KiB(+2 KiB) |
| Mean · Desktop | 69.6 → 68.9(-0.7) | 0.7 s → 0.7 s(0.0 s) | 1.9 s → 2.0 s(+0.1 s) | 437 ms → 549 ms(+112 ms) | 0.031 → 0.025(-0.006) | 2.5 s → 2.7 s(+0.2 s) | 4,080 KiB → 4,078 KiB(-2 KiB) |
| Homepage · Mobile | 46.0 → 49.5(+3.5) | 5.4 s → 4.8 s(-0.6 s) | 14.3 s → 13.2 s(-1.1 s) | 473 ms → 493 ms(+20 ms) | 0.000 → 0.000(0.000) | 8.9 s → 8.4 s(-0.5 s) | 3,593 KiB → 3,618 KiB(+25 KiB) |
| Collection · Mobile | 43.5 → 40.3(-3.2) | 4.2 s → 4.9 s(+0.7 s) | 12.8 s → 13.8 s(+1.0 s) | 665 ms → 672 ms(+7 ms) | 0.033 → 0.082(+0.049) | 8.2 s → 8.3 s(+0.1 s) | 3,207 KiB → 3,208 KiB(+1 KiB) |
| Product page · Mobile | 38.6 → 40.2(+1.6) | 4.6 s → 4.2 s(-0.4 s) | 12.9 s → 12.2 s(-0.7 s) | 1,002 ms → 1,225 ms(+223 ms) | 0.010 → 0.007(-0.003) | 10.0 s → 10.3 s(+0.3 s) | 4,038 KiB → 4,018 KiB(-20 KiB) |
| Homepage · Desktop | 77.0 → 78.2(+1.2) | 0.8 s → 0.7 s(-0.1 s) | 1.4 s → 1.3 s(-0.1 s) | 365 ms → 385 ms(+20 ms) | 0.005 → 0.003(-0.002) | 2.4 s → 2.5 s(+0.1 s) | 4,295 KiB → 4,288 KiB(-7 KiB) |
| Collection · Desktop | 69.2 → 66.6(-2.6) | 0.7 s → 0.7 s(0.0 s) | 2.7 s → 2.8 s(+0.1 s) | 300 ms → 398 ms(+98 ms) | 0.001 → 0.001(0.000) | 2.2 s → 2.4 s(+0.2 s) | 3,180 KiB → 3,195 KiB(+15 KiB) |
| Product page · Desktop | 62.7 → 61.8(-0.9) | 0.7 s → 0.7 s(0.0 s) | 1.5 s → 1.9 s(+0.4 s) | 647 ms → 865 ms(+218 ms) | 0.088 → 0.070(-0.018) | 2.8 s → 3.2 s(+0.4 s) | 4,764 KiB → 4,750 KiB(-14 KiB) |
FCP: First Contentful Paint · LCP: Largest Contentful Paint · TBT: Total Blocking Time · CLS: Cumulative Layout Shift · Speed Index: how quickly page content becomes visible
More information about Google PageSpeed Insights

