RcProductFeedShippingExtension: Versandkosten im Google Shopping Feed

Google Shopping will Versandkosten pro Produkt und Zielland. Klingt nach einer einfachen Zahl — aber Shopware berechnet Versandkosten über ein Geflecht aus Gewichtsregeln, Preisstaffeln und Länderzuordnungen. Diese Logik für einen Produktfeed nachzubauen ist fehleranfällig und Wartungshölle. RcProductFeedShippingExtension geht den einzig sauberen Weg: Es fragt Shopwares eigene Versandkostenberechnung ab und liefert korrekte Werte für jeden Feed.

Warum statische Versandkosten im Feed scheitern

Die meisten Feed-Plugins schreiben einen festen Betrag in den Export — 4,99 EUR für Deutschland, fertig. Das stimmt, solange sich an den Versandregeln nichts ändert. Sobald du aber Staffelpreise nach Gewicht einführst, Gratisversand ab einem bestimmten Bestellwert anbietest oder Sondertarife für bestimmte Regionen definierst, weichen die statischen Werte im Feed von der Realität ab. Google merkt die Diskrepanz spätestens beim Checkout-Vergleich — und straft das Listing ab.

Andere Plugins versuchen, Shopwares Versandlogik eigenständig nachzubauen. Das funktioniert bei einfachen Regeln, scheitert aber zuverlässig an Staffelpreisen, Gewichtsgrenzen und Ausnahmen. Bei mehreren Zielländern multipliziert sich der Aufwand.

So funktioniert das Plugin

Der Ansatz ist simpel und robust: Für jedes Produkt erstellt das Plugin einen virtuellen Warenkorb, legt das Produkt hinein, setzt eine Referenzadresse des Ziellandes als Lieferadresse und lässt Shopwares eigenen Shipping-Calculator die Versandkosten berechnen. Das Ergebnis ist exakt der Betrag, den ein Kunde auch im Checkout sehen würde.

Die berechneten Werte werden für 24 Stunden gecacht, damit nicht jeder Feed-Abruf die komplette Berechnung für alle Produkte anstößt. Falls die Berechnung für ein Produkt fehlschlägt — etwa weil keine passende Versandregel greift — springt ein konfigurierbarer Fallback-Preis ein. So landet nie ein leeres Versandkosten-Feld im Feed.

Installation

Installation per Composer in der DDEV-Umgebung:

ddev composer require ruhrcoder/rc-product-feed-shipping-extension
ddev exec bin/console plugin:refresh
ddev exec bin/console plugin:install --activate RcProductFeedShippingExtension
ddev exec bin/console cache:clear

Konfiguration

Die Einstellungen findest du unter Erweiterungen > Meine Erweiterungen > RcProductFeedShippingExtension > Konfiguration:

EinstellungBeschreibungStandard
ZielländerLänder, für die Versandkosten berechnet werdenDE
Fallback-Preis (DE)Versandkosten, falls Berechnung fehlschlägt4,99 €
Cache-DauerWie lange berechnete Werte gecacht werden24 Stunden
VersandartDie Versandart, die für die Berechnung verwendet wirdStandard

Für jedes Zielland hinterlegst du eine Referenzadresse. Die Adresse beeinflusst die Berechnung — insbesondere bei Regeln, die nach PLZ-Bereich oder Region staffeln. Für Deutschland bietet sich eine Adresse in der Mitte des Landes an, um einen realistischen Durchschnittswert zu bekommen.

Cache-Warmup

Nach der Erstinstallation oder nach Änderungen an den Versandregeln solltest du den Cache vorab befüllen. So muss nicht der erste Feed-Abruf die Berechnung für das gesamte Sortiment anstoßen:

ddev exec bin/console rc:product-feed-shipping:warmup

Der Befehl iteriert über alle aktiven Produkte und berechnet die Versandkosten für jedes konfigurierte Zielland. Je nach Produktanzahl kann das einige Minuten dauern. In einem Cronjob eingerichtet, hält der Warmup den Cache dauerhaft aktuell — auch wenn sich Versandregeln ändern.

Praxisbeispiel: Google Shopping mit drei Zielländern

Ein Shop verkauft nach Deutschland, Österreich und in die Schweiz. Jedes Land hat eigene Versandkosten — Deutschland nach Gewicht gestaffelt, Österreich mit Flatrate, Schweiz mit Zollzuschlag. Statische Werte im Feed wären drei verschiedene Fallback-Beträge, die bei der nächsten Regeländerung veralten.

Mit RcProductFeedShippingExtension konfigurierst du drei Zielländer mit je einer Referenzadresse. Das Plugin berechnet für jedes Produkt die korrekten Versandkosten pro Land — basierend auf den tatsächlichen Versandregeln in Shopware. Änderst du die Regeln, aktualisieren sich die Feed-Werte beim nächsten Warmup automatisch.

Update

Updates laufen über Composer:

ddev composer update ruhrcoder/rc-product-feed-shipping-extension
ddev exec bin/console plugin:update RcProductFeedShippingExtension
ddev exec bin/console cache:clear

Nach einem Update empfiehlt es sich, den Cache-Warmup erneut auszuführen — insbesondere wenn sich die interne Berechnungslogik geändert hat.

Die gezeigten Code-Beispiele dienen zur Veranschaulichung. Nutzung auf eigene Verantwortung. Mehr dazu