Review-Schema: Bewertungssterne korrekt und richtlinienkonform einbinden
SERP
<meta>
SEO · Review Schema · AggregateRating · Magento 2
Review-Schema: Bewertungssterne korrekt und richtlinienkonform einbinden
AggregateRating ohne Abstrafung nutzen

Sterne-Bewertungen im Google-Suchergebnis erhöhen die Klickrate spürbar, doch Googles Richtlinien für Review-Schema sind streng und werden aktiv durchgesetzt. Wer Bewertungen ohne sichtbaren Inhalt oder mit fremden Drittanbieter-Daten markiert, riskiert den Verlust der Rich-Result-Berechtigung. Dieser Beitrag zeigt, wie Review- und AggregateRating-Schema korrekt aufgebaut, in Magento integriert und dauerhaft richtlinienkonform betrieben wird.

13 Min. Lesezeit Review Schema · AggregateRating · Rich Snippets Magento 2.4.8 · Hyvä Theme · Search Console

1. Warum Bewertungssterne Klickrate und Vertrauen entscheiden

Sterne-Bewertungen im Google-Suchergebnis gehören zu den wirkungsvollsten Rich-Result-Typen überhaupt: Sie ziehen den Blick auf sich, vermitteln sofortiges Vertrauen und heben ein Ergebnis optisch von reinen Text-Snippets ab. Für Magento-Shops mit hunderten oder tausenden Produktseiten summiert sich dieser Effekt zu einem messbaren Klickratenvorteil gegenüber Wettbewerbern ohne AggregateRating-Schema. Studien zu Rich-Snippet-Performance zeigen regelmäßig zweistellige Steigerungen der Click-Through-Rate, wenn Sterne im Suchergebnis erscheinen.

Diese Sichtbarkeit hat jedoch einen Preis: Google prüft Review-Schema deutlich strenger als die meisten anderen strukturierten Datentypen, weil Sterne-Bewertungen direktes Kaufverhalten beeinflussen und damit ein bevorzugtes Ziel für Missbrauch sind. Wer die Richtlinien nicht kennt oder ignoriert, riskiert nicht nur den Verlust einzelner Rich Results, sondern im Wiederholungsfall eine manuelle Maßnahme für die gesamte Domain. Die folgenden Abschnitte zeigen, wie Review- und AggregateRating-Schema korrekt aufgebaut, sauber von Drittanbieter-Daten abgegrenzt und in Magento richtlinienkonform integriert wird.

2. Review- und AggregateRating-Schema: Aufbau und Pflichtfelder

Der Typ Review beschreibt eine einzelne, individuelle Bewertung und benötigt mindestens reviewRating (mit ratingValue, optional bestRating und worstRating), einen author vom Typ Person oder Organization sowie idealerweise reviewBody und datePublished. Fehlt bestRating/worstRating, geht Google von der Standardskala 1 bis 5 aus, was bei abweichenden Skalen zu falsch dargestellten Sternen führt.

Der Typ AggregateRating fasst mehrere Einzelbewertungen zu einem Durchschnittswert zusammen und gehört meist als Unterobjekt in Product, LocalBusiness oder ein anderes bewertbares Item, referenziert über itemReviewed. Zentral ist die Unterscheidung zwischen reviewCount (Anzahl der Bewertungen mit sichtbarem Text) und ratingCount (Gesamtzahl aller Sternebewertungen, auch ohne Text). Wer beide Felder verwechselt oder reviewCount ohne tatsächlich vorhandene Rezensionstexte angibt, verstößt gegen die Google-Dokumentation.


// CORRECT: first-party product review, fully visible on this page
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Beispielprodukt",
  "image": "https://mironsoft.de/media/catalog/product/beispiel.jpg",
  "sku": "MS-1234",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "bestRating": "5",
    "worstRating": "1",
    "reviewCount": "128"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5",
        "worstRating": "1"
      },
      "author": { "@type": "Person", "name": "Julia K." },
      "datePublished": "2026-06-02",
      "reviewBody": "Schnelle Lieferung, Verarbeitung top, genau wie beschrieben."
    }
  ]
}
// Note: this exact review text is rendered visibly on the product page,
// directly above the script tag that outputs this markup.

3. Googles Self-Serving-Review-Richtlinie verstehen

Die Self-Serving-Review-Richtlinie untersagt es Websites, Bewertungen über sich selbst, ihre eigene Organisation oder ihre eigenen Produkte und Dienstleistungen mit Schema zu markieren, wenn diese Bewertungen nicht in vollem Umfang und sichtbar auf genau der Seite gerendert werden, die das Markup enthält. Der Hintergrund: Google will verhindern, dass Unternehmen sich selbst beliebige Sternebewertungen zuschreiben, ohne dass Nutzer die zugrunde liegenden Rezensionen überhaupt lesen können.

