Shopware Preisoptimierung automatisieren: So geht's in 2025
Schritt-für-Schritt Anleitung zur automatischen Preisoptimierung in Shopware 6. Mit konkreten Regeln und Best Practices.

Shopware Preisoptimierung automatisieren: So geht's in 2025
Warum Shopware-Shops Dynamic Pricing brauchen
Shopware ist mit über 50.000 aktiven Shops eine der führenden E-Commerce-Plattformen im DACH-Raum. Doch die meisten Shop-Betreiber nutzen nur einen Bruchteil der Möglichkeiten – besonders bei der Preisoptimierung.
Das Problem:
- ⏰ Manuelle Preispflege kostet 10-20 Stunden pro Woche
- 📊 Preise basieren auf Bauchgefühl statt Daten
- 💰 Margen sinken durch Wettbewerbsdruck
- 📦 Lagerkosten fressen Gewinne auf
Die Lösung: Automatische Preisoptimierung direkt über die Shopware API.
Die Shopware 6 API verstehen
Was die API kann:
// Produktpreis auslesen
GET /api/product/{productId}
// Produktpreis aktualisieren
PATCH /api/product/{productId}
{
"price": [{
"currencyId": "b7d2554b0ce847cd82f3ac9bd1c0dfca",
"gross": 29.99,
"net": 25.20,
"linked": true
}]
}
Integration in 3 Schritten
Schritt 1: API-Zugang erstellen
- Shopware Admin öffnen
- Einstellungen → System → Integrationen
- "Neue Integration" erstellen
- Berechtigungen setzen:
- ✅ product:read
- ✅ product:write
- Client ID & Secret kopieren
Schritt 2: Authentifizierung
const getAccessToken = async () => {
const response = await fetch('https://dein-shop.com/api/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
grant_type: 'client_credentials',
client_id: 'DEINE_CLIENT_ID',
client_secret: 'DEIN_SECRET'
})
});
const data = await response.json();
return data.access_token;
};
Schritt 3: Preise aktualisieren
const updatePrice = async (productId, newPrice) => {
const token = await getAccessToken();
await fetch(`https://dein-shop.com/api/product/${productId}`, {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
price: [{
currencyId: 'b7d2554b0ce847cd82f3ac9bd1c0dfca', // EUR
gross: newPrice,
net: newPrice / 1.19, // 19% MwSt
linked: true
}]
})
});
};
5 konkrete Pricing-Regeln für Shopware
Regel 1: Lagerbestand-basierte Preise
Ziel: Schneller Abverkauf bei hohem Bestand
// Pseudocode
if (product.stock > 50) {
newPrice = currentPrice * 0.90; // -10%
} else if (product.stock < 10) {
newPrice = currentPrice * 1.15; // +15%
}
Shopware-Umsetzung:
// In eigenem Plugin oder via API
$products = $repository->search($criteria, $context);
foreach ($products as $product) {
$stock = $product->getStock();
$currentPrice = $product->getPrice()->getGross();
if ($stock > 50) {
$newPrice = $currentPrice * 0.90;
$this->updateProductPrice($product->getId(), $newPrice);
}
}
Regel 2: Verkaufsgeschwindigkeit
Ziel: Schnelldreher erkennen und Marge erhöhen
-- Verkäufe der letzten 7 Tage
SELECT
product_id,
COUNT(*) as sales_last_7days
FROM order_line_item
WHERE created_at > DATE_SUB(NOW(), INTERVAL 7 DAY)
GROUP BY product_id
HAVING sales_last_7days > 10
Regel 3: Zeitbasierte Preise
Ziel: Weekend-Premium für Bestseller
const isWeekend = () => {
const day = new Date().getDay();
return day === 0 || day === 6; // Sonntag oder Samstag
};
if (isWeekend() && product.isBestseller) {
newPrice = basePrice * 1.05; // +5%
}
Regel 4: Produktalter
Ziel: Alte Ware rabattieren
const daysInStock = (createdAt) => {
const now = new Date();
const created = new Date(createdAt);
return Math.floor((now - created) / (1000 * 60 * 60 * 24));
};
if (daysInStock(product.createdAt) > 90) {
newPrice = currentPrice * 0.80; // -20%
}
Regel 5: Mindestmarge garantieren
Ziel: Nie unter Marge verkaufen
const calculateMinPrice = (purchasePrice, minMargin = 0.20) => {
return purchasePrice * (1 + minMargin);
};
const proposedPrice = applyPricingRules(product);
const minPrice = calculateMinPrice(product.purchasePrice);
finalPrice = Math.max(proposedPrice, minPrice);
Shopware Plugin vs. SaaS-Lösung
Option 1: Eigenes Plugin entwickeln
Vorteile:
- ✅ Volle Kontrolle
- ✅ Keine monatlichen Kosten
- ✅ Custom-Regeln möglich
Nachteile:
- ❌ Entwicklungszeit: 80-200 Stunden
- ❌ Wartung & Updates nötig
- ❌ Keine Updates bei Shopware-Changes
Kosten: 8.000-20.000€ (einmalig)
Option 2: SaaS wie PriceRule.ai
Vorteile:
- ✅ Setup in 2 Minuten
- ✅ Automatische Updates
- ✅ 40+ vorkonfigurierte Regeln
- ✅ Support inklusive
Nachteile:
- ❌ Monatliche Kosten
- ❌ Abhängigkeit vom Anbieter
Kosten: 49-149€/Monat
Performance-Tipps für Shopware
1. Bulk-Updates nutzen
Nicht einzelne API-Calls:
// ❌ Langsam
for (let product of products) {
await updatePrice(product.id, product.newPrice);
}
// ✅ Schnell
await bulkUpdatePrices(products);
2. Caching implementieren
// Cache für 5 Minuten
const cache = new Map();
const getProductData = async (id) => {
if (cache.has(id)) {
const cached = cache.get(id);
if (Date.now() - cached.timestamp < 300000) {
return cached.data;
}
}
const data = await fetchFromAPI(id);
cache.set(id, { data, timestamp: Date.now() });
return data;
};
3. Cronjobs zeitlich staffeln
# Nicht alle Produkte gleichzeitig
0 2 * * * /usr/bin/php update-prices-category-1.php
0 3 * * * /usr/bin/php update-prices-category-2.php
0 4 * * * /usr/bin/php update-prices-category-3.php
Best Practices für Shopware-Shops
1. Preisänderungen loggen
CREATE TABLE price_history (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id VARCHAR(255),
old_price DECIMAL(10,2),
new_price DECIMAL(10,2),
reason VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Änderungen graduell
Nicht: 19,99€ → 14,99€ (sofort) Sondern: 19,99€ → 18,99€ → 17,99€ → ... (über 5 Tage)
3. Kunden informieren
Bei größeren Preisänderungen:
- E-Mail an Kunden mit Produkten auf Wunschliste
- Push-Benachrichtigung bei Preissenkung
4. A/B-Testing
// 50% Produkte mit neuem Algorithmus
const useNewPricing = product.id % 2 === 0;
if (useNewPricing) {
price = calculateDynamicPrice(product);
} else {
price = product.basePrice; // Kontrollgruppe
}
Shopware Flow Builder nutzen
Für einfache Regeln kannst du den Shopware Flow Builder nutzen:
Beispiel-Flow:
- Trigger: Produkt-Lagerbestand ändert sich
- Bedingung: Wenn Bestand < 5
- Aktion: Produkt-Preis erhöhen um 10%
Limitation:
- Nur einfache Regeln
- Keine komplexen Berechnungen
- Keine externen Daten
Rechtliche Aspekte (DACH)
Preisangabenverordnung (PAngV)
Wichtig:
- ✅ Grundpreis immer anzeigen
- ✅ Versandkosten transparent
- ✅ Streichpreise nur bei echten Rabatten
Dynamische Preise & Geoblocking
Erlaubt:
- ✅ Zeitbasierte Preise (Happy Hour, Weekend)
- ✅ Bestandsbasierte Preise
- ✅ Saisonpreise
Nicht erlaubt:
- ❌ Personenbasierte Preise (Cookie-Tracking)
- ❌ IP-basierte Diskriminierung innerhalb EU
- ❌ Preise im Warenkorb erhöhen
Dokumentationspflicht
Halte fest:
- Grund für Preisänderung
- Zeitpunkt der Änderung
- Alte & neue Preise
Monitoring & Erfolgskontrolle
KPIs für Shopware
Dashboard aufsetzen mit:
- Durchschnittliche Marge
SELECT AVG((gross - purchasePrice) / gross * 100) as avg_margin
FROM product
- Lagerumschlag
SELECT
(SUM(quantity_sold) / AVG(stock)) as turnover_rate
FROM products
-
Preis-Elastizität
- Wie viel % mehr/weniger verkauft bei ±10% Preis?
-
Conversion Rate nach Kategorie
- Welche Preisregeln funktionieren am besten?
Fazit für Shopware-Shops
Quick Wins (sofort umsetzbar):
- ✅ Lagerbestand-Regel aktivieren
- ✅ Mindestmarge definieren
- ✅ Alte Produkte automatisch rabattieren
Mittelfristig (nächste 30 Tage):
- ✅ API-Integration aufsetzen
- ✅ A/B-Tests durchführen
- ✅ Monitoring etablieren
Langfristig (nächste 90 Tage):
- ✅ Alle 7 Preisregeln aktiv
- ✅ ML-basierte Optimierung
- ✅ Wettbewerbspreise integrieren
Kein Bock auf Programmierung? PriceRule.ai macht das alles automatisch für deinen Shopware-Shop. Jetzt Beta-Zugang anfragen →
