Findalo

Eventos y API JavaScript

El widget expone window.findalo: un bus de eventos de todo lo que pasa en el buscador y métodos para controlarlo desde tu código. Tu JS puede vivir en tu tienda o en el editor del panel (Apariencia → Avanzado).

Eventos

Evento Payload Cuándo
search { query, total, took_ms, match_mode, lang } Cada búsqueda ejecutada (query de 2+ caracteres). match_mode indica si los resultados son directos o sugeridos («fallback»).
zero { query, total: 0, took_ms, match_mode, lang } Búsqueda con 0 resultados. Raro: el buscador nunca deja la pantalla vacía — la señal real de «sin resultados» es search con match_mode «fallback».
click { product_id, product_name, product_url, price, currency, query, position } Click en un producto de los resultados.
add-to-cart { product_id, product_name, price, currency, quantity, cart_count } Producto añadido al carrito desde el buscador.
quick-view { product_id, product_name, product_url, price, currency, query, position } Apertura de la vista rápida de un producto.
cart-open { cart_count } Apertura del panel de la cesta desde la cabecera del buscador.
express-purchase { payment_intent, order_id, reference } Compra completada vía checkout exprés (si está activo).
open { prefill } Apertura del buscador. prefill lleva la query inicial si la hay.
close {} Cierre del buscador.
context el objeto window.FINDALO_CTX completo El contexto de navegación ya resuelto, con la parte privada (carrito y cliente) incluida. Dispara una vez por carga de página. Ver /devs/contexto.

Ejemplos

Enviar las búsquedas a tu GA4

findalo.on('search', (e) => {
  gtag?.('event', 'site_search', { search_term: e.query, results: e.total });
});

(Para GA4 hay integración sin código en el panel — Analítica → Reenvío a tu GA4. Escribe la tuya solo si necesitas algo distinto.)

Detectar búsquedas sin resultados reales

// El buscador nunca deja la pantalla vacía: si nada casa, muestra
// sugeridos con match_mode 'fallback'. Esa es la señal real de
// «sin resultados» — el evento 'zero' casi nunca dispara.
findalo.on('search', (e) => {
  if (e.match_mode === 'fallback') {
    // ej. abrir tu chat de soporte con la query
  }
});

Abrir el buscador desde tus propios elementos

document.querySelector('#hero-buscar')
  ?.addEventListener('click', () => findalo.open());

// o directamente con una query:
findalo.search('crema hidratante');

Métodos y propiedades

Método / propiedad Qué hace
findalo.on(evento, callback) Se suscribe a un evento del bus. Devuelve una función para desuscribirse.
findalo.open(query?) Abre el buscador, opcionalmente con una query inicial.
findalo.search(query) Abre el buscador y ejecuta la query.
findalo.close() Cierra el buscador.
findalo.tenant Slug del buscador (solo lectura).
findalo.lang Idioma activo del widget (solo lectura).
findalo.version Versión del API JS (solo lectura).
findalo.context() Contexto de navegación de la página: la misma variable window.FINDALO_CTX (tipo de página, ids, idioma, divisa, carrito, cliente). Ver /devs/contexto.
findalo.onContext(callback) Ejecuta el callback con el contexto COMPLETO (carrito y cliente ya resueltos); si ya lo está, en el acto. Es la vía correcta si dependes del carrito.

Garantía: los nombres de eventos y las claves de sus payloads son contrato estable — podemos añadir campos nuevos, nunca renombrar ni eliminar los existentes.