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:
- Ein laufendes WMS â erreichbar ĂŒber eine öffentliche URL (z.B.
https://wms.deinefirma.de) - 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 32Trage 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
- Ăffne Einstellungen â Cron-Jobs im WMS
- Trage im Feld WMS-URL die öffentliche Adresse deines WMS ein (z.B.
https://wms.deinefirma.de) - 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.
- Logge dich in dein Hosting-Panel ein (z.B. all-inkl KAS â Tools â Cron-Jobs)
- Lege fĂŒr jeden Job einen neuen Cron-Eintrag an
- Verwende als Befehl jeweils:
curl -s -H "x-cron-secret: DEIN_SECRET" https://wms.deinefirma.de/api/cron/order-import > /dev/null- Stelle den Zeitplan gemÀà der Tabelle unten ein
Option B: Linux/Mac Crontab
Falls du Zugriff auf einen Linux-Server oder Mac hast:
- Ăffne das Terminal und bearbeite die Crontab:
crontab -e- 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- 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:
- Lege pro Cron-Job einen neuen HTTP(s) Monitor an
- Trage die vollstÀndige URL ein (z.B.
https://wms.deinefirma.de/api/cron/order-import) - Stelle das Intervall auf den gewĂŒnschten Wert (z.B. 300 Sekunden fĂŒr alle 5 Minuten)
- FĂŒge unter Headers hinzu:
x-cron-secret: DEIN_SECRET- Setze den Monitor auf aktiv
Alle Cron-Jobs im Ăberblick
Pflicht-Jobs (immer einrichten)
| Job | Endpunkt | Intervall | Cron-Ausdruck |
|---|---|---|---|
| Bestellimport | /api/cron/order-import | Alle 5 Minuten | */5 * * * * |
| Bestandsabgleich | /api/cron/inventory-sync | Jede 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.
| Job | Endpunkt | Intervall | Cron-Ausdruck |
|---|---|---|---|
| FBM Auftragsimport | /api/cron/amazon-fbm-import | Alle 15 Min | */15 * * * * |
| FBA Auftragsimport | /api/cron/amazon-fba-import | Alle 30 Min | */30 * * * * |
| FBM Inventory Flush | /api/cron/amazon-inventory-flush | Jede Minute | * * * * * |
| FBM Inventory Safety Sync | /api/cron/amazon-inventory-safety-sync | Alle 24 Std | 0 3 * * * |
| FBA Inventory Pull | /api/cron/amazon-fba-inventory-pull | Alle 60 Min | 0 * * * * |
| VersandbestÀtigung | /api/cron/amazon-shipment-confirmation | Alle 5 Min | */5 * * * * |
| Bestellstatus-Sync | /api/cron/amazon-order-status-sync | Alle 60 Min | 0 * * * * |
| Financial Events Pull | /api/cron/amazon-finance-events-pull | Alle 30 Min | */30 * * * * |
| Push-Jobs Status | /api/cron/amazon-push-jobs-status | Alle 5 Min | */5 * * * * |
| Listings Report Cleanup | /api/cron/amazon-listings-report-cleanup | Sonntags 04:00 | 0 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)
| Job | Endpunkt | Intervall | Cron-Ausdruck |
|---|---|---|---|
| Workflow-AusfĂŒhrung | /api/cron/execute-workflows | Alle 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)
| Job | Endpunkt | Intervall | Cron-Ausdruck |
|---|---|---|---|
| TĂ€glicher Cleanup | /api/cron/cleanup-daily | TĂ€glich 02:00 UTC | 0 2 * * * |
| Wöchentlicher Cleanup | /api/cron/cleanup-sync-logs | Sonntags 03:00 UTC | 0 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:
| Ausdruck | Bedeutung |
|---|---|
* * * * * | 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 * * 0 | Sonntags 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>&1Ersetze
abc123def456durch deinen echten CRON_SECRET undwms.deinefirma.dedurch 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:
| Aktion | Amazon Queue | Shopify Queue |
|---|---|---|
| Wareneingang | Ja | Ja |
| Versand | Ja | Ja |
| Bestandskorrektur | Ja | Ja |
| Umlagerung | Ja | Ja |
| Pickliste löschen | Ja | Ja |
| CSV-Bestandsimport | Ja | Ja |
| Bundle-Komponenten Àndern | Ja | Ja |
| Shopify-Bestellung importiert | Ja | Ja |
| Amazon-Bestellung importiert | Ja | Ja |
| Manueller Auftrag angelegt | Ja | Ja |
| Ersatzlieferung angelegt | Ja | Ja |
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.
| Plattform | Job | Empfohlenes Intervall |
|---|---|---|
| Amazon FBM | Inventory Safety Sync | Alle 24 Stunden |
| Shopify | Inventory Safety Sync | Alle 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.