Saltar al contenido principal

Klaviyo for Odoo

Guía de usuario

Esta guía cubre Klaviyo for Odoo. Es una sola aplicación que se instala una vez. Las partes para otras aplicaciones de Odoo se activan solas cuando esas aplicaciones están instaladas: Ventas, Inventario, Punto de venta, Comercio electrónico, Marketing por correo electrónico, Fidelización y Reparaciones, y en Odoo Enterprise, Suscripciones, Citas y Helpdesk. La sección 5 dice qué envía cada parte.

1. Antes de empezar

2. Instalación

  1. Abre Aplicaciones, quita el filtro "Aplicaciones" y busca "Klaviyo".
  2. Instala Klaviyo for Odoo. No hay que instalar nada más: las partes para Ventas, Inventario y las otras aplicaciones de Odoo que uses se activan solas.
  3. Aparece la aplicación Klaviyo. La primera vez te lleva al asistente de configuración.

Cada compañía tiene su propia cuenta de Klaviyo. En una base con varias compañías, abre la aplicación una vez por compañía.

3. Conectar con Klaviyo

  1. En el asistente pulsa Connect with Klaviyo.
  2. Entra en Klaviyo y aprueba los permisos que pide la aplicación. La lista de permisos, con el motivo de cada uno, está al final de esta guía.
  3. Klaviyo te devuelve a Odoo y el asistente continúa.

Odoo guarda los tokens de acceso y de renovación cifrados (ver "Cómo se protegen los tokens" más abajo). Un pequeño servicio de FlexigoTech en connect.flexigotech.com solo pasa los tokens durante el inicio de sesión y al renovarlos. Nunca recibe contactos, pedidos ni otros datos. Tus datos van directos de Odoo a Klaviyo.

Si la conexión se rompe (por ejemplo, Klaviyo revoca la aplicación), la cuenta pasa a "disconnected" y los Klaviyo Manager reciben una actividad. Vuelve a pulsar Connect with Klaviyo. En el formulario de la cuenta están los botones Disconnect y Forget credentials: Disconnect revoca el token en Klaviyo y borra el webhook, y Forget credentials sirve cuando Klaviyo no pudo revocar el token.

Cómo se protegen los tokens

El token de acceso, el de renovación y el secreto del webhook se cifran con Fernet antes de escribirlos en la base de datos. La clave de cifrado sale de uno de dos sitios.

Recomendamos poner klaviyo_token_key. Mantenla igual en todos los servidores que usen esa base y guarda una copia. Si la clave cambia o se pierde, Odoo no puede leer los tokens guardados. La cuenta pasa entonces al estado Error con el mensaje "Reconnect Klaviyo", no envía nada y no reintenta sin fin. Pulsa Connect with Klaviyo otra vez y los tokens nuevos se cifran con la clave actual. Si añades la opción a una base que ya funciona, los tokens existentes siguen funcionando y se recifran con la clave del servidor la próxima vez que cambien.

Al actualizar desde una versión que guardaba los tokens sin cifrar, se cifran durante la actualización.

4. El asistente de configuración

El asistente tiene cinco pasos y puedes volver atrás cuando quieras.

  1. Conectar.
  2. Quién envía el marketing. Elige Klaviyo, Odoo o los dos. Importa si también envías correos masivos desde Odoo, porque dos sistemas no deben escribir a la misma persona. Para email y para SMS eliges también quién manda en el consentimiento: Odoo, Klaviyo o los dos (una baja en cualquiera de los dos gana, y es el valor por defecto). Elige la lista de Klaviyo a la que se apuntan los nuevos suscriptores. Si esa lista usa doble confirmación, Klaviyo envía el correo de confirmación.
  3. Qué sincronizar. Interruptores para contactos, actividad de email que vuelve a Odoo, catálogo, listas por etiquetas y borrado al eliminar, más el modo de prueba (sección 6). Cada parte instalada añade su propio interruptor, como pedidos, facturas sin pedido de venta, fidelización, reparaciones, listas de correo o visitantes de la tienda.
  4. Histórico. Puedes enviar los contactos que ya tienes y los pedidos, entregas, pedidos del TPV, reparaciones, recompensas canjeadas, tickets, citas y suscripciones anteriores de las partes instaladas. Eliges una fecha de inicio y las fuentes. También se puede hacer más tarde con el botón Send history.
  5. Resumen. Dice con palabras claras lo que va a pasar. Pulsa Start.

Todo funciona con los valores por defecto. Puedes volver a abrir el asistente con Set up Klaviyo en la cuenta: muestra tus opciones actuales y solo guarda lo que cambies.

5. Qué sincroniza cada parte

Klaviyo for Odoo (núcleo)

QuéSentidoCuándo
Contactos con email o teléfonoOdoo a Klaviyo, como perfilesSe encolan al crear o cambiar el contacto y los envía un trabajo que corre cada minuto
Mapeo de camposOdoo a KlaviyoIgual que los contactos. Los valores por defecto funcionan sin configurar. Añades campos en la pestaña Contacts
Etiquetas de contactoOdoo a Klaviyo, como listasEliges las etiquetas en la pestaña Lists
Productos a la venta, variantes y categoríasOdoo al catálogo de KlaviyoCuando cambian, y una actualización diaria de stock y precios
Bajas y consentimiento explícitoEn los dos sentidosAl instante con el webhook; si no, cada 15 minutos
Aperturas, clics y correos recibidos en 30 díasKlaviyo a OdooCon el webhook, escritos en el contacto
Contactos existentesOdoo a Klaviyo, en bloqueCuando lo pides, desde el asistente

