Merchlint
Diese Seite gibt es auf
Als Nächstes, in dieser Reihenfolge
  • FrançaisFR
  • ItalianoIT
  • PortuguêsPT
  • NederlandsNL
  • SvenskaSV
  • TürkçeTR

Auf Deutsch gibt es bisher nur wenige Seiten, die übrigen sind auf Englisch. Die deutschen Texte wurden noch nicht von Muttersprachlern geprüft. Fehler gefunden? Schreiben Sie uns.

Kostenlos installieren Installieren

Produkte im Google Merchant Center abgelehnt? Die WooCommerce-Felder dahinter

Zwei Symptome, eine Ursache. Dass der Feed weniger Produkte enthält als Ihr Shop und dass Artikel nach dem Hochladen abgelehnt werden, geht meist auf ein Feld im Produkt zurück. Alle diese Fälle finden Sie über die Kommandozeile, ohne etwas zu installieren.

An das Google Merchant Center schickt ein Shop seinen Produktfeed: die Liste, aus der Einträge in Google Shopping und Shopping-Anzeigen entstehen. Auf dem Weg dorthin können zwei verschiedene Dinge schiefgehen, und von außen sieht beides gleich aus.

Ein Produkt kann im Feed fehlen, weil es nie exportiert wurde: Der Shop hat dem Feed-Plugin nichts zum Exportieren gegeben. Oder es kommt beim Kanal an und wird dort abgelehnt. In beiden Fällen ist das Feed-Plugin meist nur der Bote: Die Anforderung, die nicht erfüllt ist, betrifft ein Feld im Produkt, keine Zeile im Feed.

Wenn Sie wissen, welcher der beiden Fälle vorliegt, sparen Sie einen Tag. Hat der Feed einfach weniger Produkte als Ihr Katalog, beginnen Sie bei Preis, Verfügbarkeit und Sichtbarkeit: Ein Artikel, der keinen Preis oder keinen Bestand hat oder im Katalog ausgeblendet ist, fällt schon vor dem Export heraus, und keine Einstellung im Feed holt ihn zurück. Sind die Produkte im Feed und lehnt der Kanal sie ab, beginnen Sie bei Bildern und Produktkennungen.

Diese Seite geht die Anforderungen einzeln durch: was jede bedeutet, wodurch sie in einem WooCommerce-Katalog verletzt wird und wie Sie das Problem selbst finden. Jede Prüfung unten ist ein Befehl, den Sie sofort in Ihrem eigenen Shop ausführen können, ohne Plugin und ohne Konto.

Die Prozentzahlen stammen aus der Studie Zero clean: 72 WooCommerce stores (Seite auf Englisch). Dafür haben wir die öffentlichen Kataloge von 72 polnischen Shops geprüft. Die Daten für jeden Shop sind unter CC BY 4.0 veröffentlicht. Ersetzen Sie in den Befehlen wp_ durch Ihr eigenes Tabellenpräfix.

Preis: Ein Artikel ohne Preis ist kein Angebot

Für jedes Produkt ist bei Google price erforderlich. WooCommerce veröffentlicht ein Produkt mit leerem Preisfeld ohne jede Warnung. Im Shop kann man es dann einfach nicht kaufen.

38 % der Shops hatten Produkte ohne Preis oder ohne Möglichkeit, sie zu kaufen, zusammen 1.138 Artikel. Von den drei Zahlen auf dieser Seite hält die Studie diese für die unsicherste und erklärt, warum.

wp db query "SELECT p.ID, p.post_title FROM wp_posts p LEFT JOIN wp_postmeta m ON m.post_id = p.ID AND m.meta_key = '_price' WHERE p.post_type = 'product' AND p.post_status = 'publish' AND (m.meta_value IS NULL OR m.meta_value = '' OR m.meta_value = '0')"

Verfügbarkeit: Der Feed sagt vorrätig, der Shop sagt nein

availability muss dem entsprechen, was ein Kunde wirklich vorfindet. Zwei Fälle führen hier zu Abweichungen, und für sie braucht es zwei verschiedene Abfragen.

