Skip to Content
EinstellungenCron-Jobs

Cron-Jobs

Cron-Jobs sind automatische Hintergrund-Aufgaben, die in regelmĂ€ĂŸigen AbstĂ€nden ausgefĂŒhrt werden. Sie sorgen dafĂŒr, dass Bestellungen importiert, BestĂ€nde synchronisiert und alte Daten bereinigt werden — ohne dass jemand manuell etwas auslösen muss.

Voraussetzungen

Bevor du Cron-Jobs einrichten kannst, brauchst du:

  1. Ein laufendes WMS — erreichbar ĂŒber eine öffentliche URL (z.B. https://wms.deinefirma.de)
  2. Ein CRON_SECRET — ein zufĂ€lliger SchlĂŒssel, der sicherstellt, dass nur autorisierte Anfragen die Jobs auslösen können

CRON_SECRET generieren

Falls noch kein CRON_SECRET gesetzt ist, generiere einen mit diesem Befehl:

openssl rand -hex 32

Trage das Ergebnis als Umgebungsvariable (CRON_SECRET) in deinem Hosting ein (z.B. in Coolify unter dem Service → Environment Variables).

Einrichtung im WMS

Schritt 1: WMS-URL eintragen

  1. Öffne Einstellungen → Cron-Jobs im WMS
  2. Trage im Feld WMS-URL die öffentliche Adresse deines WMS ein (z.B. https://wms.deinefirma.de)
  3. Klicke auf Speichern

Wichtig: Die URL muss ohne abschließenden Slash (/) eingegeben werden.

Schritt 2: CRON_SECRET prĂŒfen

Auf der gleichen Seite wird dir der aktuelle CRON_SECRET angezeigt. Du kannst ihn ein-/ausblenden und kopieren. Dieser SchlĂŒssel wird fĂŒr die Einrichtung des externen Cron-Dienstes benötigt.

Falls kein CRON_SECRET angezeigt wird, ist die Umgebungsvariable noch nicht gesetzt — siehe oben unter “CRON_SECRET generieren”.

Cron-Dienst einrichten

Das WMS fĂŒhrt die Jobs nicht selbst zeitgesteuert aus — es stellt API-Endpunkte bereit, die von einem externen Cron-Dienst in regelmĂ€ĂŸigen AbstĂ€nden aufgerufen werden. DafĂŒr gibt es mehrere Möglichkeiten:

Option A: Webhosting-Verwaltung (z.B. all-inkl KAS)

Die einfachste Methode, wenn du ein Webhosting-Paket mit Cron-Funktion hast.

  1. Logge dich in dein Hosting-Panel ein (z.B. all-inkl KAS → Tools → Cron-Jobs)
  2. Lege fĂŒr jeden Job einen neuen Cron-Eintrag an
  3. Verwende als Befehl jeweils:
curl -s -H "x-cron-secret: DEIN_SECRET" https://wms.deinefirma.de/api/cron/order-import > /dev/null
  1. Stelle den Zeitplan gemĂ€ĂŸ der Tabelle unten ein

Option B: Linux/Mac Crontab

Falls du Zugriff auf einen Linux-Server oder Mac hast:

  1. Öffne das Terminal und bearbeite die Crontab:
crontab -e
  1. FĂŒge fĂŒr jeden Job eine Zeile hinzu, z.B.:
*/5 * * * * curl -s -H "x-cron-secret: DEIN_SECRET" https://wms.deinefirma.de/api/cron/order-import > /dev/null 2>&1 * * * * * curl -s -H "x-cron-secret: DEIN_SECRET" https://wms.deinefirma.de/api/cron/inventory-sync > /dev/null 2>&1
  1. Speichere und schließe den Editor

Option C: Uptime Kuma (Self-hosted Monitoring)

Wenn du bereits Uptime Kuma  einsetzt, kannst du es auch als Cron-Dienst nutzen:

  1. Lege pro Cron-Job einen neuen HTTP(s) Monitor an
  2. Trage die vollstÀndige URL ein (z.B. https://wms.deinefirma.de/api/cron/order-import)
  3. Stelle das Intervall auf den gewĂŒnschten Wert (z.B. 300 Sekunden fĂŒr alle 5 Minuten)
  4. FĂŒge unter Headers hinzu:
x-cron-secret: DEIN_SECRET
  1. Setze den Monitor auf aktiv

Alle Cron-Jobs im Überblick

Pflicht-Jobs (immer einrichten)

JobEndpunktIntervallCron-Ausdruck
Bestellimport/api/cron/order-importAlle 5 Minuten*/5 * * * *
Bestandsabgleich/api/cron/inventory-syncJede Minute* * * * *

Bestellimport — Importiert automatisch neue Bestellungen aus allen aktiven Shopify-Integrationen mit automatischem Import. PrĂŒft jede Integration einzeln und ĂŒberspringt bereits importierte Bestellungen.

Bestandsabgleich — Synchronisiert WMS-BestĂ€nde zurĂŒck zu Shopify. Sendet nur Änderungen (Dirty-Queue), nicht den kompletten Bestand. Das Intervall pro Integration ist separat konfigurierbar (1–60 Minuten).

Amazon-Jobs (nur bei aktiver Amazon-Integration)

Diese Jobs erscheinen automatisch auf der Cron-Jobs-Seite, sobald du eine Amazon-Integration aktiviert hast.

JobEndpunktIntervallCron-Ausdruck
FBM Auftragsimport/api/cron/amazon-fbm-importAlle 15 Min*/15 * * * *
FBA Auftragsimport/api/cron/amazon-fba-importAlle 30 Min*/30 * * * *
FBM Inventory Flush/api/cron/amazon-inventory-flushJede Minute* * * * *
FBM Inventory Safety Sync/api/cron/amazon-inventory-safety-syncAlle 24 Std0 3 * * *
FBA Inventory Pull/api/cron/amazon-fba-inventory-pullAlle 60 Min0 * * * *
VersandbestÀtigung/api/cron/amazon-shipment-confirmationAlle 5 Min*/5 * * * *
Bestellstatus-Sync/api/cron/amazon-order-status-syncAlle 60 Min0 * * * *
Financial Events Pull/api/cron/amazon-finance-events-pullAlle 30 Min*/30 * * * *
Push-Jobs Status/api/cron/amazon-push-jobs-statusAlle 5 Min*/5 * * * *
Listings Report Cleanup/api/cron/amazon-listings-report-cleanupSonntags 04:000 4 * * 0

FBA-Jobs (Auftragsimport + Inventory Pull) werden nur benötigt, wenn du FBA in deiner Amazon-Integration aktiviert hast.

Workflow-Job (nur bei zeitgesteuerten Workflows)

JobEndpunktIntervallCron-Ausdruck
Workflow-AusfĂŒhrung/api/cron/execute-workflowsAlle 15 Min*/15 * * * *

PrĂŒft alle aktiven Workflows mit dem Trigger-Typ “Zeitgesteuert” und fĂŒhrt fĂ€llige Workflows aus. Nur nötig, wenn du mindestens einen zeitgesteuerten Workflow eingerichtet hast (siehe Workflows).

AufrÀum-Jobs (empfohlen)

JobEndpunktIntervallCron-Ausdruck
TĂ€glicher Cleanup/api/cron/cleanup-dailyTĂ€glich 02:00 UTC0 2 * * *
Wöchentlicher Cleanup/api/cron/cleanup-sync-logsSonntags 03:00 UTC0 3 * * 0

TĂ€glicher Cleanup — Löscht alte DruckauftrĂ€ge (Ă€lter als 60 Tage) und die zugehörigen Label-PDFs aus dem Storage. Setzt außerdem hĂ€ngende DruckauftrĂ€ge zurĂŒck.

Wöchentlicher Cleanup — Löscht alte Sync-Logs (Ă€lter als 90 Tage) und Workflow-AusfĂŒhrungsprotokolle. Bestellungen, Kunden und Produkte werden nie gelöscht.

Jobs manuell auslösen

Auf der Einstellungen → Cron-Jobs Seite im WMS kannst du jeden Job ĂŒber den Play-Button manuell auslösen. Das ist nĂŒtzlich um:

  • Nach der Ersteinrichtung zu prĂŒfen, ob alles funktioniert
  • Einen sofortigen Import/Sync anzustoßen, ohne auf den nĂ€chsten Intervall zu warten
  • Probleme zu diagnostizieren (das Ergebnis wird direkt angezeigt)

Nach dem Auslösen siehst du fĂŒr jeden Job, ob er erfolgreich war und wie viele DatensĂ€tze verarbeitet wurden.

Cron-AusdrĂŒcke erklĂ€rt

Falls du die Cron-AusdrĂŒcke anpassen möchtest, hier die Syntax:

┌───────── Minute (0-59) │ ┌─────── Stunde (0-23) │ │ ┌───── Tag im Monat (1-31) │ │ │ ┌─── Monat (1-12) │ │ │ │ ┌─ Wochentag (0-7, 0 und 7 = Sonntag) │ │ │ │ │ * * * * *

Beispiele:

AusdruckBedeutung
* * * * *Jede Minute
*/5 * * * *Alle 5 Minuten
*/15 * * * *Alle 15 Minuten
*/30 * * * *Alle 30 Minuten
0 * * * *Jede volle Stunde
0 0,6,12,18 * * *Um 00:00, 06:00, 12:00, 18:00 Uhr
0 2 * * *TĂ€glich um 02:00 Uhr
0 3 * * 0Sonntags um 03:00 Uhr

Komplettbeispiel: Alle Pflicht-Jobs einrichten

Hier ein vollstÀndiges Crontab-Beispiel mit den beiden Pflicht-Jobs und den empfohlenen Cleanup-Jobs:

# WMS Cron-Jobs # Bestellimport (alle 5 Minuten) */5 * * * * curl -s -H "x-cron-secret: abc123def456" https://wms.deinefirma.de/api/cron/order-import > /dev/null 2>&1 # Bestandsabgleich (jede Minute) * * * * * curl -s -H "x-cron-secret: abc123def456" https://wms.deinefirma.de/api/cron/inventory-sync > /dev/null 2>&1 # TÀglicher Cleanup (02:00 UTC) 0 2 * * * curl -s -H "x-cron-secret: abc123def456" https://wms.deinefirma.de/api/cron/cleanup-daily > /dev/null 2>&1 # Wöchentlicher Cleanup (Sonntag 03:00 UTC) 0 3 * * 0 curl -s -H "x-cron-secret: abc123def456" https://wms.deinefirma.de/api/cron/cleanup-sync-logs > /dev/null 2>&1

Ersetze abc123def456 durch deinen echten CRON_SECRET und wms.deinefirma.de durch deine WMS-Domain.

Bestandssynchronisierung: Architektur

Flowkom synchronisiert BestÀnde automatisch an alle verbundenen Plattformen (Shopify, Amazon). Dabei gibt es zwei Mechanismen, die zusammenarbeiten:

Dirty-Queue (Event-basiert, sofort)

Bei jeder BestandsÀnderung werden die betroffenen Produkte in eine Warteschlange geschrieben. Der Flush-Cron (jede Minute) verarbeitet die Queue und pusht die aktualisierte Menge an die jeweilige Plattform.

Auslöser, die automatisch in die Dirty-Queue schreiben:

AktionAmazon QueueShopify Queue
WareneingangJaJa
VersandJaJa
BestandskorrekturJaJa
UmlagerungJaJa
Pickliste löschenJaJa
CSV-BestandsimportJaJa
Bundle-Komponenten ÀndernJaJa
Shopify-Bestellung importiertJaJa
Amazon-Bestellung importiertJaJa
Manueller Auftrag angelegtJaJa
Ersatzlieferung angelegtJaJa

Wichtig: Beim Auftragsimport wird noch kein physischer Bestand abgebucht — aber die Reservierung (offene AuftrĂ€ge) wird bei der Berechnung der verfĂŒgbaren Menge berĂŒcksichtigt. So sehen alle Plattformen sofort den reduzierten verfĂŒgbaren Bestand.

Safety-Sync (Vollabgleich, periodisch)

Als Sicherheitsnetz lĂ€uft ein periodischer Vollabgleich, der alle Produkte mit der Plattform synchronisiert — unabhĂ€ngig davon, ob sie in der Dirty-Queue waren. Das fĂ€ngt verlorene Events auf.

PlattformJobEmpfohlenes Intervall
Amazon FBMInventory Safety SyncAlle 24 Stunden
ShopifyInventory Safety SyncAlle 6 Stunden

Da die Dirty-Queue lĂŒckenlos alle Änderungen erfasst, reicht ein tĂ€glicher Safety-Sync als Absicherung.

Berechnung der verfĂŒgbaren Menge

Die an Amazon/Shopify gepushte Menge ist nicht der physische Lagerbestand, sondern:

VerfĂŒgbar = Physischer Bestand (alle non-FBA Lager) − Reservierungen (offene/in Bearbeitung/gepickte AuftrĂ€ge)

Bei Bundle-Artikeln wird zusĂ€tzlich das Minimum der KomponentenverfĂŒgbarkeit berechnet.

HĂ€ufige Fragen

Muss ich alle Jobs einrichten?

Nein. Nur Bestellimport und Bestandsabgleich sind Pflicht. Die Amazon-Jobs brauchst du nur, wenn du Amazon als Marktplatz nutzt. Die Cleanup-Jobs sind empfohlen, aber nicht zwingend — ohne sie wachsen die Datenbank und der Storage ĂŒber die Zeit an.

Was passiert, wenn ein Cron-Job fehlschlÀgt?

Der Job wird beim nÀchsten Intervall automatisch erneut versucht. Fehlgeschlagene Jobs blockieren keine anderen Jobs. Auf der Cron-Jobs-Seite siehst du den letzten Status pro Job.

Kann ich die Intervalle Àndern?

Ja, du kannst die Cron-AusdrĂŒcke in deinem Cron-Dienst anpassen. Die empfohlenen Intervalle sind auf die API-Rate-Limits der jeweiligen Dienste (Shopify, Amazon) abgestimmt — kĂŒrzere Intervalle können zu Throttling fĂŒhren.

Brauche ich pg_cron oder Supabase Cron?

Nein. Das WMS nutzt externe HTTP-Aufrufe statt datenbankbasierter Cron-Jobs. Das macht die Einrichtung flexibler und unabhÀngig von der Datenbank.

Ich nutze Coolify — gibt es eine integrierte Cron-Funktion?

Coolify selbst bietet keine Cron-Funktion. Du brauchst einen externen Dienst (Webhosting-Panel, Crontab auf einem Server, oder Uptime Kuma). Wenn dein WMS auf Coolify lĂ€uft, ist Uptime Kuma eine gute ErgĂ€nzung, da es sich ebenfalls ĂŒber Coolify deployen lĂ€sst.