Qué aprenderás

Cómo controlar Klaviyo Customer Hub (o el chat web independiente de Klaviyo) desde el código de la tienda usando la API de JavaScript window.customerHubApi. Abrirás y cerrarás la experiencia, irás a una pantalla específica, enviarás un mensaje de chat en nombre del comprador y escucharás eventos como añadir al carrito.

Antes de empezar

Necesitarás:

  • Klaviyo Customer Hub configurado y cargado en la tienda. Si utilizas una tienda headless o personalizada, sigue primero Cómo configurar Klaviyo Customer Hub con Headless Shopify (incluye cómo añadir el cargador en el sitio que hace que esta API esté disponible).
  • Puedes editar e implementar el código de tu tienda.

Qué es el API Customer Hub

Cada vez que Klaviyo Customer Hub (o el chat web independiente de Klaviyo) se carga en la tienda, Klaviyo adjunta una pequeña API de JavaScript al objeto global window como window.customerHubApi. Puedes usarla para abrir, cerrar e interactuar con la experiencia desde tu propio código (por ejemplo, desde un botón, un banner o una página de producto personalizados).

También funciona con el chat web. El mismo API está disponible tanto si usas el Customer Hub completo como si solo usas el chat web independiente de Klaviyo. El chat web admite menos funciones que el Customer Hub, por lo que algunas de las pantallas y eventos que se documentan a continuación no están disponibles allí. Por regla general, las pantallas que están disponibles dependen de las funciones habilitadas para tu tienda: ir a una que no esté habilitada vuelve a la pantalla de inicio.

Consejo: Klaviyo Customer Hub se carga de forma asíncrona. Comprueba siempre que window.customerHubApi existe antes de llamar a un método para que el código no genere un error si se ejecuta antes de que el Hub esté listo.

javascript
if (window.customerHubApi) {
  window.customerHubApi.open();
}

Métodos

open(route?)

Abre el cajón de Customer Hub.

  • route (cadena, opcional): una ruta a la que navegar al abrir. Si se omite, el Hub se abre en la pantalla que se mostraba la última vez.
javascript
// Open the Hub on its default screen
window.customerHubApi.open();

// Open the Hub directly to a specific screen
window.customerHubApi.open('/orders');

Rutas disponibles

Ruta

Pantalla

/

Inicio

/chat

Chat

/orders

Pedidos

/cart

Carrito

/faq

PREGUNTAS FRECUENTES

/profile

Perfil

/coupons

Cupones

/rewards

Recompensas y fidelización

/wishlist (o /favorites)

Lista de deseos

/recently-viewed

Productos vistos recientemente

/recommended-products

Productos recomendados

Las pantallas que están disponibles dependen de las funciones habilitadas para tu tienda. Si vas a una pantalla que no está habilitada, vuelve a la pantalla de inicio.

close()

Cierra el cajón de Klaviyo Customer Hub. El Hub se mantiene en la pantalla actual, por lo que, al volver a abrirlo con open() (sin ruta), devuelve al cliente a donde lo dejó.

javascript
window.customerHubApi.close();

sendChatMessage(message)

Abre el Customer Hub en la pantalla de chat y envía un mensaje en nombre del cliente, útil para los botones «Chatear sobre este producto» u «Obtener ayuda».

  • message (cadena) — el mensaje que se enviará.
javascript
window.customerHubApi.sendChatMessage('I have a question about my order.');

Cuando se requiere iniciar sesión: si tu tienda requiere que los clientes inicien sesión antes de chatear (y el AI Agent no está habilitado), los clientes son llevados a la pantalla de Chat para iniciar sesión primero. El mensaje se guarda temporalmente y se envía automáticamente cuando termina de iniciar sesión. El mensaje guardado caduca al cabo de unos 10 minutos si no se completa el inicio de sesión.

sendConversationContext(context)

Pone en cola el contexto en segundo plano recopilado fuera de la conversación del chat (como las respuestas de una encuesta previa al chat) para enviarlo con el siguiente mensaje de chat del cliente. Luego, Klaviyo guarda y hace referencia a este contexto durante el resto de la conversación.

  • context (objeto) — un objeto de respuesta de encuesta que contiene una matriz entries. Cada entrada debe incluir un question y un answer.
