Esdeveniments i API JavaScript
El widget exposa window.findalo:
un bus d'esdeveniments de tot el que passa al cercador i mètodes per controlar-lo des del teu codi.
El teu JS pot viure a la teva botiga o a l'editor del panell (Aparença → Avançat).
Esdeveniments
| Esdeveniment | Payload | Quan |
|---|---|---|
| search | { query, total, took_ms, match_mode, lang } | Cada cerca executada (query de 2+ caràcters). match_mode indica si els resultats són directes o suggerits («fallback»). |
| zero | { query, total: 0, took_ms, match_mode, lang } | Cerca amb 0 resultats. Rar: el cercador mai no deixa la pantalla buida — el senyal real de «sense resultats» és search amb match_mode «fallback». |
| click | { product_id, product_name, product_url, price, currency, query, position } | Clic en un producte dels resultats. |
| add-to-cart | { product_id, product_name, price, currency, quantity, cart_count } | Producte afegit a la cistella des del cercador. |
| quick-view | { product_id, product_name, product_url, price, currency, query, position } | Obertura de la vista ràpida d'un producte. |
| cart-open | { cart_count } | Obertura del panell de la cistella des de la capçalera del cercador. |
| express-purchase | { payment_intent, order_id, reference } | Compra completada via checkout exprés (si està actiu). |
| open | { prefill } | Obertura del cercador. prefill porta la query inicial si n'hi ha. |
| close | {} | Tancament del cercador. |
| 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. |
Exemples
Enviar les cerques al teu GA4
findalo.on('search', (e) => {
gtag?.('event', 'site_search', { search_term: e.query, results: e.total });
}); (Per a GA4 hi ha integració sense codi al panell — Analítica → Reenviament al teu GA4. Escriu la teva només si necessites alguna cosa diferent.)
Detectar cerques sense resultats reals
// El cercador mai no deixa la pantalla buida: si res no casa, mostra
// suggerits amb match_mode 'fallback'. Aquest és el senyal real de
// «sense resultats» — l'esdeveniment 'zero' gairebé mai dispara.
findalo.on('search', (e) => {
if (e.match_mode === 'fallback') {
// p. ex. obrir el teu xat de suport amb la query
}
}); Obrir el cercador des dels teus propis elements
document.querySelector('#hero-buscar')
?.addEventListener('click', () => findalo.open());
// o directament amb una query:
findalo.search('crema hidratante'); Mètodes i propietats
| Mètode / propietat | Què fa |
|---|---|
| findalo.on(esdeveniment, callback) | Se subscriu a un esdeveniment del bus. Retorna una funció per desubscriure's. |
| findalo.open(query?) | Obre el cercador, opcionalment amb una query inicial. |
| findalo.search(query) | Obre el cercador i executa la query. |
| findalo.close() | Tanca el cercador. |
| findalo.tenant | Slug del cercador (només lectura). |
| findalo.lang | Idioma actiu del widget (només lectura). |
| findalo.version | Versió de l'API JS (només 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. |
Garantia: els noms dels esdeveniments i les claus dels seus payloads són contracte estable — podem afegir camps nous, mai no renomenar ni eliminar els existents.