Findalo

Eventi e API JavaScript

Il widget espone window.findalo: un bus di eventi di tutto ciò che accade nella ricerca e metodi per controllarla dal tuo codice. Il tuo JS può vivere nel tuo negozio o nell'editor del pannello (Aspetto → Avanzato).

Eventi

Evento Payload Quando
search { query, total, took_ms, match_mode, lang } Ogni ricerca eseguita (query di 2+ caratteri). match_mode indica se i risultati sono diretti o suggeriti («fallback»).
zero { query, total: 0, took_ms, match_mode, lang } Ricerca con 0 risultati. Raro: il widget non lascia mai la schermata vuota — il vero segnale di «nessun risultato» è search con match_mode «fallback».
click { product_id, product_name, product_url, price, currency, query, position } Clic su un prodotto dei risultati.
add-to-cart { product_id, product_name, price, currency, quantity, cart_count } Prodotto aggiunto al carrello dal widget di ricerca.
quick-view { product_id, product_name, product_url, price, currency, query, position } Apertura della vista rapida di un prodotto.
cart-open { cart_count } Apertura del pannello del carrello dall'intestazione del widget.
express-purchase { payment_intent, order_id, reference } Acquisto completato via checkout express (se attivo).
open { prefill } Apertura del widget di ricerca. prefill contiene la query iniziale, se presente.
close {} Chiusura del widget di ricerca.
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.

Esempi

Inviare le ricerche al tuo GA4

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

(Per GA4 c'è un'integrazione senza codice nel pannello — Analytics → Inoltro al tuo GA4. Scrivi la tua solo se ti serve qualcosa di diverso.)

Rilevare le ricerche senza risultati reali

// Il widget non lascia mai la schermata vuota: se nulla corrisponde, mostra
// suggeriti con match_mode 'fallback'. Quello è il vero segnale di
// «nessun risultato» — l'evento 'zero' non scatta quasi mai.
findalo.on('search', (e) => {
  if (e.match_mode === 'fallback') {
    // es. aprire la tua chat di supporto con la query
  }
});

Aprire la ricerca dai tuoi elementi

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

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

Metodi e proprietà

Metodo / proprietà Cosa fa
findalo.on(evento, callback) Si iscrive a un evento del bus. Restituisce una funzione per annullare l'iscrizione.
findalo.open(query?) Apre il widget di ricerca, opzionalmente con una query iniziale.
findalo.search(query) Apre il widget di ricerca ed esegue la query.
findalo.close() Chiude il widget di ricerca.
findalo.tenant Slug del motore di ricerca (sola lettura).
findalo.lang Lingua attiva del widget (sola lettura).
findalo.version Versione dell'API JS (sola lettura).
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.

Garanzia: i nomi degli eventi e le chiavi dei loro payload sono contratto stabile — possiamo aggiungere campi nuovi, mai rinominare né eliminare quelli esistenti.