javascript
window.customerHubApi.sendConversationContext({
  type: 'survey-response',
  entries: [
    { question: 'What color are you interested in?', answer: 'Red' },
  ],
});

Qué hace esto (y qué no hace). Llama a esto antes del primer mensaje de chat del cliente. El contexto se pone en cola en el navegador y se envía con ese siguiente mensaje; al actualizar la página, se borra cualquier elemento que siga en cola. Este método no abre Klaviyo Customer Hub, no pide al cliente que inicie sesión ni genera una respuesta por sí solo. Actualmente, survey-response es el único tipo de contexto compatible.

getActiveConversationId()

Devuelve el conversationId de la conversación activa que tiene lugar en el cajón. Devuelve null si no hay ninguna conversación en curso.

javascript
window.customerHubApi.getActiveConversationId();

Escucha los eventos

window.customerHubApi.events te permite suscribirte a los eventos que ocurren dentro de Klaviyo Customer Hub.

addtocart

Se activa cuando un cliente añade un producto a su carrito desde el Hub. Úsalo para mantener tu carrito de la tienda sincronizado.

javascript
window.customerHubApi.events.addEventListener('addtocart', (event) => {
  // event.detail.items is an array of { variantId, quantity }
  event.detail.items.forEach((item) => {
    console.log('Added to cart:', item.variantId, 'x', item.quantity);
  });
});

Propiedad

Tipo

Descripción

event.detail.type

'addtocart'

El tipo de evento.

event.detail.items

Array<{ variantId: string; quantity: number }>

Las variantes de productos que se han añadido al carrito.

Ejemplo completo

Un botón «Chatear sobre este producto» que abre el Hub y envía un mensaje, además de un agente de escucha que sincroniza el carrito de la tienda cuando un comprador añade un artículo desde el Hub:

html
<button id="ask-about-product">Ask us about this product</button>

<script>
  document
    .getElementById('ask-about-product')
    .addEventListener('click', () => {
      if (window.customerHubApi) {
        window.customerHubApi.sendChatMessage(
          'I have a question about this product.'
        );
      }
    });

  // Sync the storefront cart when a customer adds an item from the Hub
  if (window.customerHubApi) {
    window.customerHubApi.events.addEventListener('addtocart', (event) => {
      refreshStorefrontCart(event.detail.items);
    });
  }
</script>

Recursos adicionales

Set up and extend Customer Hub on your storefront.

  • How to set up Customer Hub with Headless Shopify

    Connect Klaviyo Customer Hub to your headless Shopify storefront. Enable login, surface widgets (Favorites, FAQs), and power Active/Recently Viewed product experiences to lift engagement and conversion.

  • Getting started with Customer Hub on Shopify

    Learn about Customer Hub, a unique personalized experience for online store visitors that guides them from product discovery through purchase and post-purchase support.

  • How to create FAQs for your Customer Hub and product pages

    Learn how to create and manage Frequently Asked Questions (FAQs) to display in your site’s Customer Hub interface and on product detail pages. Highlighting FAQs helps you proactively address common customer questions while reducing repetitive inquiries for your support team.

¿Te ha resultado útil este artículo?
Utiliza este formulario solo para enviar comentarios sobre el artículo. Más información sobre cómo contactar con el servicio de asistencia.

Descubre más sobre Klaviyo

Klaviyo Community
Conecta con compañeros, socios y expertos de Klaviyo para encontrar ideas, compartir información y resolver todas tus dudas.
Socios
Contrata a un experto certificado por Klaviyo para ayudarte con una tarea específica o para la gestión continua de marketing.
Asistencia

Accede al servicio de asistencia a través de tu cuenta.

Asistencia por correo electrónico (prueba gratuita y cuentas de pago) Disponible 24/7

Asistencia por chat/virtual
La disponibilidad varía según la ubicación y el tipo de plan