Shopware 6 Rule Builder – Preisregeln einfach erklärt
Der Shopware 6 Rule Builder ist eines der mächtigsten Werkzeuge im Shopware-Ökosystem. Mit ihm lassen sich komplexe Geschäftslogiken ohne Programmierung umsetzen – von dynamischen Preisregeln über Versandkostenstaffeln bis hin zu personalisierten Promotions. In diesem Artikel zeige ich dir, wie der Shopware 6 Rule Builder funktioniert und wie du ihn optimal für dein E-Commerce-Projekt einsetzt.
Was ist der Shopware 6 Rule Builder?
Der Rule Builder ist ein visuelles Interface im Shopware 6 Backend, mit dem du Bedingungen (Conditions) definierst. Diese Regeln steuern dann automatisch verschiedene Shop-Funktionen:
- Preisregeln – Rabatte ab bestimmten Warenkorbwerten
- Versandkosten – Kostenloser Versand für Premium-Kunden
- Zahlungsarten – PayPal nur für Stammkunden anzeigen
- Produktsichtbarkeit – B2B-Artikel nur für eingeloggte Händler
- Promotions – 3-für-2-Aktionen mit zeitlichen Begrenzungen
Der Vorteil: Du brauchst keine Plugins oder Code-Anpassungen für Standard-Szenarien. Der Shopware 6 Rule Builder macht das System extrem flexibel.
Anatomie einer Regel
Jede Regel im Rule Builder besteht aus zwei Teilen:
- Bedingungen (Conditions) – WANN soll die Regel greifen?
- Aktionen (Actions) – WAS soll passieren?
Die Bedingungen kannst du verschachteln mit:
- AND – Alle Bedingungen müssen erfüllt sein
- OR – Mindestens eine Bedingung muss erfüllen
Beispiel: VIP-Rabatt
Regel: "Stammkunden mit Warenkorbwert über 200€ erhalten 10% Rabatt"
Bedingungen (AND):
- Kundengruppe = "VIP"
- Warenkorbwert ≥ 200€
Aktion:
- Rabatt 10% auf Gesamtsumme
Die wichtigsten Condition-Typen
Der Shopware 6 Rule Builder bietet über 40 Standard-Bedingungen. Die wichtigsten:
Warenkorb-Bedingungen
- Cart Amount – Gesamtwert (netto/brutto)
- Line Item Count – Anzahl Produkte im Warenkorb
- Line Item with Quantity – Bestimmtes Produkt X-mal im Warenkorb
Kunden-Bedingungen
- Customer Group – Kundengruppe (B2B, Stammkunde, etc.)
- Customer Number – Spezifische Kundennummern
- Billing/Shipping Address – PLZ-Bereiche, Länder
- Is New Customer – Erstkäufer identifizieren
Zeit-Bedingungen
- Day of Week – Bestimmte Wochentage (z.B. "Happy Friday")
- Date Range – Zeitraum (Weihnachtsaktion)
Produkt-Bedingungen
- Product – Spezifische Produkte
- Manufacturer – Hersteller
- Category – Kategorien
- Product Properties – Eigenschaften (Farbe, Größe)
Praktisches Beispiel: Versandkostenregel
Szenario: Ab 50€ Warenkorbwert ist der Versand kostenlos, aber nur innerhalb Deutschlands.
Schritt 1: Regel erstellen
Im Backend navigierst du zu:
Einstellungen → Shop → Regeln → Neue Regel erstellen
Name: "Kostenloser Versand DE ab 50€" Priorität: 100 (höhere Zahl = wichtiger)
Schritt 2: Bedingungen definieren
AND-Container
├─ Cart Amount (>=) 50.00 EUR (Gross)
└─ Billing Country (=) Deutschland
Schritt 3: Regel mit Versandart verknüpfen
Gehe zu:
Einstellungen → Shop → Versandarten → [Deine Versandart]
Bei "Verfügbarkeitsregel" wählst du die erstellte Regel aus. Setze die Versandkosten auf 0,00€.
Fertig! Kunden aus Deutschland zahlen ab 50€ Warenkorbwert keine Versandkosten.
Preisregeln mit Promotions
Für komplexe Rabattaktionen nutzt du den Promotion-Bereich in Kombination mit dem Rule Builder.
Beispiel: "3 für 2"-Aktion
Ziel: Kaufe 3 T-Shirts, zahle nur 2
Einstellungen → Shop → Promotions → Neue Promotion
Bedingungen:
Line Item with Quantity
├─ Product = "Basic T-Shirt"
└─ Quantity (>=) 3
Rabatt-Typ:
- "Kaufe X zahle Y" (Buy X Get Y)
- Kaufe: 3, Zahle: 2
Der Shopware 6 Rule Builder rechnet automatisch den günstigsten Artikel heraus.
Custom Rules via Plugin
Manchmal reichen die Standard-Conditions nicht. Dann erstellst du eigene Regeln per Plugin.
Beispiel: Regel für "Kunde hat bereits Produkt X gekauft"
<?php
namespace MyPlugin\Core\Rule;
use Shopware\Core\Checkout\Cart\Rule\CartRuleScope;
use Shopware\Core\Framework\Rule\Rule;
use Shopware\Core\Framework\Rule\RuleScope;
class HasPurchasedProductRule extends Rule
{
protected string $productId;
public function match(RuleScope $scope): bool
{
if (!$scope instanceof CartRuleScope) {
return false;
}
$customerId = $scope->getSalesChannelContext()
->getCustomer()?->getId();
if (!$customerId) {
return false;
}
// Prüfe Order-History in DB
return $this->customerHasPurchasedProduct(
$customerId,
$this->productId
);
}
public function getConstraints(): array
{
return [
'productId' => RuleConstraints::uuid()
];
}
}
Registriere die Rule in services.xml:
<service id="MyPlugin\Core\Rule\HasPurchasedProductRule">
<tag name="shopware.rule.definition"/>
</service>
Nach dem Plugin-Install steht die Regel im Rule Builder zur Verfügung.
Performance-Tipps
Der Shopware 6 Rule Builder ist performant, aber bei vielen Regeln solltest du beachten:
1. Prioritäten sinnvoll setzen
Regeln mit höherer Priorität werden zuerst geprüft. Setze häufig zutreffende Regeln höher.
2. Bedingungen cachen
Shopware cached Rule-Ergebnisse automatisch. Bei Custom Rules nutze den CacheKeyGenerator:
public function getName(): string
{
return 'my_custom_rule';
}
3. Komplexe DB-Abfragen vermeiden
Vermeide in Custom Rules langsame Queries. Nutze wo möglich EntityRepository mit Caching.
4. Testdaten nutzen
Erstelle Test-Kunden mit verschiedenen Eigenschaften, um Regeln zu validieren, bevor sie live gehen.
Debugging von Regeln
Regeln greifen nicht wie erwartet? So debuggst du:
Entwickler-Toolbar
In der Symfony-Profiler-Bar siehst du, welche Rules geprüft wurden:
bin/console debug:container | grep rule
Logger nutzen
In Custom Rules:
use Psr\Log\LoggerInterface;
public function __construct(private LoggerInterface $logger)
{
}
public function match(RuleScope $scope): bool
{
$result = // ... deine Logik
$this->logger->info('Rule matched: ' . ($result ? 'yes' : 'no'));
return $result;
}
Administration Console
Im Browser-Console der Administration kannst du Rule-Evaluierungen nachverfolgen.
Typische Fehler vermeiden
❌ Regel zu restriktiv Problem: "AND" mit zu vielen Bedingungen – Regel greift nie. Lösung: Mit wenigen Bedingungen starten, schrittweise erweitern.
❌ Prioritäten ignoriert Problem: Zwei Regeln widersprechen sich. Lösung: Klare Prioritäten setzen (0–1000).
❌ Keine Testphase Problem: Regel geht direkt live, Rabatte werden falsch berechnet. Lösung: Immer mit Test-Accounts in Staging-Umgebung prüfen.
Fazit
Der Shopware 6 Rule Builder ist ein unverzichtbares Tool für jeden Shop-Betreiber. Ob einfache Preisregeln oder komplexe Multi-Bedingungen – das System bietet maximale Flexibilität ohne Code-Anpassungen. Für Spezialfälle lassen sich Custom Rules problemlos via Plugin integrieren.
Die wichtigsten Takeaways:
- Nutze Standard-Conditions wo möglich
- Setze Prioritäten bewusst
- Teste Regeln gründlich vor dem Go-Live
- Für komplexe Logik: Custom Rules entwickeln
Du arbeitest an einem Shopware 6 Projekt und brauchst Unterstützung beim Rule Builder oder Custom-Entwicklungen? Ich helfe dir gerne – von der Konzeption bis zur technischen Umsetzung.