Eventos e API JavaScript
O widget expõe window.findalo:
um bus de eventos de tudo o que acontece na pesquisa e métodos para a controlar a partir do seu código.
O seu JS pode viver na sua loja ou no editor do painel (Aparência → Avançado).
Eventos
| Evento | Payload | Quando |
|---|---|---|
| search | { query, total, took_ms, match_mode, lang } | Cada pesquisa executada (query de 2+ caracteres). match_mode indica se os resultados são diretos ou sugeridos («fallback»). |
| zero | { query, total: 0, took_ms, match_mode, lang } | Pesquisa com 0 resultados. Raro: o widget nunca deixa o ecrã vazio — o sinal real de «sem resultados» é search com match_mode «fallback». |
| click | { product_id, product_name, product_url, price, currency, query, position } | Clique num produto dos resultados. |
| add-to-cart | { product_id, product_name, price, currency, quantity, cart_count } | Produto adicionado ao carrinho a partir da pesquisa. |
| quick-view | { product_id, product_name, product_url, price, currency, query, position } | Abertura da vista rápida de um produto. |
| cart-open | { cart_count } | Abertura do painel do carrinho a partir do cabeçalho da pesquisa. |
| express-purchase | { payment_intent, order_id, reference } | Compra concluída via checkout expresso (se estiver ativo). |
| open | { prefill } | Abertura da pesquisa. prefill leva a query inicial, se existir. |
| close | {} | Fecho da pesquisa. |
| 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. |
Exemplos
Enviar as pesquisas para o seu GA4
findalo.on('search', (e) => {
gtag?.('event', 'site_search', { search_term: e.query, results: e.total });
}); (Para o GA4 há integração sem código no painel — Analítica → Reencaminhamento para o seu GA4. Escreva a sua só se precisar de algo diferente.)
Detetar pesquisas sem resultados reais
// O widget nunca deixa o ecrã vazio: se nada corresponde, mostra
// sugeridos com match_mode 'fallback'. Esse é o sinal real de
// «sem resultados» — o evento 'zero' quase nunca dispara.
findalo.on('search', (e) => {
if (e.match_mode === 'fallback') {
// ex. abrir o seu chat de suporte com a query
}
}); Abrir a pesquisa a partir dos seus próprios elementos
document.querySelector('#hero-buscar')
?.addEventListener('click', () => findalo.open());
// ou diretamente com uma query:
findalo.search('crema hidratante'); Métodos e propriedades
| Método / propriedade | O que faz |
|---|---|
| findalo.on(evento, callback) | Subscreve um evento do bus. Devolve uma função para anular a subscrição. |
| findalo.open(query?) | Abre a pesquisa, opcionalmente com uma query inicial. |
| findalo.search(query) | Abre a pesquisa e executa a query. |
| findalo.close() | Fecha a pesquisa. |
| findalo.tenant | Slug do motor de pesquisa (apenas leitura). |
| findalo.lang | Idioma ativo do widget (apenas leitura). |
| findalo.version | Versão da API JS (apenas leitura). |
| 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: os nomes dos eventos e as chaves dos seus payloads são contrato estável — podemos adicionar campos novos, nunca renomear nem eliminar os existentes.