Automation Rules
Das Modul Automation Rules führt Aktionen (E-Mail, SMS, Statusänderung, Notiz, Kunden-Tag, Webhook) auf Basis von Ereignissen im Shop aus. Sie definieren Regeln im Panel WooCommerce > Automation Rules über eine React-SPA, und die Engine führt sie als Reaktion auf einen Trigger aus.
Architektur
Section titled “Architektur”| Element | Beschreibung |
|---|---|
| Trigger | Ein WooCommerce-Ereignis, das die Regel ausführt (new_order, order_status_changed, …) |
| Filter | Eine logische Bedingung (order_total > 100, geo_scope in eu, …) |
| Action | Eine auszuführende Operation (send_email, add_order_note, webhook, …) |
| Match mode | all - alle Filter erfüllt, any - einer genügt |
| Priority | Ausführungsreihenfolge (niedriger = früher) |
Regeln werden in der Tabelle wp_polski_pro_automation_rules gespeichert. Ausführungen (matched/skipped, Probelauf, Aktionsergebnis, Fehler) gelangen in wp_polski_pro_automation_logs.
Trigger
Section titled “Trigger”| Wert | Wann ausgelöst |
|---|---|
new_order | woocommerce_new_order |
order_status_changed | woocommerce_order_status_changed |
new_customer | user_register |
cart_abandoned | (reserviert - Integration mit AbandonedCartService) |
product_saved | save_post_product |
Filter
Section titled “Filter”Verfügbare Felder in Filtern (FilterField):
| Feld | Quelle | Operatoren |
|---|---|---|
order_total | WC_Order::get_total() | equals, gt, lt, not_equals |
order_status | WC_Order::get_status() | equals, in, not_in |
item_count | WC_Order::get_item_count() | gt, lt, equals |
billing_country | ISO 3166-1 alpha-2 | equals, in, not_in |
shipping_country | ISO 3166-1 alpha-2 (Fallback auf billing) | equals, in, not_in |
geo_scope | pl, eu, eea, non_eu | equals |
customer_email | WC_Order::get_billing_email() | equals, contains |
payment_method | WC_Order::get_payment_method() | equals, in |
shipping_method | Liste der Methoden aus der Versandposition | in, not_in |
product_id | Liste der Produkt-IDs in der Bestellung | in, not_in |
category | Liste der product_cat-IDs aus den Bestellpositionen | in, not_in |
Der Operator in / not_in akzeptiert eine durch Kommas getrennte Liste (PL,DE,FR).
Geografische Filter
Section titled “Geografische Filter”Das Feld geo_scope gibt für eine Bestellung/einen Benutzer einen von vier Werten zurück:
| Wert | Bereich |
|---|---|
pl | Polen (PL) |
eu | EU-Länder (27 Mitgliedstaaten) |
eea | EWR = EU + Norwegen, Island, Liechtenstein |
non_eu | Der Rest der Welt |
Anwendungsbeispiel: Eine Regel sendet Kunden aus der EU eine andere Marketing-E-Mail-Vorlage (mit DSGVO-Hinweis) als jenen außerhalb der EU.
Aktionen
Section titled “Aktionen”| Typ | Parameter |
|---|---|
send_email | to (optional), subject, body, marketing (Boolean, der Einwilligung erzwingt) |
send_sms | Delegiert an polski_pro/automation/send_sms (erfordert SmsNotificationService) |
change_order_status | status, note |
add_order_note | note, customer_note (Boolean) |
add_customer_tag | tag (speichert in das user_meta polski_customer_tags) |
webhook | url - ein POST mit {subject_type, subject_id} |
Marketing-Einwilligung
Section titled “Marketing-Einwilligung”Aktionen mit params.marketing = true werden übersprungen, wenn der Kunde keine gültige Marketing-Einwilligung in polski_consent_log hat. Der Filter polski_pro/automation/has_marketing_consent erlaubt es, die standardmäßige Logik zur Einwilligungsprüfung zu ersetzen.
Aktionen erweitern
Section titled “Aktionen erweitern”Um eine benutzerdefinierte Aktion hinzuzufügen (z. B. Integration mit FreshMail/GetResponse), verwenden Sie den Filter:
add_filter('polski_pro/automation/action', function ($override, $action, $subject, $dryRun) { if ($action->type->value === 'send_email' && ($action->params['provider'] ?? '') === 'freshmail') { if ($dryRun) { return ['dry_run' => true, 'provider' => 'freshmail']; } // ... FreshMail-API-Aufruf ... return ['provider' => 'freshmail', 'sent' => true]; }
return $override;}, 10, 4);REST-API
Section titled “REST-API”Alle Endpunkte erfordern manage_woocommerce + den Header X-WP-Nonce.
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /polski-pro/v1/automation/rules | Liste der Regeln |
| POST | /polski-pro/v1/automation/rules | Regel erstellen |
| GET | /polski-pro/v1/automation/rules/{id} | Einzelne Regel abrufen |
| PUT | /polski-pro/v1/automation/rules/{id} | Regel aktualisieren |
| DELETE | /polski-pro/v1/automation/rules/{id} | Löschen + Protokolle bereinigen |
| POST | /polski-pro/v1/automation/rules/{id}/dry-run | Auf einer Bestellung/einem Benutzer simulieren (order_id oder user_id) |
| GET | /polski-pro/v1/automation/logs?limit=200 | Audit-Protokoll (max. 500) |
| GET | /polski-pro/v1/automation/schema | Schema von Triggern/Filtern/Aktionen |
Probelauf
Section titled “Probelauf”Geben Sie im Regeleditor eine Order ID an und klicken Sie auf Run dry run. Die Engine:
- Wertet die Filter gegen die angegebene Bestellung aus.
- Prüft die Marketing-Einwilligung.
- Führt die Aktionen im Probelauf-Modus aus (verändert den Zustand nicht) und gibt das geplante Ergebnis zurück.
- Schreibt einen Eintrag in das Audit-Protokoll mit dem Flag
dry_run = 1.
Grenzen und Leistung
Section titled “Grenzen und Leistung”- Indizes auf
enabled,trigger_type,priority,group_label- die Engine ruft nur Regeln ab, die zum Trigger passen. recent($limit)inAutomationLogRepositoryist auf 500 Datensätze pro Abfrage begrenzt.- Webhooks haben ein Timeout von 10s.