Ir al contenido

Automation Rules

El módulo Automation Rules ejecuta acciones (correo, SMS, cambio de estado, nota, etiqueta de cliente, webhook) según eventos de la tienda. Las reglas se definen en el panel WooCommerce > Automation Rules mediante una SPA de React, y el motor las ejecuta en respuesta a un trigger.

Elemento Descripción
Trigger Un evento de WooCommerce que ejecuta la regla (new_order, order_status_changed, …)
Filter Una condición lógica (order_total > 100, geo_scope in eu, …)
Action Una operación a realizar (send_email, add_order_note, webhook, …)
Match mode all - todos los filtros cumplidos, any - basta con uno
Priority Orden de ejecución (menor = antes)

Las reglas se almacenan en la tabla wp_polski_pro_automation_rules. Las ejecuciones (matched/skipped, ejecución en seco, resultado de la acción, error) van a wp_polski_pro_automation_logs.

Valor Cuándo se dispara
new_order woocommerce_new_order
order_status_changed woocommerce_order_status_changed
new_customer user_register
cart_abandoned (reservado - integración con AbandonedCartService)
product_saved save_post_product

Campos disponibles en los filtros (FilterField):

Campo Origen Operadores
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 (con reserva a 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 Lista de métodos de la línea de envío in, not_in
product_id Lista de IDs de productos del pedido in, not_in
category Lista de IDs product_cat de las líneas del pedido in, not_in

El operador in / not_in acepta una lista separada por comas (PL,DE,FR).

El campo geo_scope devuelve uno de cuatro valores para un pedido/usuario:

Valor Alcance
pl Polonia (PL)
eu Países de la UE (27 estados miembros)
eea EEE = UE + Noruega, Islandia, Liechtenstein
non_eu El resto del mundo

Ejemplo de uso: una regla envía una plantilla de correo de marketing distinta a los clientes de la UE (con una nota RGPD) que a los de fuera de la UE.

Tipo Parámetros
send_email to (opcional), subject, body, marketing (booleano que exige consentimiento)
send_sms Delegado a polski_pro/automation/send_sms (requiere SmsNotificationService)
change_order_status status, note
add_order_note note, customer_note (booleano)
add_customer_tag tag (guarda en el user_meta polski_customer_tags)
webhook url - un POST con {subject_type, subject_id}

Las acciones con params.marketing = true se omiten si el cliente no tiene un consentimiento de marketing válido en polski_consent_log. El filtro polski_pro/automation/has_marketing_consent permite reemplazar la lógica predeterminada de comprobación del consentimiento.

Para añadir una acción personalizada (p. ej. integración con FreshMail/GetResponse), use el filtro:

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

Todos los endpoints requieren manage_woocommerce + la cabecera X-WP-Nonce.

Método Ruta Descripción
GET /polski-pro/v1/automation/rules Lista de reglas
POST /polski-pro/v1/automation/rules Crear una regla
GET /polski-pro/v1/automation/rules/{id} Obtener una sola regla
PUT /polski-pro/v1/automation/rules/{id} Actualizar una regla
DELETE /polski-pro/v1/automation/rules/{id} Eliminar + limpiar registros
POST /polski-pro/v1/automation/rules/{id}/dry-run Simular sobre un pedido/usuario (order_id o user_id)
GET /polski-pro/v1/automation/logs?limit=200 Registro de auditoría (máx. 500)
GET /polski-pro/v1/automation/schema Esquema de triggers/filtros/acciones

En el editor de reglas, indique un Order ID y haga clic en Run dry run. El motor:

  1. Evalúa los filtros contra el pedido indicado.
  2. Comprueba el consentimiento de marketing.
  3. Ejecuta las acciones en modo de ejecución en seco (no modifica el estado) y devuelve el resultado previsto.
  4. Escribe una entrada en el registro de auditoría con la marca dry_run = 1.
  • Índices en enabled, trigger_type, priority, group_label - el motor obtiene solo las reglas que coinciden con el trigger.
  • recent($limit) en AutomationLogRepository está limitado a 500 registros por consulta.
  • Los webhooks tienen un timeout de 10s.