Shopify E-Commerce · Automatisierung

Online Juwelier

Vollständiger Shop-Aufbau + 10.000+ Produkte aus 3 Lieferanten via CSV4YOU — mit täglicher Automatisierung für Lagerbestand, Sichtbarkeit und Kollektionen.

Live Shop · online-juwelier.de
Online Juwelier Storefront
▲ Ausgangslage

Drei Großhändler, 10.000+ SKUs, tägliche Lagerveränderungen — manuelle Pflege war strukturell unmöglich. Ausverkaufte Produkte blieben sichtbar, leere Kollektionen erschienen in der Navigation, kein Sync-Mechanismus vorhanden.

✓ Umsetzung

CSV4YOU-API-Integration mit 3 Lieferanten-Feeds + zwei eigenständige Python-Scripts mit täglich geplantem Lauf via GitHub Actions: automatisches Verstecken ausverkaufter Produkte und leerer Kollektionen — mit automatischer Reaktivierung bei Wiederverfügbarkeit.

🔗
CSV4YOU API-Sync
3 Lieferanten-Feeds in einem System zusammengeführt. Produkte, Varianten, Preise und Bestände werden täglich synchronisiert — ohne manuellen Eingriff.
10k+ SKUs 3 Lieferanten tägl. Sync
👁️
Auto-Hide Sold-Out
hide_soldout.py setzt ausverkaufte Produkte auf Draft, reaktiviert sie automatisch bei Lagereingang. Rate-Limit-Handling + Logging inklusive.
active → draft auto-restore
📂
Auto-Hide Empty Collections
hide_empty_collections.py versteckt Kollektionen ohne aktive Produkte und reaktiviert sie sobald Produkte wieder verfügbar sind.
custom + smart pagination
Lagerlogik + API-Robustheit

Beide Scripts laufen unbeaufsichtigt — sie müssen mit Rate Limits, Pagination und inkonsistenten Lieferantendaten umgehen können.

Lagerlogik hide_soldout.py
# Nur getrackte Varianten zählen def is_sold_out(product): tracked = [v for v in product["variants"] if v.get("inventory_management") == "shopify"] if not tracked: return False # untracked → nie verstecken return all( v["inventory_quantity"] <= 0 for v in tracked ) def has_stock(product): return any( v["inventory_quantity"] > 0 for v in product["variants"] )
API-Robustheit beide Scripts
# 429 Rate Limit → exponential backoff def api_put(path, payload): for attempt in range(3): try: urllib.request.urlopen(req, timeout=30) return True except HTTPError as e: if e.code == 429: time.sleep(2 ** (attempt + 1)) else: return False # Cursor-Pagination via Link-Header def next_url(link): for part in link.split(","): if 'rel="next"' in part: return part.strip() .split(";")[0].strip("<>")

Warum das zählt: Die Scripts laufen täglich unbeaufsichtigt über einen Katalog mit 10.000+ Einträgen. Exponential Backoff bei Rate Limits, kurssorbasierte Pagination und Dual-Direction-Logik (Verstecken und Reaktivieren) machen das System produktionstauglich — ohne externe Dependencies, nur Python-Stdlib.

10k+
Produkte aus
3 Lieferanten
2
Automation-Scripts
täglich via GitHub
0
manuelle Eingriffe
pro Tag nötig
24/7
saubere Storefront:
kein leerer Stock