Der erste ist einfach. Diese Abfrage findet alles, was gerade nicht vorrätig ist:

wp db query "SELECT p.ID, p.post_title FROM wp_posts p JOIN wp_postmeta m ON m.post_id = p.ID AND m.meta_key = '_stock_status' WHERE p.post_type = 'product' AND p.post_status = 'publish' AND m.meta_value = 'outofstock'"

Der zweite versteckt sich: ein variables Produkt, bei dem alle Varianten ausverkauft sind. Das übergeordnete Produkt gilt weiterhin als vorrätig. In einer Liste und in der Abfrage oben sieht es also gut aus, und ein Kunde, der es anklickt, findet nichts, was er in den Warenkorb legen kann.

wp db query "SELECT par.ID, par.post_title FROM wp_posts par \
  JOIN wp_posts v ON v.post_parent = par.ID AND v.post_type = 'product_variation' AND v.post_status = 'publish' \
  JOIN wp_postmeta s ON s.post_id = v.ID AND s.meta_key = '_stock_status' \
  WHERE par.post_type = 'product' AND par.post_status = 'publish' \
  GROUP BY par.ID, par.post_title HAVING SUM(s.meta_value = 'instock') = 0"

Keine der beiden Abfragen zeigt, ob sich der Artikel je verkauft hat. Dafür braucht es die Tabellen mit den Bestellungen. Genau das ist der Unterschied zwischen einer Liste mit 400 nicht vorrätigen Produkten und den vier darunter, die Geld gebracht haben, bis sie ausverkauft waren.

Bild: kein Foto, kein Eintrag

image_link ist Pflicht, und drei verschiedene Zustände führen zum selben Ergebnis: Das Produkt hat gar kein Bild, die Zeile in der Datenbank zeigt auf eine Datei, die nicht mehr auf dem Server liegt, oder die Datei ist da, aber leer oder nur ein paar Pixel groß.

29 % der Shops hatten Produkte ohne eigenes Bild, zusammen 421 Artikel.

wp db query "SELECT p.ID, p.post_title FROM wp_posts p LEFT JOIN wp_postmeta t ON t.post_id = p.ID AND t.meta_key = '_thumbnail_id' WHERE p.post_type = 'product' AND p.post_status = 'publish' AND (t.meta_value IS NULL OR t.meta_value = '' OR t.meta_value = '0')"

Für die anderen beiden Fälle geht wp media regenerate --dry-run die Mediathek durch und meldet jede Datei, die sich nicht lesen lässt.

Beschreibung: zu kurz für ein Angebot

description ist Pflicht, und eine Beschreibung aus nur einer Zeile ist eben nur eine Zeile. Außerdem entscheidet dieses Feld, ob jemand, der geklickt hat, eine Antwort findet oder wieder geht.

wp db query "SELECT ID, post_title, CHAR_LENGTH(post_content) AS zeichen FROM wp_posts WHERE post_type = 'product' AND post_status = 'publish' AND CHAR_LENGTH(post_content) < 200 ORDER BY zeichen"

link muss auf eine Seite führen, die ein Kunde sehen kann. Ein Produkt, das sich früher verkauft hat und später im Katalog ausgeblendet oder wieder auf Entwurf gesetzt wurde, steht weiter in der Quelle des Feeds, obwohl Kunden es im Shop nicht mehr finden.

wp db query "SELECT p.ID, p.post_title FROM wp_posts p JOIN wp_term_relationships tr ON tr.object_id = p.ID JOIN wp_term_taxonomy tt ON tt.term_taxonomy_id = tr.term_taxonomy_id JOIN wp_terms t ON t.term_id = tt.term_id WHERE p.post_type = 'product' AND p.post_status = 'publish' AND tt.taxonomy = 'product_visibility' AND t.slug = 'exclude-from-catalog'"

Eine eindeutige ID: zwei Produkte, eine Identität

