PriceBee.ch

Warum der Preis im Preisvergleich dem Preis in Ihrem Shop hinterherhinkt

Feed-Preis und Shop-Preis laufen aus vorhersehbaren Gründen auseinander: Generierungsintervalle, Caching, MwSt.-Rundung und Aktionen, die um Mitternacht starten. Hier steht, woher die Verzögerung kommt und wie Sie sie schließen.

Ein Shopper klickt sich aus einem Preisvergleich zu Ihnen durch und erwartet 149 zu zahlen. Auf der Produktseite stehen 164. Er geht zurück, klickt den nächsten Shop an, und Sie haben für einen Klick bezahlt, der nie hätte konvertieren können. Passiert das oft genug, markiert ein Vergleichsportal Ihren Feed, blendet Angebote aus, denen es nicht mehr traut, oder verlangt eine Korrektur, bevor Sie wieder gelistet werden.

Eine Preisabweichung entsteht selten, weil jemand eine falsche Zahl eingetippt hat. Fast immer ist es ein Timing- oder Definitionsproblem: Der Feed wurde zu einem Zeitpunkt generiert und zu einem anderen gelesen, oder die Zahl im Feed bedeutet etwas leicht anderes als die Zahl auf der Seite. Beides lässt sich beheben, aber erst, wenn Sie sehen, wo die Verzögerung tatsächlich sitzt.

Die vier Uhren zwischen Datenbank und Listing

Es gibt nicht den einen Moment, in dem Ihr Preis im Vergleichsportal sichtbar wird. Es sind mindestens vier, und jeder fügt Verzögerung hinzu.

Generierung. Die meisten Shops erzeugen das XML nach Zeitplan, etwa per Cronjob um 03:00 Uhr, und schreiben es in eine statische Datei. Alles, was sich nach 03:00 Uhr ändert, bleibt bis zum nächsten Lauf unsichtbar. Wenn Sie nur einmal täglich generieren, liegt Ihre Worst-Case-Veraltung bei 24 Stunden, bevor irgendetwas anderes dazukommt.

Abruf. Das Vergleichsportal liest die Datei nach eigenem Zeitplan, der zu Ihrem passen kann oder nicht. Wenn Sie um 03:00 Uhr generieren und der Abruf um 02:30 Uhr stattfindet, hinken Ihre Listings einen vollen Tag hinter Ihrer Datei her, nicht nur ein paar Minuten.

Caching. Hier stolpern die meisten. Ein CDN oder Reverse-Proxy vor Ihrer Feed-URL liefert gern noch stundenlang eine zwischengespeicherte Kopie aus, obwohl Sie längst eine frische Datei geschrieben haben. Die Datei auf der Platte stimmt, die Datei in Ihrem eigenen Browser stimmt, weil Sie direkt auf den Origin zugreifen, und die Version, die der Crawler bekommt, ist von gestern. Prüfen Sie die Response-Header Ihrer Feed-URL von außerhalb Ihres Netzwerks: Cache-Control, Age und Last-Modified zeigen sofort, ob etwas dazwischen eine Kopie vorhält.

Import-Verarbeitung. Große Feeds brauchen Zeit zum Parsen, Matchen und Indexieren. Meist sind das Minuten statt Stunden, aber eben nicht null.

Rechnen Sie alles ehrlich zusammen. Ein Shop, der täglich generiert und täglich abgerufen wird, hat in der Praxis ein Veraltungsfenster von bis zu zwei Tagen, nicht „etwa einem Tag“. Ein Shop, der stündlich generiert, den Feed ungecacht ausliefert und alle paar Stunden abgerufen wird, liegt nur wenige Stunden hinter dem Live-Stand.

Toleranz festlegen, dann den Zeitplan wählen

Die richtige Generierungsfrequenz hängt davon ab, wie schnell sich Ihre Preise bewegen. Wenn Sie automatisch gegen Wettbewerber repricen, ist ein Tagesfeed nicht vertretbar: Sie bewerben dann einen Preis, den Sie schon vor dem Mittagessen wieder verworfen haben. Wenn Sie Preise von Hand setzen und ein paar Mal im Monat ändern, bringt stündliche Generierung nichts.