Praktisch bedeutet das: Eine Organization-Bewertung auf der Startseite ist nur zulässig, wenn dort tatsächlich individuelle Rezensionen mit Text, Autor und Datum sichtbar sind, nicht nur eine aggregierte Zahl. Für reine Produktbewertungen gilt die Ausnahme, dass Product-Schema mit AggregateRating auch ohne vollständige Review-Liste auf derselben Seite zulässig ist, solange die zugrunde liegenden Einzelbewertungen irgendwo auf der Domain nachvollziehbar und sichtbar existieren, etwa im Bewertungs-Tab der Produktseite.


// INCORRECT: self-serving aggregateRating with no visible review content
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Musterschop GmbH",
  "url": "https://musterschop.example",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "312"
  }
}
// This number was copied from a third-party widget. No review text,
// author or star rating is rendered anywhere on this page, which
// violates Google's self-serving review policy and is not eligible
// for rich results, regardless of whether the number itself is accurate.

4. Sichtbarkeitspflicht: Nur was Nutzer lesen können, darf ins Schema

Das Kernprinzip hinter fast allen Google-Richtlinien zu strukturierten Daten lautet: Schema muss den sichtbaren Content der Seite widerspiegeln, nicht ergänzen oder übertreffen. Für Review-Schema bedeutet das konkret: Jede im JSON-LD angegebene Einzelbewertung mit reviewBody muss als lesbarer Text auf derselben Seite erscheinen, jede Zahl in ratingValue muss sich mit den sichtbar dargestellten Sternen decken. Ein AggregateRating ohne dazugehörige, im DOM vorhandene Einzelbewertungen ist ein klassischer Auslöser für Rich-Result-Entzug.

In der Praxis lässt sich diese Regel technisch leicht prüfen: Wird die Seite mit deaktiviertem JavaScript oder im Text-Cache-Modus von Google betrachtet, muss der komplette Bewertungsinhalt weiterhin lesbar sein. Bewertungen, die ausschließlich per Ajax nachgeladen werden und ohne Interaktion unsichtbar bleiben, oder Rezensionen, die hinter einem Tab-Klick verborgen sind, gelten bei serverseitigem Rendering meist noch als sichtbar; bei rein client-seitigem Nachladen ohne SSR-Fallback ist das Risiko einer Fehlbewertung durch Google deutlich höher.

5. Review-Snippet-Missbrauch: Manual Actions und die Rich-Result-Entfernung 2019

Im September 2019 zog Google die Konsequenz aus jahrelangem Missbrauch: Review-Rich-Snippets wurden für praktisch alle Seitentypen außerhalb von Product, LocalBusiness und wenigen weiteren erlaubten Kategorien aus den organischen Suchergebnissen entfernt. Betroffen waren vor allem Ratgeber-Websites, Rezeptportale und Affiliate-Seiten, die pauschale Sternebewertungen für Artikel oder Kategorien eingebunden hatten, ohne dass diese Bewertungen einem konkreten, bewertbaren Produkt oder Unternehmen zuzuordnen waren.

Parallel dazu verschärfte Google die Durchsetzung gegen strukturierte-Daten-Spam generell: Bei erkanntem, systematischem Missbrauch, etwa erfundenen Bewertungen, gekauften Rezensionen oder massenhaft kopierten Drittanbieter-Daten, verhängt Google manuelle Maßnahmen, sichtbar im Bereich „Manuelle Maßnahmen" der Search Console. Eine solche Maßnahme betrifft in der Regel nicht nur die Review-Rich-Results, sondern kann sich auf alle strukturierten Daten der gesamten Domain auswirken und ist erst nach Behebung und einem erneuten Prüfantrag wieder aufhebbar.

6. Trustpilot, Trusted Shops & Co.: Syndizierungsregeln für Drittanbieter-Bewertungen

Plattformen wie Trustpilot oder Trusted Shops sammeln Kundenbewertungen zentral auf ihrer eigenen Domain und dürfen dort selbstverständlich eigenes Review-Schema mit vollständigen, sichtbaren Rezensionen ausgeben, denn sie sind die tatsächlichen Host- und Content-Eigentümer dieser Daten. Bindet ein Händler ein Trustpilot-Widget auf der eigenen Website ein, zeigt dieses Widget meist nur eine aggregierte Sternezahl ohne die zugrunde liegenden Volltexte, weil die eigentlichen Rezensionen weiterhin bei Trustpilot gehostet sind.

Genau das ist der Punkt, an dem viele Shops gegen die Richtlinien verstoßen: Die aggregierte Zahl aus einem Drittanbieter-Widget eigenmächtig als AggregateRating im eigenen Schema auszugeben, obwohl auf der eigenen Seite kein sichtbarer Bewertungstext steht, gilt als Self-Serving-Verstoß, unabhängig davon, dass die Zahl technisch korrekt ist. Für Sterne in Google Shopping und Google Ads existiert stattdessen der offizielle Weg über Google Customer Reviews beziehungsweise Merchant-Center-Produktbewertungs-Feeds, die vollständig getrennt vom schema.org-Review-Markup funktionieren und für genau diesen Zweck vorgesehen sind.


