Home/Blog/Shopware Preisoptimierung automatisieren: So geht's in 2025
shopware8. November 202510 min

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
P
PriceRule.ai Team

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

  1. Shopware Admin öffnen
  2. Einstellungen → System → Integrationen
  3. "Neue Integration" erstellen
  4. Berechtigungen setzen:
    • ✅ product:read
    • ✅ product:write
  5. 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:

  1. Trigger: Produkt-Lagerbestand ändert sich
  2. Bedingung: Wenn Bestand < 5
  3. 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:

  1. Durchschnittliche Marge
SELECT AVG((gross - purchasePrice) / gross * 100) as avg_margin
FROM product
  1. Lagerumschlag
SELECT
  (SUM(quantity_sold) / AVG(stock)) as turnover_rate
FROM products
  1. Preis-Elastizität

    • Wie viel % mehr/weniger verkauft bei ±10% Preis?
  2. Conversion Rate nach Kategorie

    • Welche Preisregeln funktionieren am besten?

Fazit für Shopware-Shops

Quick Wins (sofort umsetzbar):

  1. ✅ Lagerbestand-Regel aktivieren
  2. ✅ Mindestmarge definieren
  3. ✅ Alte Produkte automatisch rabattieren

Mittelfristig (nächste 30 Tage):

  1. ✅ API-Integration aufsetzen
  2. ✅ A/B-Tests durchführen
  3. ✅ Monitoring etablieren

Langfristig (nächste 90 Tage):

  1. ✅ Alle 7 Preisregeln aktiv
  2. ✅ ML-basierte Optimierung
  3. ✅ Wettbewerbspreise integrieren

Kein Bock auf Programmierung? PriceRule.ai macht das alles automatisch für deinen Shopware-Shop. Jetzt Beta-Zugang anfragen →

ShopwareAutomatisierungPreisoptimierungShopware 6

Bereit für automatische Preisoptimierung?

Starte jetzt mit PriceRule.ai und optimiere deine Preise intelligent.

Jetzt Beta-Zugang sichern