Por qué Google Analytics no te dice lo que pasa en tu tienda
Medido hoy en una tienda WooCommerce real: 47.956 búsquedas en un mes, y ninguna cambió la URL, que es lo único que mira Google Analytics para detectar una búsqueda. Tampoco sabría cuáles devolvieron cero resultados: su evento no lleva ese dato. Aquí está qué se le escapa a GA en una tienda y cómo registrarlo tú hoy, con un mu-plugin de 30 líneas.
Google Analytics es la respuesta por defecto a «¿cómo sé qué pasa en mi tienda?». Se pega el código, salen gráficas, y parece que ya está medido todo.
He comprobado hoy qué ve de verdad en una tienda WooCommerce real. En concreto, de la parte que más cosas dice de un cliente: lo que escribe en el buscador.
Estos son los datos de una tienda de coleccionismo, del 11 de agosto al 10 de septiembre de 2026 (31 días), sacados del registro de su buscador:
| Búsquedas | 47.956 |
| Sesiones que buscaron algo | 10.817 |
| Sesiones que buscaron y no hicieron clic en nada | 5.898 (54,5 %) |
| Sesiones que buscaron y acabaron en pedido | 69 |
| Facturación de esos pedidos | 5.713,80 € |
(Una búsqueda es una búsqueda completa, no una pulsación de tecla: «lu», «luf» y «luffy» escritos seguidos cuentan como una.)
Ahora la pregunta: ¿cuántas de esas 47.956 aparecen en el informe de búsquedas de Google Analytics?
GA solo ve una búsqueda si cambia la URL
Lo he comprobado hoy, 11 de septiembre de 2026, en la ayuda oficial de Google Analytics. La medición mejorada de GA4 registra una búsqueda (el evento view_search_results) cuando se carga una página de resultados, y la reconoce por un parámetro en la URL. Por defecto, cinco: q, s, search, query y keyword.
El buscador nativo de WooCommerce funciona así: buscas y te lleva a tutienda.com/?s=luffy&post_type=product. GA lo ve.
Pero casi todos los buscadores modernos —el de esta tienda incluido, y la mayoría de plugins de búsqueda «instantánea»— enseñan los resultados en la misma página, mientras escribes, sin navegar a ninguna URL. He revisado el código del buscador de esta tienda: no toca la URL en ningún momento, y al elegir un producto lo abre directamente.
Así que la respuesta es: ninguna. Cero de 47.956. No porque GA esté mal configurado, sino porque está pensado para páginas de resultados y aquí no hay página de resultados.
Y aunque las viera, le faltaría lo importante
Supongamos que tu buscador sí usa ?s=. GA ya ve la búsqueda. ¿Qué guarda?
Según la misma documentación, el evento lleva el término buscado (search_term). Nada más. No lleva cuántos resultados salieron.
Eso significa que GA no te puede decir, sin configurar nada extra, lo que más necesitas saber de tu buscador: qué búsquedas se quedan en cero. Cuál es el producto que te piden y no tienes, o que tienes y no se encuentra porque se llama distinto. Esa lista es probablemente la más rentable de toda tu analítica, y el informe estándar no la tiene.
Lo que se queda fuera, con nombres
Vuelve a la tabla de arriba. 5.898 sesiones buscaron algo y no hicieron clic en ningún resultado. Más de la mitad.
Son personas que escribieron con sus propias palabras qué querían comprar. No hay dato más directo en una tienda: no es una visita que puede ser un bot, ni un clic que puede ser un error. Es alguien diciéndote «busco esto». Y se fueron sin tocar nada de lo que les enseñaste.
En Google Analytics, esas sesiones son visitas que duraron poco. No hay forma de saber que buscaron, ni qué, ni que no les convenció lo que salió.
El otro agujero: el consentimiento
Una comprobación más, hecha hoy sobre el HTML de la home de esta misma tienda. Carga Google Tag Manager con un gestor de cookies, y arranca con esto:
gtag("consent", "default", {
"analytics_storage": "denied",
"ad_storage": "denied",
...
});
Es lo correcto en Europa y es lo que tiene que hacer. Pero tiene una consecuencia: hasta que el visitante acepta las cookies, GA no puede guardar cookies de analítica, así que no puede seguir a esa persona de una página a otra como una sola visita. Cuánta gente rechaza el banner varía mucho de tienda a tienda, y no voy a inventarme una cifra: mira la tuya en el panel de tu gestor de cookies.
Lo que sí se puede decir es que un registro de búsquedas en tu propio servidor, sin cookies y sin guardar datos personales, no depende de ese banner.
Cómo registrar tú las búsquedas, hoy
Esto funciona si tu tienda usa el buscador nativo de WooCommerce (o cualquier buscador que acabe en una página ?s=). Guarda esto como wp-content/mu-plugins/registro-busquedas.php. La carpeta mu-plugins la puedes crear si no existe; lo que hay dentro se activa solo:
<?php
/**
* Plugin Name: Registro de búsquedas
* Description: Guarda cada búsqueda de la tienda con cuántos resultados devolvió.
*/
add_action('template_redirect', function () {
if (is_admin() || !is_search() || is_paged()) {
return;
}
global $wpdb, $wp_query;
$tabla = $wpdb->prefix . 'wr_busquedas';
// Crea la tabla la primera vez.
if (get_option('wr_busquedas_v') !== '1') {
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta("CREATE TABLE $tabla (
id bigint unsigned NOT NULL AUTO_INCREMENT,
termino varchar(200) NOT NULL,
resultados int unsigned NOT NULL,
creado datetime NOT NULL,
PRIMARY KEY (id),
KEY termino (termino)
) {$wpdb->get_charset_collate()};");
update_option('wr_busquedas_v', '1');
}
// Solo el término y el número de resultados: nada de IP ni de usuario.
$wpdb->insert($tabla, [
'termino' => mb_substr(mb_strtolower(trim(get_search_query(false))), 0, 200),
'resultados' => (int) $wp_query->found_posts,
'creado' => current_time('mysql', true),
]);
});
No guarda la IP, ni el usuario, ni ninguna cookie. Solo qué se buscó y cuántos resultados salieron. Y como corre en tu servidor, cuenta todas las búsquedas, hayan aceptado el banner o no.
Déjalo una semana y pregunta a tu base de datos lo que GA no sabe contestarte:
-- Las búsquedas que devuelven cero, de más a menos repetidas
SELECT termino, COUNT(*) AS veces
FROM wp_wr_busquedas
WHERE resultados = 0
AND creado >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY termino
ORDER BY veces DESC
LIMIT 50;
-- Qué parte de tus búsquedas se queda en cero
SELECT
COUNT(*) AS busquedas,
SUM(resultados = 0) AS en_cero,
ROUND(100 * SUM(resultados = 0) / COUNT(*), 1) AS pct_cero
FROM wp_wr_busquedas
WHERE creado >= DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 DAY);
(Cambia wp_ por el prefijo de tus tablas si lo tienes distinto.)
La primera lista es tu tarea de la semana. Cada término que se repite es una de tres cosas: un producto que no tienes y te piden, un producto que tienes con otro nombre, o una falta de ortografía que tu buscador no perdona. Las tres se arreglan.
Si además quieres verlo en Google Analytics
Si ya vives en GA y quieres el número de resultados allí, añade esto al mismo archivo. Empuja un evento a Tag Manager con el término y los resultados:
add_action('wp_footer', function () {
if (!is_search()) {
return;
}
global $wp_query;
printf(
'<script>window.dataLayer=window.dataLayer||[];dataLayer.push(%s);</script>',
wp_json_encode([
'event' => 'busqueda_tienda',
'search_term' => get_search_query(false),
'search_results' => (int) $wp_query->found_posts,
])
);
});
En Tag Manager, crea una etiqueta de evento de GA4 que se dispare con el evento personalizado busqueda_tienda y mande search_term y search_results como parámetros. Después registra search_results como dimensión personalizada en GA4 para poder filtrar por él. Recuerda que esto sigue sujeto al consentimiento: lo que te dé GA será la parte de tus visitantes que aceptó.
Si tu buscador no cambia la URL
Entonces el mu-plugin de arriba no te sirve: tu buscador no pasa por la página de búsqueda de WordPress. Tienes dos caminos:
- Mira si tu plugin de búsqueda ya guarda sus propias estadísticas. Muchos lo hacen y nadie abre esa pantalla. Busca en su menú algo como «Analytics», «Estadísticas» o «Search log», y busca en concreto si enseña las búsquedas sin resultados.
- Si no las guarda, pide al proveedor que te diga cómo recibir un aviso por cada búsqueda con su número de resultados. Si no hay forma, sabes que estás a ciegas en la parte más valiosa de tu tienda.
Por orden, lo que yo haría:
- Comprueba si tu buscador cambia la URL. Busca algo en tu tienda y mira la barra de direcciones. Si no aparece
?s=, Google Analytics no está viendo tus búsquedas. - Pega el
mu-pluginde registro (o abre las estadísticas de tu plugin de búsqueda). - Pasada una semana, saca la lista de búsquedas en cero. Es la lista de cosas que tus clientes te han pedido y no les has dado.
- Arregla las cinco primeras. Un producto, un sinónimo o una errata cada una.
GA es buena herramienta para saber de dónde viene la gente. No está hecha para saber qué quería cuando llegó, y en una tienda eso es lo que vende. Si quieres ver por qué el buscador es la fuente de datos más directa de una tienda, está la guía de cómo elegir un buscador para ecommerce, con los precios de cada opción comprobados. Y los números de este artículo salen de WildRock, que registra cada búsqueda, su resultado y si terminó en pedido.
¿Tu tienda pierde ventas por búsquedas que no encuentran nada?
WildRock añade a tu WooCommerce un buscador que entiende lo que tus clientes quieren decir, y te dice en euros cuánto te está generando. Plugin gratuito, sin tocar código.
Seguir leyendo
Sinónimos en el buscador de WooCommerce: 495 búsquedas en cero por escribirlo distinto
«blue lock» encuentra 22 productos; «bluelock», cero. Medido hoy en una tienda real: seis palabras que el cliente escribe de otra forma que el catálogo sumaron 495 búsquedas en 68 días, y la tienda tenía cero sinónimos configurados. Cómo encontrar los tuyos y arreglarlos hoy.
Carritos abandonados en WooCommerce: qué se recupera de verdad
Medido en una tienda WooCommerce real: de la búsqueda al pedido pasan 7,5 minutos de mediana, y el 90 % de los pedidos ocurre en la primera hora. El correo de carrito abandonado llega cuando ya se decidió. Aquí está dónde se pierde de verdad, y cómo leer hoy los carritos que ya tienes guardados en tu base de datos.
