Skip to content

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.

ElementoDescripción
TriggerUn evento de WooCommerce que ejecuta la regla (new_order, order_status_changed, …)
FilterUna condición lógica (order_total > 100, geo_scope in eu, …)
ActionUna operación a realizar (send_email, add_order_note, webhook, …)
Match modeall - todos los filtros cumplidos, any - basta con uno
PriorityOrden 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.

ValorCuándo se dispara
new_orderwoocommerce_new_order
order_status_changedwoocommerce_order_status_changed
new_customeruser_register
cart_abandoned(reservado - integración con AbandonedCartService)
product_savedsave_post_product

Campos disponibles en los filtros (FilterField):

CampoOrigenOperadores
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 (con reserva a 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 de métodos de la línea de envíoin, not_in
product_idLista de IDs de productos del pedidoin, not_in
categoryLista de IDs product_cat de las líneas del pedidoin, 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:

ValorAlcance
plPolonia (PL)
euPaíses de la UE (27 estados miembros)
eeaEEE = UE + Noruega, Islandia, Liechtenstein
non_euEl 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.

TipoParámetros
send_emailto (opcional), subject, body, marketing (booleano que exige consentimiento)
send_smsDelegado a polski_pro/automation/send_sms (requiere SmsNotificationService)
change_order_statusstatus, note
add_order_notenote, customer_note (booleano)
add_customer_tagtag (guarda en el user_meta polski_customer_tags)
webhookurl - 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étodoRutaDescripción
GET/polski-pro/v1/automation/rulesLista de reglas
POST/polski-pro/v1/automation/rulesCrear 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-runSimular sobre un pedido/usuario (order_id o user_id)
GET/polski-pro/v1/automation/logs?limit=200Registro de auditoría (máx. 500)
GET/polski-pro/v1/automation/schemaEsquema 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.