Google braucht für jedes Produkt eine eindeutige id, und die meisten Feed-Plugins nehmen dafür die Artikelnummer. Haben zwei Produkte dieselbe Artikelnummer, fällt eines der beiden heraus.

10 % der Shops hatten eine doppelte Artikelnummer, zusammen 134 Artikel.

wp db query "SELECT meta_value AS sku, COUNT(*) AS n FROM wp_postmeta pm JOIN wp_posts p ON p.ID = pm.post_id WHERE pm.meta_key = '_sku' AND pm.meta_value <> '' AND p.post_type IN ('product','product_variation') AND p.post_status = 'publish' GROUP BY meta_value HAVING n > 1"

Varianten sind absichtlich dabei: Ein Feed exportiert jede Variante als eigenen Artikel. Eine Variante mit derselben Artikelnummer wie ein Produkt ist dort also eine echte Kollision. Gut zu wissen, bevor Sie diese Zahlen mit denen von Merchlint vergleichen: In Merchlint für WooCommerce vergleichen die Duplikat-Prüfungen, für Artikelnummer wie für GTIN, nur veröffentlichte Produkte. Diese Prüfungen können also weniger Paare melden als die beiden Duplikat-Abfragen auf dieser Seite.

Ist Ihr Shop mehrsprachig, haben die Übersetzungen eines Produkts zu Recht dieselbe Artikelnummer. Zusammen sind sie ein Produkt, kein Duplikat: Zählen Sie die Übersetzungsgruppen, nicht die einzelnen Einträge.

GTIN: die Nummer, die Ihr Angebot mit demselben Produkt anderswo verbindet

Google empfiehlt gtin dringend, wenn es eine GTIN gibt, und mpn wird Pflicht, wenn ein Produkt keine GTIN hat. In der Praxis steht ein Artikel ohne beides oft allein da: keine Angebote anderer Händler im Eintrag, keine Rezensionen und eine viel schwächere Position.

WooCommerce hat das Feld seit 9.2: Produktdaten → Lagerbestand → GTIN, UPC, EAN oder ISBN. Nichts im Administrationsbereich weist auf ein leeres Feld hin, und nichts sagt Ihnen, wenn zwei Produkte dieselbe Nummer haben.

wp db query "SELECT p.ID, p.post_title FROM wp_posts p LEFT JOIN wp_postmeta g ON g.post_id = p.ID AND g.meta_key = '_global_unique_id' WHERE p.post_type IN ('product','product_variation') AND p.post_status = 'publish' AND (g.meta_value IS NULL OR TRIM(g.meta_value) = '')"
wp db query "SELECT TRIM(meta_value) AS gtin, COUNT(*) AS n FROM wp_postmeta pm JOIN wp_posts p ON p.ID = pm.post_id WHERE pm.meta_key = '_global_unique_id' AND TRIM(pm.meta_value) <> '' AND p.post_type IN ('product','product_variation') AND p.post_status = 'publish' GROUP BY TRIM(meta_value) HAVING n > 1"

Bei einem variablen Produkt gehört die Kennung zu jeder Variante: Jede Größe und jede Farbe ist ein eigener Handelsartikel mit eigener Nummer, und eine Variante übernimmt die Nummer des übergeordneten Produkts nicht. Hat das übergeordnete Produkt eine Nummer, die sechs Varianten aber keine, landen im Feed sechs Artikel ohne Kennung.

Nutzt Ihr Shop gar keine Kennungen (Handgemachtes, Dienstleistungen, eigene Produktion), erfinden Sie keine Nummern. Das wäre der schlimmere Fehler: Eine erfundene Nummer kollidiert irgendwo mit einem echten Produkt, und das Angebot wird abgelehnt statt nur übersehen.

In diesem Fall müssen Sie eine Sache einstellen, und zwar im Feed, nicht im Produkt. Google erwartet bei identifier_exists den Wert no, wenn ein Artikel weder eine GTIN noch eine Kombination aus MPN und Marke hat. Die meisten Feed-Plugins können das setzen, als festen Wert oder pro Produkt. Auch umgekehrt gibt es eine Falle: Wer no für ein Produkt sendet, das doch eine Kennung hat, riskiert eine Ablehnung.