Eine praktische Faustregel: Ihr Generierungsintervall sollte kürzer sein als die Zeit, in der eine Preisänderung geschäftlich relevant wird. Für die meisten Shops heißt das stündlich für Preis und Bestand, während die umfangreichen Beschreibungsfelder seltener neu gebaut werden.

Wenn es teuer ist, den ganzen Katalog stündlich zu generieren, teilen Sie den Job auf. Bauen Sie den vollständigen Feed einmal täglich und halten Sie die Felder für Preis und Verfügbarkeit in einer engeren Schleife aktuell, entweder indem Sie nur diese Felder in dieselbe Datei neu schreiben oder indem Sie einen separaten schlanken Feed veröffentlichen, sofern das Vergleichsportal das unterstützt. Prüfen Sie vorab, was der Kanal akzeptiert; nicht jeder nimmt ein Delta an.

Dieselbe Zahl muss an beiden Orten dasselbe bedeuten

Abgesehen vom Timing entsteht eine zweite Klasse von Abweichungen dadurch, dass der Preis im Feed anders berechnet wird als auf der Seite.

  • MwSt. Der Feed muss den Preis enthalten, den der Verbraucher zahlt, inklusive MwSt. Der klassische Fehler: Ein Export liest den Nettopreis aus der Datenbank und schlägt die MwSt. mit anderer Rundung auf als der Shop, sodass das Listing bei 82,64 steht, die Seite aber 82,65 zeigt. Ein Cent genügt, um eine automatische Preisprüfung auszulösen.
  • Rundung und Formatierung. Verwenden Sie einen Punkt als Dezimaltrenner, zwei Nachkommastellen, kein Tausendertrennzeichen und kein Währungssymbol innerhalb der Zahl, es sei denn, die Spezifikation verlangt es. 1,299.00 und 1 299,00 € führen zu Parse-Fehlern oder, schlimmer, zu stillen Fehlinterpretationen.
  • Kundengruppenpreise. Wenn Ihr Shop eingeloggten Kunden, Geschäftskunden-Konten oder Newsletter-Abonnenten andere Preise zeigt, muss der Feed den Preis enthalten, den ein anonymer Besucher sieht. Exporte, die unter einer Admin-Session laufen, greifen manchmal eine Mitarbeiterrabatt-Stufe ab.
  • Rabattcodes. Ein Preis, der nur mit einem Code im Checkout gilt, ist nicht der Feed-Preis. Ihn zu listen ist ein schneller Weg, das Vertrauen von Shoppern und Kanal zu verlieren.
  • Variantenpreise. Wenn die Produktseite standardmäßig die günstigste Variante zeigt, Ihr Feed aber das Elternprodukt mit einem Durchschnitts- oder Höchstpreis exportiert, stimmen die beiden nie überein. Exportieren Sie jede Variante als eigenen Artikel mit eigenem Preis und eigener Kennung.
  • Versand. Tragen Sie die Lieferkosten ins Versandfeld ein und rechnen Sie sie nicht in den Preis ein. Shopper sortieren oft nach Gesamtkosten, und das Vergleichsportal braucht beide Zahlen getrennt, um sie zu berechnen.

Aktionen: Hier entstehen die meisten Abweichungen

Eine Aktion, die um Mitternacht beginnt, und ein Feed, der um 03:00 Uhr neu generiert wird, bedeuten drei Stunden Listings zum alten Preis, das ist verkraftbar. Eine Aktion, die um Mitternacht endet, bedeutet bei gleichem Zeitplan drei Stunden Werbung für einen Preis, den Sie nicht mehr einhalten, und genau diese Variante erzeugt Beschwerden.

Zwei Gewohnheiten helfen. Erstens: Planen Sie unmittelbar nach jeder Aktionsgrenze eine Feed-Neugenerierung ein, nicht nur im regulären Intervall. Zweitens: Seien Sie vorsichtig mit Server-Zeitzonen. Läuft Ihr Shop auf UTC und sind Ihre Kampagnen in Ortszeit angelegt, startet Ihre Aktion zweimal im Jahr eine Stunde zu früh oder zu spät. Prüfen Sie, in welcher Zeitzone der Cron-Server sich wähnt, nicht, in welcher Sie sich befinden.

