Перейти до вмісту

Правила автоматизації

Модуль Правила автоматизації запускає дії (email, SMS, зміна статусу, примітка, тег клієнта, webhook) на основі подій у магазині. Правила ви визначаєте в панелі WooCommerce > Automation Rules через React SPA, а рушій виконує їх у відповідь на trigger.

ЕлементОпис
TriggerПодія WooCommerce, що запускає правило (new_order, order_status_changed, …)
FilterЛогічна умова (order_total > 100, geo_scope in eu, …)
ActionОперація до виконання (send_email, add_order_note, webhook, …)
Match modeall - усі фільтри виконані, any - достатньо одного
PriorityПорядок виконання (менше = раніше)

Правила зберігаються в таблиці wp_polski_pro_automation_rules. Виконання (matched/skipped, dry run, результат дії, помилка) потрапляють до wp_polski_pro_automation_logs.

ЗначенняКоли спрацьовує
new_orderwoocommerce_new_order
order_status_changedwoocommerce_order_status_changed
new_customeruser_register
cart_abandoned(резерв - інтеграція з AbandonedCartService)
product_savedsave_post_product

Поля, доступні у фільтрах (FilterField):

ПолеДжерелоОператори
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 до 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_methodСписок методів з позицій доставкиin, not_in
product_idСписок ID продуктів у замовленніin, not_in
categoryСписок ID product_cat з позицій замовленняin, not_in

Оператор in / not_in приймає список, розділений комами (PL,DE,FR).

Поле geo_scope повертає одне з чотирьох значень для замовлення/користувача:

ЗначенняДіапазон
plПольща (PL)
euКраїни ЄС (27 держав-членів)
eeaЄЕЗ = ЄС + Норвегія, Ісландія, Ліхтенштейн
non_euРешта світу

Приклад використання: правило надсилає інший шаблон маркетингового листа клієнтам з ЄС (з приміткою RODO), ніж тим, хто поза ЄС.

ТипПараметри
send_emailto (опціонально), subject, body, marketing (boolean, що вимагає згоди)
send_smsДелеговано до polski_pro/automation/send_sms (вимагає SmsNotificationService)
change_order_statusstatus, note
add_order_notenote, customer_note (boolean)
add_customer_tagtag (зберігає в user_meta polski_customer_tags)
webhookurl - POST з {subject_type, subject_id}

Дії з params.marketing = true пропускаються, якщо клієнт не має чинної маркетингової згоди в polski_consent_log. Фільтр polski_pro/automation/has_marketing_consent дозволяє замінити стандартну логіку перевірки згоди.

Щоб додати власну дію (наприклад, інтеграцію з FreshMail/GetResponse), використайте фільтр:

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

Усі endpoint вимагають manage_woocommerce + заголовка X-WP-Nonce.

МетодШляхОпис
GET/polski-pro/v1/automation/rulesСписок правил
POST/polski-pro/v1/automation/rulesСтворення правила
GET/polski-pro/v1/automation/rules/{id}Отримання одного правила
PUT/polski-pro/v1/automation/rules/{id}Оновлення правила
DELETE/polski-pro/v1/automation/rules/{id}Видалення + очищення журналів
POST/polski-pro/v1/automation/rules/{id}/dry-runСимуляція на замовленні/користувачі (order_id або user_id)
GET/polski-pro/v1/automation/logs?limit=200Журнал аудиту (max 500)
GET/polski-pro/v1/automation/schemaСхема тригерів/фільтрів/дій

У редакторі правила вкажіть Order ID і натисніть Run dry run. Рушій:

  1. Оцінює фільтри щодо вказаного замовлення.
  2. Перевіряє маркетингову згоду.
  3. Виконує дії в режимі dry-run (не модифікує стан) і повертає запланований результат.
  4. Записує запис у журнал аудиту з прапором dry_run = 1.

Ліміти та продуктивність

Section titled “Ліміти та продуктивність”
  • Індекси на enabled, trigger_type, priority, group_label - рушій отримує лише правила, що відповідають тригеру.
  • recent($limit) в AutomationLogRepository обмежено до 500 записів на запит.
  • Webhook мають тайм-аут 10 с.