Wie Sie Produkte ohne GTIN auch im Administrationsbereich finden und woher die Nummer kommt: WooCommerce-Produkt ohne GTIN. Die Prüfziffern einer ganzen Liste von Codes prüfen Sie mit EAN prüfen.

Was diese Seite nicht prüft

Diese Seite soll auch ehrlich zeigen, wo ihre Grenzen liegen. Die folgenden Anforderungen gibt es wirklich, aber keine der Abfragen oben prüft sie:

AnforderungWarum sie hier fehlt
brandFür die meisten neuen Produkte Pflicht. WooCommerce hat dafür aber kein einzelnes eigenes Feld: Die Marke steht in einer Taxonomie oder in einem Plugin. Eine zuverlässige Abfrage in einer Zeile gibt es deshalb nicht.
mpnPflicht, wenn ein Produkt keine GTIN hat. Aus demselben Grund: WooCommerce hat kein eigenes Feld dafür.
Eine GTIN außerhalb des eigenen Felds von WooCommerceDie Abfrage oben liest _global_unique_id, das Feld, das WooCommerce mit 9.2 eingeführt hat. Ein Shop, der die Nummer woanders speichert (in einem EAN-Plugin, in den WooCommerce-Feldern von Yoast, in einem Produktattribut wie pa_ean), sieht für diese Abfrage völlig leer aus. Prüfen Sie, woher Ihr Feed gtin nimmt, bevor Sie der Zählung trauen. Und die umgekehrte Falle: Zeigt Ihr Feed-Plugin das Feld von WooCommerce nur in einer allgemeinen Gruppe „eigene Attribute“, kann diese Gruppe aus dem Cache stammen (das Speichern eines Produkts aktualisiert sie nicht) oder aus einem einzigen Produkt ermittelt worden sein, dem zuletzt veröffentlichten. Ein ausgefülltes Feld bleibt dann in der Zuordnung unsichtbar, bis Sie den Attribut-Cache des Plugins leeren. Tun Sie das, bevor Sie annehmen, das Feld sei leer.
Derselbe Preis wie auf der ProduktseiteDafür muss man den Feed und die angezeigte Seite nebeneinander vergleichen. Eine Datenbankabfrage sieht nicht, was die Seite nach Steuern, Währung und dynamischen Preisen anzeigt.
Derselbe Titel wie auf der ProduktseiteGenauso. Die Länge lässt sich messen, die Übereinstimmung nicht.

Auch die Bildgröße verdient einen Hinweis: Ab dem 31. Januar 2027 erfordert das Merchant Center mindestens 500 × 500 px, und zu kleine Bilder sind ein häufiger Grund für unbemerkte Ablehnungen. Die Shop-Prüfung (Seite auf Englisch) listet die Hauptbilder unter dieser Größe auf, ohne dass Sie etwas installieren: Die Bildmaße stammen aus dem öffentlichen Katalog. Bildgröße im Google Merchant Center (Seite auf Englisch) nennt die Termine, die Warnungen im Merchant Center und einen WP-CLI-Befehl für den ganzen Katalog.


Alle Prüfungen oben sind Abfragen, die Sie selbst in Ihrer eigenen Datenbank ausführen. Wenn Sie diese Prüfungen lieber für den ganzen Katalog auf einmal laufen lassen möchten, mit Zahlen, der Liste der betroffenen Produkte und den Kosten jedes Befunds: Das macht Merchlint. Es ist kostenlos, liest nur und ändert nichts in Ihrem Shop. Nur den dritten der oben genannten Bildzustände überlässt es Ihnen: eine Datei, die es gibt, die sich aber nicht anzeigen lässt. Solche Dateien findet wp media regenerate --dry-run.

Diese Seite wurde noch nicht von Muttersprachlern geprüft. Klingt etwas falsch oder stimmt etwas nicht? Schreiben Sie an contact@merchlint.com.