Cómo integrar WooCommerce con Klaviyo: sincronización, eventos y flujos esenciales
Conecta WooCommerce con Klaviyo paso a paso: plugin oficial, sincronización de clientes y pedidos, eventos clave, flujos de carrito abandonado y verificación de entregabilidad.
Klaviyo es uno de los ESP más potentes para ecommerce porque está construido alrededor de eventos de tienda, no de listas estáticas. Cuando se conecta correctamente con WooCommerce, cada visita, vista de producto, inicio de checkout o compra se convierte en un dato sobre el que disparar automatizaciones segmentadas. Esta guía cubre la integración técnica completa: instalación del plugin oficial, configuración de la API, mapeo de eventos, flujos esenciales y los problemas reales que aparecen al sincronizar tiendas medianas y grandes.
Para qué sirve la integración WooCommerce ↔ Klaviyo
La conexión nativa hace tres cosas a la vez:
- Sync histórico y continuo de clientes y pedidos. Klaviyo importa la base existente de WooCommerce (clientes, productos, pedidos pasados) y mantiene la actualización en tiempo casi real vía webhooks.
- Tracking onsite. Un snippet de JavaScript registra eventos anónimos (visitas, productos vistos) y los liga a un perfil cuando el visitante se identifica.
- Sincronización de catálogo. Klaviyo crea un feed con productos, precios e imágenes para usar en bloques dinámicos de email (recomendaciones, recordatorios, abandono de navegación).
El resultado: campañas y flujos basados en comportamiento real (Placed Order, Started Checkout, Viewed Product) en vez de listas frías.
Requisitos previos
- WooCommerce 6.0 o superior. Para versiones antiguas hay incompatibilidades de webhooks.
- WordPress 6.0+ y PHP 7.4+ (idealmente PHP 8.1+).
- Acceso a
wp-admincon rol Administrador. - Cuenta de Klaviyo con un Public API Key y un Private API Key con permisos de lectura/escritura.
- Dominio de envío propio configurado en Klaviyo con firma DKIM y configurar SPF ya publicados.
- Si la tienda tiene caché agresivo (WP Rocket, LiteSpeed), revisa que no minifique ni difiera el script de Klaviyo de forma que rompa su carga.
Instalación del plugin oficial
Klaviyo mantiene un plugin gratuito en el repositorio de WordPress: Klaviyo: Marketing Automation, Email & SMS.
- WP Admin → Plugins → Añadir nuevo → busca “Klaviyo”.
- Instala el plugin oficial (autor: Klaviyo) y actívalo.
- Verás un nuevo menú lateral “Klaviyo”.
- Conecta la cuenta: introduce el Public API Key (site ID, formato
XxYyZz). - Para sync de pedidos, introduce el Private API Key con scope
accounts:read,events:write,profiles:read-write,catalogs:read-write.
Después del primer guardado, el plugin lanza una sincronización inicial. En tiendas con miles de pedidos puede tardar varias horas; no la interrumpas reiniciando ni desactivando el plugin.
Verificar que el snippet onsite está cargado
<!-- En el <head> del frontend -->
<script async type="text/javascript"
src="https://static.klaviyo.com/onsite/js/XxYyZz/klaviyo.js?company_id=XxYyZz"></script>
Si no aparece, revisa Klaviyo → Settings → Onsite tracking, y desactiva la opción “Disable onsite JS” si la activaste.
Configuración mínima recomendada
Listas y consentimiento
Crea al menos dos listas en Klaviyo:
Newsletter(marketing): para suscripciones explícitas con doble opt-in.Customers(transaccional + marketing si optan): para clientes que han comprado.
Activa el double opt-in en la lista Newsletter. El RGPD exige consentimiento informado y específico; si la tienda factura en España, el doble opt-in es la práctica defensiva razonable. Configura el correo de confirmación en español, con marca clara y enlaces directos.
Mapeo de campos
En Klaviyo → Integrations → WooCommerce, revisa el mapeo:
email→$emailfirst_name,last_name→$first_name,$last_namebilling_country→$countrybilling_phone→$phone_number(en formato E.164 si activas SMS)
Cualquier metadata adicional (idioma, segmento manual, fuente de captación) se puede mapear como propiedad personalizada.
Bandera de consentimiento
Klaviyo distingue entre “perfil existente” y “perfil suscrito a marketing”. Asegúrate de que solo se marca Subscribed cuando hay opt-in real:
// functions.php (solo si NO quieres que cada cliente vaya a marketing)
add_filter( 'klaviyo_woocommerce_subscribe_customer_on_checkout', '__return_false' );
Si quieres una casilla en el checkout, actívala desde WooCommerce → Settings → Klaviyo → “Add newsletter checkbox at checkout”.
Eventos típicos a sincronizar
El plugin envía estos eventos de forma nativa:
| Evento Klaviyo | Disparador WooCommerce |
|---|---|
Active on Site | Visita identificada |
Viewed Product | Vista de single-product |
Added to Cart | woocommerce_add_to_cart |
Started Checkout | Carrito con email asociado |
Placed Order | woocommerce_order_status_processing |
Ordered Product | Por cada line item del pedido |
Fulfilled Order | woocommerce_order_status_completed |
Cancelled Order | woocommerce_order_status_cancelled |
Refunded Order | Reembolso completo o parcial |
Para eventos personalizados (suscripción a un curso, descarga de un PDF) usa la API:
function track_curso_descargado( $email, $curso ) {
$payload = [
'token' => 'XxYyZz',
'event' => 'Descargó Curso',
'customer_properties' => [ '$email' => $email ],
'properties' => [ 'CursoID' => $curso ],
];
wp_remote_post( 'https://a.klaviyo.com/api/track', [
'body' => [ 'data' => base64_encode( wp_json_encode( $payload ) ) ],
] );
}
Flujos esenciales que activar
Estos cuatro flujos deberían estar configurados antes de empezar a invertir en captación:
- Welcome Series disparada por suscripción a
Newsletter. 3-4 emails repartidos en 7-10 días con descuento, proof social, mejor ranking de productos y CTA suave. - Abandoned Cart disparada por
Started CheckoutsinPlaced Orderen 60 minutos. Tres correos: 1h, 24h, 72h. Incluye los items del carrito con bloque dinámico. - Browse Abandonment disparada por
Viewed Productrepetido sin compra. Más sutil que el carrito; un único email con producto y alternativas. - Post-purchase disparada por
Placed Order. Confirmación, instrucciones de uso/envío, cross-sell pasados 7 días, solicitud de reseña pasados 14-21 días.
Para clientes recurrentes, añade un quinto: Winback disparado por Date of Last Purchase mayor a 90/180 días.
Bloques dinámicos de producto
Klaviyo expone los items del pedido o carrito como event.extra.line_items. Ejemplo de iteración en el editor:
{% for item in event.extra.line_items %}
<a href="{{ item.product.url }}">
<img src="{{ item.product.images.0 }}" />
<p>{{ item.product.title }}: {{ item.line_price|money_format }}</p>
</a>
{% endfor %}
Si las imágenes no aparecen, revisa que los productos tienen imagen destacada y que las URLs son absolutas (https) y no relativas.
Errores comunes y soluciones
”Los eventos no llegan a Klaviyo”
Causas frecuentes:
- Caché de página agresivo. Si tienes WP Rocket con HTML caching,
Active on Sitesolo se dispara para usuarios logueados. Solución: excluir el script de Klaviyo de la minificación y confiar en el endpoint del lado del servidor para eventos críticos. - CSP restrictiva. Si tu cabecera Content-Security-Policy no incluye
static.klaviyo.comya.klaviyo.com, el snippet no carga. - Consent banner que bloquea Klaviyo. Comprueba con la pestaña Network del navegador que
klaviyo.jsse carga sin que el banner lo bloquee.
”Productos sin imagen en los emails”
Klaviyo cachea el catálogo cada hora. Si actualizas imágenes, fuerza un sync manual: Klaviyo → Catalogs → Sync now. Verifica también que las imágenes son accesibles públicamente (no detrás de un login o un firewall que bloquee bots).
”Customer match falla, se duplican perfiles”
Klaviyo une perfiles por email. Si tienes pedidos con email vacío (caso típico en pedidos manuales o B2B), se crean perfiles huérfanos. Soluciones:
- Hacer obligatorio el campo email en pedidos manuales.
- Usar la API de merge:
POST /api/profiles/mergecon email primario.
”Welcome series se dispara dos veces”
Suele pasar cuando hay un formulario de Klaviyo y, además, un plugin tipo Mailchimp for WP que también envía a Klaviyo. Centraliza la captación en una sola fuente.
”Bounce rate alto en la primera campaña”
Si la lista lleva tiempo sin activarse, limpia con doble opt-in o un servicio de verificación antes del primer envío. Una bounce rate alta arruina la reputación del nuevo dominio en Klaviyo. Revisa también bounces SMTP para entender la diferencia entre soft y hard.
Verificación: ¿la integración funciona?
Tres comprobaciones rápidas:
- Evento de test. Haz una compra de prueba con tu propio email. En Klaviyo → Profiles, busca tu email. Deben aparecer los eventos
Active on Site,Started Checkout,Placed Ordercon los productos correctos. - Catálogo. Klaviyo → Catalogs → Products. Cuenta los productos y compara con WooCommerce → Products. Si difieren mucho, fuerza sync.
- Envío real. Crea una campaña de prueba a un segmento de un único contacto (tú). En las cabeceras del email recibido revisa:
Authentication-Results: mx.google.com;
dkim=pass [email protected] header.s=klaviyoXXX
spf=pass smtp.mailfrom=bounce.tudominio.com
dmarc=pass header.from=tudominio.com
Si SPF da softfail o DKIM falla, el dominio de envío no está bien configurado. Vuelve a Klaviyo → Settings → Domains.
Implicaciones de entregabilidad
Klaviyo envía desde un pool de IPs compartidas por defecto. Funciona bien si autenticas correctamente el dominio. Para volúmenes altos (>250k envíos/mes) hay IP dedicadas, pero requieren plan de warming propio.
Recomendaciones específicas:
- Configura un subdominio dedicado (
mail.tudominio.comonews.tudominio.com). Aísla la reputación del dominio raíz. - Publica política DMARC en
p=nonedurante 2-4 semanas y verifica que los reportes RUA muestran SPF y DKIM pasando para Klaviyo. Después sube aquarantine. - Activa List-Unsubscribe one-click. Klaviyo lo añade por defecto si configuraste el dominio correctamente.
- Si recibes muchas quejas en Gmail, revisa la guía de evitar spam en Gmail antes de subir el ritmo de envíos.
Sincronización avanzada con la API
Para necesidades que el plugin no cubre (suscripciones recurrentes, productos compuestos, B2B con cuentas), usa la API de Klaviyo directamente:
function klaviyo_track_event( $email, $event_name, $properties ) {
$body = wp_json_encode( [
'data' => [
'type' => 'event',
'attributes' => [
'profile' => [ 'email' => $email ],
'metric' => [ 'name' => $event_name ],
'properties' => $properties,
'time' => gmdate( 'c' ),
],
],
] );
wp_remote_post( 'https://a.klaviyo.com/api/events/', [
'headers' => [
'Authorization' => 'Klaviyo-API-Key pk_xxxxxxxxxxxx',
'Content-Type' => 'application/json',
'revision' => '2024-10-15',
],
'body' => $body,
] );
}
Mantén la cabecera revision actualizada. Klaviyo versiona la API y un valor obsoleto deja de funcionar al cabo de meses.
Cuándo no usar el plugin
El plugin oficial es suficiente para el 90 % de las tiendas. Considera saltártelo (e ir a API directa) si:
- Tienes una arquitectura headless con Next.js o Astro consumiendo WooCommerce vía REST.
- Necesitas mapear modelos de datos complejos (suscripciones tipo WooCommerce Subscriptions con un esquema propio).
- Tu sync de catálogo necesita lógica condicional (esconder productos por país, por ejemplo).
En esos casos, deshabilita el sync nativo y construye tu propio puente con webhooks de WooCommerce y Events API de Klaviyo.
Recursos relacionados
Si quieres profundizar, prueba estas herramientas gratuitas: Domain Health, mail tester, validador SPF y validador DMARC.
¿Necesitas que alguien lleve tu canal de email entero? Abalola Mail es la agencia de email marketing y retención para ecommerce de Abalola para ecommerce: estrategia, producción y operación del stack sobre Klaviyo, Mailchimp o Brevo.