So funktioniert der Sync
redPIM ist die Source of Truth, Smartstore das Shop-Frontend. Das Connector-Plugin stellt im Shop drei Endpoints bereit; redPIM ruft sie auf und berechnet den Abgleich lokal über einen Fingerprint je Master-Produkt:
| Schritt | Call (im Shop) | Zweck |
|---|---|---|
| 1 | GET /api/redpim/mappings | Lookup-Tabellen holen (Hersteller, Einheiten, Lieferzeiten, Steuerkategorien, Sprachen …). redPIM-seitig ~1 Stunde cachen. |
| 2 | GET /api/redpim/inventory | NDJSON-Stream {sku, fp} aller verwalteten Master-Produkte. |
| 3 | POST /api/redpim/upsert | Create/Update in Batches (≤ 1000), pro Produkt transaktional. |
Diff-Regel: SKU nicht im Shop → create; Fingerprint ungleich → update; Fingerprint gleich → skip. Der Fingerprint wird von redPIM berechnet (ein Hash pro Master-Produkt) und vom Shop nur opak gespeichert — der Algorithmus lebt an genau einer Stelle, keine Drift.
Einrichtung
Connector-Plugin installieren
Das Plugin redComponents.RedPimConnector im Smartstore-Shop installieren und aktivieren.
Token generieren
Im Smartstore-Admin: Plugins → RedPIM Connector → Konfiguration → „Token generieren". Der Token wird einmalig im Klartext angezeigt — sofort kopieren. Server-seitig wird nur der SHA-256-Hash gespeichert; bei Verlust einen neuen generieren (der alte wird damit ungültig).
redPIM konfigurieren
Shop-URL und den generierten Token in redPIM hinterlegen. Alle Connector-Aufrufe authentifizieren per Authorization: Bearer <TOKEN>.
Connectivity-Test & Sync
Kurz prüfen, dass die Schnittstelle erreichbar ist, dann den Sync starten:
export REDPIM_TOKEN="<dein Token>"
export SHOP_URL="https://shop.example.com"
# Auth ok? → 200
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Authorization: Bearer $REDPIM_TOKEN" \
"$SHOP_URL/api/redpim/mappings"
# Ohne Token? → 401
curl -s -o /dev/null -w "%{http_code}\n" \
"$SHOP_URL/api/redpim/mappings"
Was übertragen wird
- Master-Produkte — Stammdaten, abgeglichen über die SKU als Schlüssel (echter Geschäftsidentifier in beiden Welten).
- Varianten-Combinations — werden reconciled: was nicht im Upsert-Payload steht, wird im Shop auf
IsActive = falsegesetzt. - Bilder — asynchron über eine Media-Sync-Queue + Worker (Cron alle 5 Minuten), per Content-Hash dedupliziert (Shared Assets werden nicht mehrfach geladen).
Grenzen & Hinweise
- Kein Hard-/Soft-Delete von Master-Produkten, die aus dem PIM-Katalog verschwinden — der Connector deaktiviert sie nicht automatisch (ein Endpoint
POST /api/redpim/deprecateist als künftige Erweiterung vorgesehen). Bis dahin handhabt der Shop-Betreiber das manuell. - Nur JSON-Upsert, kein CSV-Bulk-Pfad (CSV kann Varianten-Combinations nur updaten, nicht neu anlegen).
- Im Inventory erscheinen nur Produkte, die jemals via Upsert synchronisiert wurden — manuell im Shop-Admin angelegte Produkte sind für den Connector unsichtbar.
Performance (Initial-Seed)
Richtwert für 150.000 Produkte (⌀ 3 Master-Bilder):
- Upsert-Phase: ~30–60 Min (≈150 Requests à 1000 Produkte, sequentiell).
- Bilder-Phase: läuft parallel im Hintergrund, ~1–3 h für ⌀ 450k Bilder (5-Minuten-Cron, Batch 50).
Häufige Fragen
Wie werden Produkte zwischen redPIM und Smartstore zugeordnet?
Über die SKU. Sie existiert in beiden Systemen und ist der echte Geschäftsidentifier — keine separate RedPIM-ID nötig.
Werden bei jedem Lauf alle Produkte übertragen?
Nein. Der Fingerprint-Diff überträgt nur neue oder geänderte Produkte; unveränderte werden übersprungen.
Was passiert mit Produkten, die im PIM gelöscht werden?
Aktuell nichts automatisch — der Connector deaktiviert keine verschwundenen Master-Produkte. Ein deprecate-Endpoint ist als Erweiterung vorgesehen.
Wie werden Bilder behandelt?
Asynchron über eine Queue + Worker, per Content-Hash dedupliziert — der Upsert-Hot-Path bleibt schnell.