Wenn das Feed-Format einen Angebotspreis mit Gültigkeitszeitraum unterstützt, nutzen Sie ihn. Dem Kanal mitzuteilen, dass ein Preis von einem bestimmten Datum bis zu einem bestimmten Datum gilt, ist zuverlässiger, als darum zu wetteifern, die Datei im richtigen Moment neu zu generieren.

Lagerstatus verdient dieselbe Sorgfalt wie der Preis

Ein Klick auf ein nicht lieferbares Produkt ist genauso verschwendet wie ein Klick auf einen falschen Preis. Die Verfügbarkeit ändert sich meist schneller als der Preis. Wenn Sie also ein Feld häufig aktualisieren, dann dieses.

Seien Sie präzise statt optimistisch. „Auf Lager“ sollte bedeuten, dass Sie versenden können; eine Lieferzeit des Lieferanten von zwei Wochen ist ein anderer Zustand und sollte auch so deklariert werden, wenn die Spezifikation es erlaubt. Wo ein Feed nur „auf Lager“ oder „nicht auf Lager“ kennt, legen Sie die Regel bewusst fest: Die meisten Shops fahren besser damit, lange Lieferzeiten als nicht verfügbar zu markieren, als einen Shopper zu enttäuschen, der Lieferung am nächsten Tag erwartet hat.

Die andere Hälfte der Aufgabe ist das Entfernen. Ausgelaufene Produkte sollten ganz aus dem Feed verschwinden, statt mit Bestand null darin zu verweilen, und die URL von allem, was entfernt wurde, sollte einen korrekten 404 liefern oder auf etwas Passendes weiterleiten, nicht auf eine leere Vorlage.

Ein Monitoring, das zehn Minuten pro Woche kostet

Abweichungen, die Sie nicht sehen, können Sie nicht beheben. Richten Sie einen einfachen Abgleich zwischen Feed und Live-Shop ein:

  1. Rufen Sie Ihre eigene Feed-URL von außerhalb Ihres Netzwerks ab, so wie es ein Crawler tut, und notieren Sie den Age-Header.
  2. Ziehen Sie eine Stichprobe, etwa fünfzig Artikel, gewichtet nach Bestsellern und allem, dessen Preis kürzlich geändert wurde.
  3. Lesen Sie für jeden Artikel Preis und Lagerstatus der Live-Seite per Scraping oder manuell aus und vergleichen Sie sie mit den Feed-Werten.
  4. Gehen Sie allem nach, was um mehr als eine Rundungsdifferenz abweicht, und allem, dessen Feed-Zeitstempel älter ist als Ihr angegebenes Generierungsintervall.

Lassen Sie das nach Möglichkeit als geplantes Skript laufen und alarmieren Sie bei einem Schwellenwert statt bei jeder einzelnen Differenz: Eine Handvoll Artikel mitten im Update ist normal, fünfzig Prozent des Katalogs nicht. Behalten Sie auch die Gesamtzahl der Artikel zwischen den Läufen im Blick: Ein Feed, der plötzlich ein Drittel seiner Produkte verliert, deutet meist darauf hin, dass ein Generierungsjob mittendrin abgebrochen ist, und nicht auf eine echte Katalogänderung.

Die Shops, die auf Vergleichskanälen am wenigsten Ärger haben, sind nicht die mit den aufwendigsten Feeds. Es sind die, bei denen die Zahl in der Datei die Zahl auf der Seite ist, zu jeder Stunde des Tages.

Zurück zum Blog

Shop anmelden

Senden Sie uns die Daten Ihres Shops, wir melden uns bei Ihnen.

Wir verwenden Ihre Angaben nur, um Sie zu kontaktieren.

Wir verwenden Cookies von Google Analytics, um zu sehen, wie Besucher die Website nutzen. Sie werden nur gesetzt, wenn Sie zustimmen.