Detalles útiles:

Partes que se activan con otras aplicaciones de Odoo

Aplicación de OdooQué se envíaCuándo
VentasPlaced Order y Ordered ProductAl confirmar un pedido
VentasCancelled OrderAl cancelar un pedido que Klaviyo ya conocía como realizado
VentasRefunded Order, uno por pedido con el total acumuladoTras un periodo de espera (48 horas por defecto, configurable) desde el último reembolso
VentasPlaced Order y Ordered Product de las facturas sin pedido de venta (B2B), y Refunded Order cuando se rectificanOpcional, desactivado por defecto
VentasPuntuaciones del cliente en el perfil: Lifecycle Stage, RFM Segment, RFM Recency, Frequency y Monetary Score, Number of Orders, Total Spent y Last Order DateCada noche, para los contactos cuyas puntuaciones cambiaron
VentasPedidos anterioresCuando lo pides, en el paso de histórico
InventarioFulfilled Order, con número de seguimiento y transportistaAl hacerse una entrega. Una entrega parcial y su pedido pendiente son dos eventos
Punto de ventaPlaced Order y Ordered Product, con los mismos nombres que Ventas y el canal POSAl pagarse un pedido en la caja
Punto de ventaRefunded Order, uno por pedido con el total acumulado, y Refunded Order Adjustment para una devolución hecha después de enviarloTras el mismo periodo de espera que Ventas
Punto de ventaLa última tienda del cliente (Most Recent Store ID, Name y Location) en el perfilTras cada pedido pagado en la caja
Punto de ventaPedidos anteriores de la cajaCuando lo pides, en el paso de histórico
Comercio electrónicoViewed Product, Added to Cart y Started Checkout, enviados desde el navegador del visitante por el script de KlaviyoSolo después de que el visitante acepte las cookies opcionales de la barra de cookies de Odoo, o si gestionas tú el consentimiento de los visitantes
Comercio electrónicoLa página pública del producto, su imagen y las categorías de la tienda en el catálogo de KlaviyoCuando un producto se publica o cambia
Comercio electrónicoUna casilla de consentimiento en el pago para invitadosSolo si escribes un texto de consentimiento en la cuenta. Desactivada por defecto
Marketing por correo electrónicoLas listas de correo que elijas, como listas de Klaviyo, y las personas que están en ellas como perfiles, sin un segundo perfil cuando un contacto de Odoo tiene el mismo emailCuando cambia una lista o una suscripción, y una revisión cada noche
Marketing por correo electrónicoEl consentimiento para esa lista, enviado una sola vez por persona. Salir de una lista saca el perfil solo de esa listaCuando la persona entra en la lista o sale de ella
FidelizaciónLoyalty Points, Loyalty Level, Loyalty Next Reward, Loyalty Points To Next Reward, Gift Card Balance, Active Gift Cards, eWallet Balance, Active Coupons y Coupon Expires On, en el perfilCuando cambia una tarjeta, un programa o una recompensa
FidelizaciónRedeemed Reward, uno por pedido y tarjeta5 minutos después del último cambio del canje
ReparacionesRepair Created y Repair CompletedAl confirmar la reparación y al terminarla. La descripción de la reparación y las notas internas no se envían nunca
Helpdesk (Enterprise)Opened Ticket y Closed TicketAl abrir un ticket y al llegar a una etapa cerrada. El texto libre del cliente no se envía nunca
Citas (Enterprise)Booked Appointment y Cancelled AppointmentAl aceptar una reserva y al cancelarla
Suscripciones (Enterprise)Started, Renewed y Cancelled Subscription, con el plan, el importe recurrente, los ingresos mensuales y las fechasAl confirmar, renovar y cerrar la suscripción
Suscripciones (Enterprise)Propiedades de suscripción en el perfil: estado, suscripciones activas, ingresos mensuales, próxima factura y fecha de altaCuando cambia una suscripción, y cada noche

Las notas, las secciones, los anticipos y las líneas vacías de un pedido no son productos. Confirmar un pedido dos veces, o pasarlo a borrador y confirmarlo otra vez, no envía nada nuevo. La pestaña Orders de la cuenta tiene los nombres de los eventos, el prefijo del identificador y un filtro para dejar fuera los pedidos que tu tienda online ya envía a Klaviyo.

Los pedidos de la caja sin cliente no se envían, y el email que se teclea en la caja para el recibo no se usa nunca. Las líneas que se cobran en la caja por un pedido de venta no se envían dos veces.

En la tienda online, el script de Klaviyo solo identifica a un visitante con datos ya guardados: un cliente con sesión iniciada, o un invitado después de enviar su dirección. Envía el email y el nombre, nunca el teléfono ni la dirección. Los empleados que navegan por la tienda no se rastrean, y en modo de prueba los visitantes anónimos no envían nada.

