Przejdź do głównej zawartości

Reguły automatyzacji

Moduł Reguły automatyzacji uruchamia akcje (email, SMS, zmiana statusu, notatka, tag klienta, webhook) na podstawie zdarzeń w sklepie. Reguły definiujesz w panelu WooCommerce > Automation Rules poprzez React SPA, a silnik wykonuje je w odpowiedzi na trigger.

ElementOpis
TriggerZdarzenie WooCommerce uruchamiające regułę (new_order, order_status_changed, …)
FilterWarunek logiczny (order_total > 100, geo_scope in eu, …)
ActionOperacja do wykonania (send_email, add_order_note, webhook, …)
Match modeall - wszystkie filtry spełnione, any - wystarczy jeden
PriorityKolejność wykonywania (mniejsze = wcześniej)

Reguły są zapisywane w tabeli wp_polski_pro_automation_rules. Wykonania (matched/skipped, dry run, wynik akcji, błąd) trafiają do wp_polski_pro_automation_logs.

WartośćKiedy wystrzeliwane
new_orderwoocommerce_new_order
order_status_changedwoocommerce_order_status_changed
new_customeruser_register
cart_abandoned(rezerwa - integracja z AbandonedCartService)
product_savedsave_post_product

Pola dostępne w filtrach (FilterField):

PoleŹródłoOperatory
order_totalWC_Order::get_total()equals, gt, lt, not_equals
order_statusWC_Order::get_status()equals, in, not_in
item_countWC_Order::get_item_count()gt, lt, equals
billing_countryISO 3166-1 alpha-2equals, in, not_in
shipping_countryISO 3166-1 alpha-2 (fallback do billing)equals, in, not_in
geo_scopepl, eu, eea, non_euequals
customer_emailWC_Order::get_billing_email()equals, contains
payment_methodWC_Order::get_payment_method()equals, in
shipping_methodLista metod z pozycji wysyłkiin, not_in
product_idLista ID produktów w zamówieniuin, not_in
categoryLista ID product_cat z pozycji zamówieniain, not_in

Operator in / not_in przyjmuje listę rozdzieloną przecinkami (PL,DE,FR).

Pole geo_scope zwraca jedną z czterech wartości dla zamówienia/użytkownika:

WartośćZakres
plPolska (PL)
euKraje UE (27 państw członkowskich)
eeaEOG = UE + Norwegia, Islandia, Liechtenstein
non_euReszta świata

Przykład użycia: reguła wysyła inny szablon emaila marketingowego klientom z UE (z notką RODO) niż spoza UE.

TypParametry
send_emailto (opcjonalne), subject, body, marketing (boolean wymuszające zgodę)
send_smsDelegowane do polski_pro/automation/send_sms (wymaga SmsNotificationService)
change_order_statusstatus, note
add_order_notenote, customer_note (boolean)
add_customer_tagtag (zapisuje do user_meta polski_customer_tags)
webhookurl - POST z {subject_type, subject_id}

Akcje z params.marketing = true są pomijane, jeśli klient nie ma ważnej zgody marketingowej w polski_consent_log. Filtr polski_pro/automation/has_marketing_consent pozwala zastąpić domyślną logikę sprawdzania zgody.

Aby dodać niestandardową akcję (np. integrację z FreshMail/GetResponse), użyj filtru:

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'];
}
// ... wywołanie API FreshMail ...
return ['provider' => 'freshmail', 'sent' => true];
}
return $override;
}, 10, 4);

Wszystkie endpointy wymagają manage_woocommerce + nagłówka X-WP-Nonce.

MetodaŚcieżkaOpis
GET/polski-pro/v1/automation/rulesLista reguł
POST/polski-pro/v1/automation/rulesUtworzenie reguły
GET/polski-pro/v1/automation/rules/{id}Pobranie pojedynczej reguły
PUT/polski-pro/v1/automation/rules/{id}Aktualizacja reguły
DELETE/polski-pro/v1/automation/rules/{id}Usunięcie + czyszczenie logów
POST/polski-pro/v1/automation/rules/{id}/dry-runSymulacja na zamówieniu/użytkowniku (order_id lub user_id)
GET/polski-pro/v1/automation/logs?limit=200Dziennik audytu (max 500)
GET/polski-pro/v1/automation/schemaSchemat triggerów/filtrów/akcji

W edytorze reguły podaj Order ID i kliknij Run dry run. Silnik:

  1. Ewaluuje filtry względem podanego zamówienia.
  2. Sprawdza zgodę marketingową.
  3. Wykonuje akcje w trybie dry-run (nie modyfikuje stanu) i zwraca planowany rezultat.
  4. Zapisuje wpis w dzienniku audytu z flagą dry_run = 1.
  • Indeksy na enabled, trigger_type, priority, group_label - silnik pobiera tylko reguły pasujące do triggera.
  • recent($limit) w AutomationLogRepository jest ograniczone do 500 rekordów na zapytanie.
  • Webhooki mają timeout 10s.