Amazon-Angebote verwalten
Die Seite Amazon-Angebote verwalten ist die zentrale Arbeitsfläche für die Pflege deines Amazon-Sortiments in Flowkom. Sie ersetzt die alte Einzelzeilen- Zuordnung und bietet stattdessen eine JTL-artige Multi-Select-Tabelle mit Filterleiste, Bulk-Aktionen, konfigurierbaren Spalten und CSV-Export.
Wo finde ich die Seite? Einstellungen → Integrationen → Amazon-Integration auswählen → Button “Alle Angebote verwalten” in der Karte “Amazon-Angebote”.
Der Workflow auf einen Blick
Einmal gelernt, bearbeitest du damit 50, 500 oder 5.000 Angebote in wenigen Sekunden — ohne zig Einzeldialoge.
Filterleiste
Die Toolbar kombiniert alle relevanten Filter frei miteinander. Jeder aktive Filter erscheint als Chip unterhalb der Leiste und kann einzeln entfernt werden. Der Button Alle zurücksetzen setzt sämtliche Filter auf Default.
| Filter | Zweck |
|---|---|
| Suche (SKU, ASIN, Titel) | Trigram-Index-basiert, schnelle Volltextsuche über alle drei Spalten gleichzeitig |
| Marktplatz (Multi-Select) | z.B. nur DE + FR filtern; mehrere Marktplätze gleichzeitig möglich |
| Fulfillment | FBA, FBM oder beide |
| Status | Aktiv, Inaktiv, Unvollständig oder alle |
| Nur nicht zugeordnet | Zeigt ausschließlich Angebote ohne Flowkom-Artikel |
| Bestand = 0 | Zeigt nur FBA-Angebote mit 0 lieferbaren Einheiten in Amazon-Lagern |
Filter-State ist in der URL
Die aktiven Filter werden als Query-Parameter in die URL geschrieben. Das bedeutet:
- Teilbar: URL kopieren und an Kollegen schicken → sie sehen genau dieselbe Filter-Ansicht.
- Back-Button funktioniert: Browser-Zurück springt zur vorherigen Filterkombination.
- Bookmark-fähig: Häufig genutzte Filter als Lesezeichen speichern.
FBA vs. FBM — was ist der Unterschied?
| Aspekt | FBA (Fulfillment by Amazon) | FBM (Fulfillment by Merchant) |
|---|---|---|
| Versand | Amazon (aus FBA-Lager) | Du selbst (aus deinem Flowkom-Lager) |
| Bestand relevant | FBA-Lagerbestand wird von Amazon gemeldet | Dein Flowkom-Bestand wird an Amazon gepusht |
| Default-Mapping | SKU mit optionalem -FBA-Suffix wird automatisch auf den Basisartikel gemappt | Exakter SKU-Match, Fallback ohne -FBM-Suffix |
| Typische Arbeit auf dieser Seite | Altlasten und Cross-Marketplace-Mapping | Mapping bei SKU-Umbenennungen, Fremdangebote |
| Badge-Farbe | grün | blau |
Selektion & Bulk-Aktionen
Zeilen markieren
- Einzelne Zeile: Checkbox in der Zeile.
- Ganze Page: Checkbox im Tabellen-Header (wirkt nur auf sichtbare 50 Zeilen).
- Alle gefilterten: Sobald Header-Checkbox gesetzt ist und mehr als eine Seite Treffer existiert, erscheint der Link “Alle N gefilterten Angebote auswählen”. Der Bulk-Request arbeitet dann gegen den kompletten Filter, nicht nur gegen die sichtbare Page.
Die Auswahl überlebt Page-Wechsel. Wechselst du hingegen die Filter, fragt Flowkom einmal nach, ob du die Auswahl verwerfen willst — damit niemand aus Versehen an Zeilen schreibt, die er gerade nicht im Blick hatte.
Die drei Bulk-Aktionen
| Aktion | Was passiert |
|---|---|
| Zuordnen | Öffnet den Produkt-Picker. Der gewählte Flowkom-Artikel wird auf alle markierten Zeilen geschrieben. Danach läuft automatisch die Cross-Marketplace-Propagation, sodass z.B. eine Zuordnung auf DE auch auf FR/IT übernommen wird. |
| Zuordnung aufheben | Entfernt den Flowkom-Artikel-Link von allen markierten Zeilen — die Amazon-Angebote selbst bleiben bestehen. Mit Confirm-Dialog. |
| Aus Sortiment entfernen | Setzt den Status auf inactive (Soft-Delete). Solange das Angebot auf Amazon nicht wieder BUYABLE wird, lässt der nächste Sync es in Ruhe. Mit Confirm-Dialog. |
Jede Bulk-Aktion schreibt einen einzigen Eintrag ins
amazon_sync_log mit Typ listings_bulk_edit, sodass die Aktionen später
nachvollziehbar sind.
Beispiel-Workflow: 50 unzugeordnete FBA-DE-Angebote auf einmal mappen
Klassisches Szenario nach einem SKU-Rebrand:
- Filter setzen
- Marktplatz: DE
- Fulfillment: FBA
- Toggle Nur nicht zugeordnet: an
- Die Tabelle zeigt nur die betroffenen Zeilen.
- Header-Checkbox klicken → 50 Zeilen markiert.
- Button Zuordnen → Produkt-Picker öffnet sich.
- Im Picker den neuen Flowkom-Artikel suchen, auswählen, Zuordnen klicken.
- Toast: “50 Angebote zugeordnet (+12 über Marktplätze propagiert)”.
Die +12-Propagation bedeutet: weitere 12 Zwillings-SKUs auf FR/IT/ES wurden
automatisch auf denselben Flowkom-Artikel mitgezogen, ohne dass du dort erneut
filtern musstest.
Spalten konfigurieren
Oben rechts: Button Spalten. Dort kannst du pro Benutzer:
- Spalten ein- und ausblenden
- Reihenfolge per Drag & Drop festlegen
- Mit Zurücksetzen auf die Defaults zurückfallen
Die Konfiguration wird im Browser gespeichert (localStorage). Default-Spalten sind: Bild, Titel, SKU, ASIN, Marktplatz, Kanal, Status, FBA-Bestand, Flowkom-Artikel, Zuletzt synchronisiert.
FBA-Bestand
Die Spalte FBA-Bestand zeigt für jedes FBA-Angebot die Anzahl der
Einheiten, die Amazon aktuell in seinen Lagern lieferbar führt — aggregiert
über alle Fulfillment-Center des Marktplatzes. FBM-Angebote zeigen hier —,
weil der Bestand dort vom Flowkom-WMS geführt wird und nicht aus Amazon
zurückgespiegelt werden muss.
| Ereignis | Was passiert |
|---|---|
Stündlicher Cron amazon-fba-inventory-pull | Zieht paginiert alle FBA-Summaries und schreibt sie nach amazon_fba_inventory |
| Button “Jetzt FBA-Bestand pullen” in der Integration-Detailseite | Gleiche Logik, sofort ausgeführt — für Verdachts-Checks |
DB-Trigger auf amazon_fba_inventory | Recomputed amazon_listings.quantity automatisch nach jedem Upsert |
| Listings-UI lädt Tabelle | Zeigt frischen Stand aus amazon_listings.quantity ohne weiteren API-Call |
Technische Details — warum Trigger statt Duplikation?
amazon_fba_inventory ist pro Listing × Fulfillment-Center-Country
normalisiert, weil Amazon den Bestand pro FC aufschlüsselt. Für die UI
brauchen wir aber einen aggregierten Wert pro Listing. Statt diese Summe
beim Pull in amazon_listings.quantity zu duplizieren (und dann bei jedem
Upsert, Delete, Partial-Pull manuell nachzuziehen), hängt ein AFTER
INSERT/UPDATE/DELETE-Trigger auf amazon_fba_inventory und recomputed die
Summe atomar:
SELECT COALESCE(SUM(quantity_available), 0)
FROM amazon_fba_inventory
WHERE amazon_listing_id = <target>;Vorteile: Single Source of Truth bleibt in amazon_fba_inventory, keine
Drift möglich, auch manuelle Datenkorrekturen auf der Quelltabelle landen
sofort in der UI, FBM-Listings werden nie berührt (deren quantity bleibt
NULL, UI zeigt —).
FBM-Bestandssync — separate Richtung
Wichtig: Für FBM-Angebote läuft der Bestand in die andere Richtung —
vom Flowkom-WMS zu Amazon. Der FBA-Inventory-Pull berührt FBM-Angebote
nicht. Wenn du bei einem FBM-Listing einen falschen Amazon-Bestand
vermutest, schau stattdessen in den FBM-Bestandssync-Log (Modul
amazon-inventory-push).
CSV-Export
Der Button Exportieren in der Toolbar lädt die aktuell gefilterte Liste als CSV herunter:
- Semikolon-Separator (Excel-DE kompatibel)
- UTF-8 mit BOM → Umlaute werden korrekt dargestellt
- Hard-Cap: 50.000 Zeilen pro Export (bei Überschreitung: Fehlermeldung, bitte Filter enger ziehen)
Der Export ist als Analyse-Werkzeug gedacht, nicht als JTL-Ameise- Import-Format. Spalten: SKU, ASIN, Titel, Marktplatz, Fulfillment, Status, Bestand, Flowkom-Artikel-Nr., Flowkom-Artikel-Name, Zuletzt synchronisiert.
Leere Zustände
- Keine Treffer für die aktuellen Filter → Button “Filter zurücksetzen”.
- Gar keine Angebote abgerufen → Hinweis, was der Abruf tut, mit dem Knopf Angebote abrufen direkt daneben.
Tipps & Best Practices
- Nutze Deep-Links: Bookmark für “Nicht zugeordnete FBA-DE-Angebote” — der erste tägliche Reiniger-Workflow erledigt sich in einer Minute.
- Soft-Delete statt Hard-Delete: Aus Sortiment entfernen ist der einzig sinnvolle Weg, Angebote aus der Ansicht zu bekommen. Ein echtes Delete würde der nächste Sync sofort wiederherstellen.
- Cross-Marketplace-Propagation nutzen: Bei Zwillings-SKUs reicht es, auf dem Primärmarktplatz (z.B. DE) zu mappen — FR/IT/ES folgen automatisch.
Technik-Details für Admins & Entwickler
Daten-Quelle: Tabelle amazon_listings (PROJ-166, PROJ-169). Gefüllt wird
sie vom berichtsbasierten Abruf (listings_report_cleanup, PROJ-207): die
SP-API-Berichte GET_MERCHANT_LISTINGS_ALL_DATA und
GET_MERCHANT_CANCELLED_LISTINGS_DATA je Marktplatz. Den früheren
inkrementellen Nachtlauf über die Listings-API (listings_refresh, PROJ-172)
gibt es seit PROJ-207 nicht mehr. Ausgelöst wird der Abruf vom Knopf
Angebote abrufen (On-Demand-Job amazon-listings-sync, PROJ-951) und vom
Zeitplan-Job amazon-listings-report-cleanup; beide nehmen denselben
Advisory-Lock.
Filter-Performance: Trigram-GIN-Indizes (PROJ-45-Pattern, PROJ-170) auf
title, seller_sku und asin sorgen für <200ms-Volltextsuche auch bei
5.000+ Zeilen pro Integration.
Server-Endpoints:
| Endpoint | Zweck |
|---|---|
GET /api/integrations/[id]/amazon/listings | Paginierter List-Fetch mit allen Filtern |
POST /api/integrations/[id]/amazon/listings/bulk-assign | Bulk-Mapping + Cross-MP-Propagation |
POST /api/integrations/[id]/amazon/listings/bulk-unassign | Bulk-Unmapping |
POST /api/integrations/[id]/amazon/listings/bulk-deactivate | Soft-Delete (status=inactive) |
GET /api/integrations/[id]/amazon/listings/export | CSV-Export (50k Hard-Cap) |
Sortierung: Server-seitig, indiziert auf seller_sku, last_synced_at,
status, quantity. Alle anderen Spalten sind nur optisch sortiert.
Selektions-Modell: Der Frontend-State hält ein Set<UUID> — bei “Alle
gefilterten” wird stattdessen der Filter gemerkt und die IDs erst beim Bulk-
Request nachgeladen (max. 10.000 pro Request).
Angebote abrufen
Amazon-Angebote kommen auf genau einem Weg nach Flowkom: dem Abruf aus den Amazon-Berichten. Er läuft auf Knopfdruck und außerdem jeden Sonntag von selbst.
Knopf „Angebote abrufen” Zwei Stellen, derselbe Lauf: in der Kopfzeile dieser Seite (neben Exportieren, Auto-Mapping und Neu laden) und auf der Karte Amazon-Angebote der Integrationsseite.
„Neu laden” ist nicht der Abruf. Es liest nur die Tabelle neu aus der Flowkom-Datenbank. Bei Amazon fragt allein Angebote abrufen nach.
Was der Lauf tut
- Je gewähltem Marktplatz den Bericht über alle Angebote lesen und die Zeilen in Flowkom anlegen oder auffrischen (Titel, ASIN, Status, FBA/FBM, Preis, Bestand).
- Den Bericht über stornierte Angebote lesen und diese Zeilen als gelöscht kennzeichnen — mit Grund und Datum.
- Varianten-Familien nachziehen (Eltern-ASIN und Kinder).
- Neue Zeilen automatisch Flowkom-Artikeln zuordnen (gleiche SKU) und die Zuordnung auf die übrigen Marktplätze übertragen.
- Gelöschte Angebote, die älter als 90 Tage sind, ins Archiv schieben.
Welche Marktplätze gelesen werden
Integrationsseite → Karte Marketplaces → Abschnitt Listings-Sync Marktplätze. Die Auswahl gilt erst, wenn sie gespeichert ist: Amazon.de erscheint dort vorausgewählt, ist ohne Klick auf Speichern aber nicht hinterlegt. Ohne gespeicherte Auswahl bricht der Abruf mit dem Hinweis ab, dass keine Marktplätze gewählt sind.
Jede SKU bekommt je Marktplatz eine eigene Zeile, alle auf denselben Flowkom-Artikel gemappt.
Dauer und Doppelläufe
Der Abruf dauert Minuten, bei vielen Marktplätzen auch eine Viertelstunde und mehr — die Marktplätze werden nacheinander gelesen, und Amazon erstellt jeden Bericht erst auf Anfrage. Die Oberfläche verfolgt den Lauf und meldet am Ende, wie viele Angebote geschrieben wurden.
Es läuft immer nur ein Abruf je Integration. Wer klickt, während der Sonntagslauf (oder ein zweiter Tab) schon arbeitet, hängt sich an diesen Lauf an, statt einen zweiten zu starten. Zeitbudget: 25 Minuten auf Knopfdruck, 45 Minuten im Wochenlauf. Reißt es, sind die bis dahin gelesenen Marktplätze gespeichert — der Rest kommt beim nächsten Lauf.
Der Wochenlauf
| Zeitplan-Job | Zeit | Was er tut |
|---|---|---|
| Amazon: Angebote abrufen (wöchentlich) | Sonntag 04:00 | Derselbe Lauf für alle aktiven Amazon-Integrationen |
Zu finden unter Einstellungen → Hintergrundjobs. Dort lässt er sich auch umlegen oder für alle Integrationen von Hand starten; für eine einzelne Integration ist der Knopf auf der Angebotsseite der kürzere Weg.
Wenn etwas fehlt
- Gar keine Angebote: Wurde der Abruf schon einmal gestartet? Eine frisch verbundene Integration ist leer, bis er das erste Mal gelaufen ist.
- Ein Marktplatz fehlt: Steht er unter Listings-Sync Marktplätze und ist die Auswahl gespeichert?
- Teil-Lauf gemeldet: Mindestens ein Marktplatz ist gescheitert oder das
Zeitbudget riss. Den Grund je Marktplatz nennt das Protokoll auf der
Integrationsseite (Abschnitt Protokoll, Eintrag vom Typ
listings_report_cleanup). - Bestände wirken alt: Der Abruf bringt den Angebots-Stand. FBA-Bestände holt der eigene Lauf Jetzt FBA-Bestand pullen (siehe oben, Abschnitt FBA-Bestand).