Cuando el marketing lo envía Klaviyo, un mailing de Odoo te avisa antes de salir hacia personas que ya son perfiles de Klaviyo. Una baja hecha en Klaviyo cierra también las suscripciones de las listas de correo que envías a Klaviyo.

6. Modo de prueba: probar en producción

El modo de prueba permite conectar una base real y revisar el resultado antes de que ningún cliente llegue a Klaviyo.

  1. En el asistente activa Test mode. El módulo trae una etiqueta de contacto llamada "Klaviyo test" y la usa por defecto.
  2. Pon esa etiqueta a unos cuantos contactos de prueba.
  3. Solo los contactos con la etiqueta se envían como perfiles y entran en listas y consentimiento. El resto se retiene.
  4. Revisa los perfiles en Klaviyo. Desactiva el modo de prueba cuando estés conforme.

Mientras el modo de prueba está activo:

7. Protección de datos: borrar y liberar

Para borrar personas de Klaviyo:

  1. Selecciona los contactos, abre Acciones y elige Erase from Klaviyo (GDPR). Solo los Klaviyo Manager ven esta acción.
  2. Un diálogo avisa de que no se puede deshacer y de que también se bloquean otros contactos con el mismo email o número. Confirma.
  3. Odoo pide a Klaviyo que borre los perfiles y marca los contactos como excluidos, para no enviarlos nunca más. Klaviyo hace el borrado en segundo plano, normalmente en pocos minutos.

Si Klaviyo no tiene perfil del contacto, no queda nada que borrar y se da por hecho. Klaviyo borra todos los perfiles que tengan el identificador indicado, así que un teléfono compartido puede afectar a otra persona. Por eso el conector usa el email cuando hay uno, y el teléfono solo si no hay email.

Si quieres que se borre el perfil de Klaviyo cada vez que se elimina un contacto en Odoo, activa "Erase the Klaviyo profile when a contact is deleted" en el asistente. Viene desactivado, porque eliminar un contacto duplicado no debe borrar a un cliente real. Fusionar duplicados nunca borra el perfil del contacto que se queda.

Después de un borrado el conector recuerda la dirección, como un hash con clave y no en claro, y no vuelve a enviar nada con ella a esa cuenta de Klaviyo, ni siquiera una baja. Para permitir de nuevo una dirección, selecciona el contacto y elige Release erased address (Klaviyo) en Acciones. Es un paso deliberado de un Klaviyo Manager.

Dos cosas que vimos en pruebas con una cuenta real:

Los datos de categorías especiales no deben mapearse a propiedades de Klaviyo. Por defecto no se mapea ninguno.

8. La pestaña Status

Abre la cuenta de Klaviyo y ve a Status.

Odoo crea una actividad para los Klaviyo Manager cuando:

Klaviyo limita cuántas peticiones acepta. Cuando responde "demasiadas peticiones", la cola espera lo que Klaviyo indica y sigue. Las peticiones fallidas se reintentan a 1 minuto, 5 minutos, 30 minutos, 2 horas y 6 horas antes de darlas por fallidas.

9. Tiempos que conviene esperar

10. Límites conocidos

11. Ayuda

Envía al soporte de FlexigoTech las cifras de la página de estado, el texto de un trabajo fallido y tu versión de Odoo. Cómo escribirnos, y en cuánto respondemos, está en la página de soporte.

Permisos que pide la aplicación

Al conectar, Klaviyo te pide aprobar estos 14 permisos (scopes). Cada uno lo usa una llamada que hace el módulo.

PermisoPara qué
accounts:readLeer el id, el nombre, la zona horaria y la moneda de la cuenta al conectar, y comprobar que el token funciona.
profiles:readEncontrar el perfil detrás de un error de duplicado, leer el estado de suscripción al consultar y comprobar el resultado de las importaciones en bloque.
profiles:writeCrear y actualizar perfiles a partir de los contactos de Odoo.
lists:readCargar tus listas para elegir la de consentimiento y encontrar una lista que ya tenga el nombre de una etiqueta.
lists:writeCrear una lista para una etiqueta elegida y añadir o quitar perfiles.
events:writeEnviar eventos de pedidos y el histórico de eventos en bloque.
events:readLeer los eventos de consentimiento cuando Odoo no tiene dirección pública para un webhook, y comprobar lo guardado.
metrics:readEncontrar las métricas de consentimiento de Klaviyo, necesarias para leer esos eventos.
subscriptions:writeSuscribir a quien dio su consentimiento en Odoo y dar de baja a quien se dio de baja en Odoo.
catalogs:readComprobar el estado de los artículos del catálogo antes de actualizarlos o borrarlos.
catalogs:writeCrear, actualizar y borrar artículos, variantes y categorías del catálogo.
data-privacy:writeEnviar peticiones de borrado cuando un responsable pide borrar un contacto.
webhooks:readComprobar que el webhook que creó Odoo sigue existiendo y está activo.
webhooks:writeCrear el webhook que trae a Odoo las bajas y la actividad de email, y quitarlo al desconectar.