// CORRECT: ratingCount for star-only ratings without written review text
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Beispielprodukt B",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.3",
    "bestRating": "5",
    "worstRating": "1",
    "ratingCount": "47"
  }
}
// ratingCount covers all star ratings, including those without text.
// reviewCount must only be used when written, visible review text exists.
// Never mix a third-party widget's total into either field without
// the underlying reviews being visible on this same page.

7. Magento_Review korrekt ins Product-Schema integrieren

Magentos natives Magento_Review-Modul verwaltet freigeschaltete Kundenbewertungen pro Produkt inklusive Autor, Bewertungstext, Einzelbewertung und Freigabestatus, sichtbar im Bewertungs-Tab der Produktdetailseite. Diese Datenbasis ist der einzig korrekte Ursprung für AggregateRating-Werte im Product-Schema, weil die Bewertungen dort tatsächlich sichtbar sind und über Magento\Review\Model\Review sowie die zugehörige Rating-Summary-Ressource vollständig nachvollziehbar bleiben.

Die Rating-Summary in Magento wird intern auf einer Skala von 0 bis 100 gespeichert und muss für schema.org auf die Standardskala 1 bis 5 umgerechnet werden. Ebenso wichtig: Die Anzahl der Bewertungen (getReviewsCount()) muss vor der Schema-Ausgabe geprüft werden, denn ein Produkt ohne freigeschaltete Bewertungen darf kein aggregateRating-Objekt erhalten, auch keine Platzhalterwerte wie 0, da Google dies als fehlerhaftes oder erfundenes Feld markiert.


<?php

declare(strict_types=1);

namespace Mironsoft\SeoSuite\ViewModel;

use Magento\Catalog\Model\Product;
use Magento\Framework\View\Element\Block\ArgumentInterface;
use Magento\Review\Model\ResourceModel\Review\Summary as ReviewSummaryResource;
use Magento\Store\Model\StoreManagerInterface;

/**
 * Builds AggregateRating schema data from genuine, visible Magento product reviews.
 */
class ProductReviewSchema implements ArgumentInterface
{
    /**
     * @param ReviewSummaryResource $reviewSummaryResource
     * @param StoreManagerInterface $storeManager
     */
    public function __construct(
        private readonly ReviewSummaryResource $reviewSummaryResource,
        private readonly StoreManagerInterface $storeManager
    ) {
    }

    /**
     * Returns AggregateRating data, or null when no visible reviews exist.
     * Never emit aggregateRating for a product without rendered review content.
     *
     * @param Product $product
     * @return array<string, string>|null
     */
    public function getAggregateRatingData(Product $product): ?array
    {
        $storeId = (int) $this->storeManager->getStore()->getId();
        $this->reviewSummaryResource->load($product, (int) $product->getId(), $storeId);

        $reviewCount = (int) $product->getReviewsCount();
        if ($reviewCount === 0) {
            // No visible reviews rendered on the page, omit aggregateRating entirely
            return null;
        }

        // Magento stores the rating summary as 0-100, schema.org expects 1-5
        $ratingSummary = (int) $product->getRatingSummary();
        $ratingValue = round($ratingSummary / 20, 1);

        return [
            'ratingValue' => (string) $ratingValue,
            'bestRating' => '5',
            'worstRating' => '1',
            'reviewCount' => (string) $reviewCount,
        ];
    }
}

8. ViewModel-Pattern für aggregateRating in Hyvä-Themes

In Hyvä-Themes gehört die Logik zur Ermittlung der Bewertungsdaten in ein dediziertes ViewModel, das ArgumentInterface implementiert und per Layout-XML in das Produkt-Layout injiziert wird, statt Block-Klassen mit zusätzlicher Verantwortung zu überladen. Das ViewModel kapselt den Zugriff auf die Rating-Summary-Ressource, die Skalenumrechnung und die Nullprüfung an einer einzigen Stelle, die sowohl vom sichtbaren Bewertungs-Template als auch vom JSON-LD-Template wiederverwendet wird.

Entscheidend für die Richtlinienkonformität ist, dass genau dieselbe Methode sowohl die sichtbaren Sterne im Frontend als auch die Werte im strukturierten Datenblock speist, damit niemals eine Diskrepanz zwischen Anzeige und Schema entstehen kann. Gibt die Methode null zurück, weil keine freigeschalteten Bewertungen existieren, unterdrückt das zugehörige phtml-Template konsequent den gesamten aggregateRating-Block, statt einen leeren oder fehlerhaften Platzhalter auszugeben.