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
Abschnitt betitelt „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
Abschnitt betitelt „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 |
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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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.