Guía de integración con WooCommerce
Esta guía conecta una tienda de WooCommerce con Tajo. La integración tiene dos mitades que trabajan juntas:
- El plugin Tajo for WooCommerce captura eventos de interacción en tiempo real (pedidos, carritos, reembolsos, reseñas, envíos de formularios) dentro de WordPress y los entrega a Tajo a través de un outbox duradero y firmado.
- La conexión REST de WooCommerce permite que Tajo lea los clientes, pedidos, productos, cupones, reembolsos y reseñas de tu tienda para la importación histórica y la sincronización continua. Consulta la referencia del conector de WooCommerce para la configuración solo con REST.
La automatización de marketing en sí (email, SMS, WhatsApp mediante Brevo y otros proveedores) se configura en Tajo, no en el plugin. El trabajo del plugin es sacar de WordPress eventos fiables.
Requisitos previos
- WordPress 6.3+ con acceso de administrador
- PHP 7.4+
- WooCommerce 7.0+ (el plugin también funciona en sitios de WordPress sin WooCommerce, donde los adaptadores de comercio simplemente quedan inactivos)
- Cuenta de Tajo con una conexión de WordPress creada
- HTTPS en el endpoint de Tajo (siempre se cumple en el Tajo alojado)
Paso 1: instala el plugin Tajo for WooCommerce
Instalación manual
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zipDespués actívalo desde el panel de administración de WordPress:
- Ve a Plugins → Installed Plugins
- Busca “Tajo for WooCommerce”
- Haz clic en Activate
También puedes subir el zip directamente desde Plugins → Add New → Upload Plugin. Con cada versión se publica una suma de verificación SHA-256 en tajo.io/downloads/woocommerce/. El plugin todavía no está listado en el directorio de WordPress.org; hoy la vía admitida es la instalación manual.
Paso 2: configura la conexión
Ve a WooCommerce → Tajo (en sitios sin WooCommerce: Settings → Tajo) e introduce los tres valores de tu conexión de WordPress en Tajo:
| Campo | Valor |
|---|---|
| Endpoint de Tajo | La URL HTTPS del webhook que aparece en Tajo, por ejemplo https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| Binding ID | El binding ID de la conexión en Tajo |
| Secreto de firma | El secreto compartido (de 32 a 256 caracteres). El plugin genera un secreto local robusto al activarse; pégalo en Tajo, o pega aquí el secreto de Tajo |
No hay constantes de clave de API que añadir a wp-config.php. Los eventos permanecen en cola de forma segura en el outbox local hasta que se guardan los tres valores.
Después verifica la tubería de extremo a extremo:
- Haz clic en Queue test event y luego en Process now.
- La tabla del outbox de entrega debería mostrar el evento como entregado.
- En Tajo, confirma que el evento
connection.testllegó a la conexión de WordPress.
Qué envía el plugin
Cada evento es un sobre compacto y con datos personales minimizados, firmado con HMAC-SHA256. De WordPress solo salen los campos de identidad para la interacción (email, teléfono, IDs locales) y metadatos acotados del evento, nunca nombres, direcciones postales, direcciones IP, user agents, cuerpos de comentarios, campos arbitrarios de formulario, notas de pedido ni datos de pago.
Eventos de WooCommerce
| Hook | Evento |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart, eliminación de artículo, aplicación o retirada de cupón | cart.updated (con resumen del carrito para flujos de abandono) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed (+ order.fulfilled al completarse) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| Actualizaciones de estado de WooCommerce Subscriptions | subscription.status_changed |
Los eventos de pedido llevan el número de pedido, el estado, la moneda, los totales, las líneas de pedido y URLs listas para usar de reseña y de nuevo pedido, suficiente para automatizaciones posteriores a la compra y de recuperación sin una llamada adicional a la API.
Eventos de WordPress
contact.created/contact.updated/contact.deletedpara las cuentas de usuariocontent.published/content.updated/content.unpublishedpara el contenido públicocomment.created/comment.status_changedpara los comentarios de visitantes y las reseñas de producto (las notas internas de pedido de WooCommerce, los pingbacks y los trackbacks nunca se emiten)form.submittedpara los envíos correctos de Contact Form 7, WPForms, Gravity Forms y Fluent Forms, donde solo se extraen los campos de identidad tipados de email y teléfono junto con los metadatos del formulario; los campos arbitrarios enviados se descartan
Fiabilidad: el outbox de entrega
El plugin nunca dispara eventos hacia Tajo directamente desde una carga de página. Cada evento se escribe primero en una tabla de outbox local y después lo entrega WP-Cron con:
- Backoff exponencial acotado (hasta 8 intentos, respetando
Retry-After) - Dead letters con Replay dead letters en un clic desde el panel de administración
- Límites de retención para que un endpoint inalcanzable nunca acumule datos personales (entregados: 7 días; en cola: 30 días; dead letters: 30 días desde la última actualización)
- IDs de evento idempotentes, para que los reintentos y las reproducciones nunca dupliquen nada aguas abajo
Si tu hosting desactiva WP-Cron (DISABLE_WP_CRON), invoca wp-cron.php desde un planificador real al menos una vez por minuto.
El consentimiento nunca se deduce
Crear una cuenta, pasar por el checkout, comprar y enviar formularios genéricos no se tratan como consentimiento de marketing. Los eventos integrados llevan una lista de consentimiento vacía. Para registrar un consentimiento explícito (por ejemplo, desde una casilla marcada de newsletter), emítelo a través del hook de extensión:
do_action( 'tajo_engagement_emit', 'consent.updated', array( 'email' => $email ), array( 'policyVersion' => '2026-07' ), array( array( 'channel' => 'email', 'status' => 'opt_in', // or 'opt_out' 'purpose' => 'marketing', 'source' => 'newsletter_checkbox', 'evidence' => array( 'formId' => 'newsletter-footer', 'field' => 'marketing_email' ), ), ), gmdate( 'c' ));El mismo hook permite que cualquier plugin o tema emita eventos propios; todo pasa por el mismo saneador, el mismo outbox y la misma firma.
Paso 3: importación histórica
Los eventos en tiempo real cubren todo desde la instalación en adelante. Para el historial anterior al plugin, la conexión REST de WooCommerce de Tajo importa los clientes, pedidos, productos, cupones, reembolsos y reseñas existentes, y se configura por completo del lado de Tajo con una clave de la API REST de WooCommerce (WooCommerce → Settings → Advanced → REST API, permiso de lectura). Consulta la referencia del conector de WooCommerce para más detalles.
Privacidad y RGPD
- El plugin se registra en WordPress en Tools → Export Personal Data y Tools → Erase Personal Data; los eventos del outbox retenidos para un email coincidente se exportan o se borran localmente.
- El borrado y la entrega comparten un mutex fail-closed, así que un borrado nunca puede darse por completado mientras un payload está en pleno envío.
- El borrado local solo cubre el outbox de WordPress, envía la solicitud correspondiente en Tajo para los datos aguas abajo.
- Desactivar el plugin pausa la entrega pero conserva la configuración y los eventos en cola; borrarlo elimina de forma permanente el outbox, los ajustes, el secreto y las tareas programadas.
Compatibilidad
- HPOS: el plugin declara compatibilidad con WooCommerce High-Performance Order Storage y solo usa objetos CRUD y hooks públicos.
- WooCommerce Subscriptions: los cambios de estado de suscripción se capturan cuando la extensión está activa.
- Multisitio: la desinstalación limpia todos los sitios de la red.
Referencia de operaciones
El descubrimiento servidor a servidor y el control del outbox están disponibles para los administradores mediante autenticación con Application Password:
| Método | Ruta | Propósito |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | Versión del plugin, adaptadores detectados, inventario de eventos, salud del outbox |
GET | /wp-json/tajo/v1/outbox | Recuentos del outbox (los payloads nunca se exponen) |
POST | /wp-json/tajo/v1/outbox/process | Procesa un lote de inmediato |
POST | /wp-json/tajo/v1/outbox/replay | Reproduce las dead letters |
Resolución de problemas
| Síntoma | Causa y solución |
|---|---|
| Los eventos se quedan en “Queued” | El endpoint, el binding ID o el secreto todavía no están guardados, la entrega queda en pausa hasta que se configuren los tres |
| Los eventos se quedan en “Retrying” | El endpoint de Tajo no es alcanzable desde tu hosting, o WP-Cron no se está ejecutando, revisa la columna de error de la tabla del outbox y tu configuración de cron |
| Se acumulan dead letters | Un error no reintentable (normalmente un binding ID o un secreto incorrectos), corrige la configuración y luego usa Replay dead letters |
| “Enter a valid HTTPS Tajo webhook endpoint” | El endpoint debe ser HTTPS y sin credenciales incrustadas |
| El evento de prueba se entrega pero no aparece nada en Tajo | Comprueba que pegaste el binding ID del mismo workspace y de la misma conexión de Tajo a los que pertenece el endpoint |
Siguientes pasos
- Referencia del conector de WooCommerce, sincronización REST, detalles de la firma del webhook, claves de configuración
- Sincronización de clientes, cómo mapear los clientes de WooCommerce en tu sistema de registro
- Configura en Tajo automatizaciones de carrito abandonado, posteriores a la compra y de recuperación usando los eventos
cart.updated,order.placedyorder.fulfilled