Google Indexing API para Magento 2
Requiere cambios en la plantilla
No
Pequeños cambios
Cambios significativos
Se requieren conocimientos de programación
No
Básico
Avanzado
Dificultad de configuración
Repercusión en el rendimiento
Compatibilidad con los estándares de Magento
Notificación más rápida a Google sobre los cambios en la tienda
El módulo Kowal Google Indexing API para Magento 2 ayuda a notificar a Google de forma más eficiente las URL que se han añadido, modificado o que deberían eliminarse del índice. En lugar de esperar únicamente a que el robot de Google vuelva a visitar la página de forma estándar, el administrador puede enviar las direcciones seleccionadas a una cola gestionada por Google Indexing API.
La solución resulta especialmente útil en tiendas donde cambian con frecuencia los contenidos, la oferta, la disponibilidad de productos, las páginas CMS, las landing pages o las entradas del blog. El módulo organiza todo el proceso: recopila direcciones desde distintos lugares de Magento, las verifica, elimina duplicados, controla los límites y guarda el historial de comunicación con Google.
Google Indexing API está destinada oficialmente sobre todo a sitios con datos estructurados
JobPostingyBroadcastEvent. El envío de una URL mediante la API no garantiza la indexación, la posición en los resultados ni la aceptación de cada dirección por parte de Google. El módulo es una herramienta de apoyo para la notificación técnica de URL y no un sustituto de un SEO técnico correcto, sitemap XML, canonical, robots, hreflang y enlazado interno.
Ventajas principales
Mejor control sobre el envío de direcciones
El módulo ofrece al administrador un único lugar para gestionar las URL pendientes de envío a Google. Productos, categorías, páginas CMS, importación manual de URL y futuras fuentes pueden usar la misma cola. Gracias a ello, no es necesario crear integraciones separadas para cada tipo de contenido.
Menos trabajo manual tras los cambios en la tienda
Las direcciones pueden añadirse a la cola directamente desde el panel de administración de Magento. El módulo proporciona acciones masivas y botones en las pantallas de edición de las entidades seleccionadas, por lo que el administrador puede solicitar rápidamente la indexación de una sola página o de un grupo mayor de direcciones.
Uso más seguro de los límites de la API
Google Indexing API funciona con límites. El módulo tiene en cuenta los límites diarios y por minuto, el tamaño del lote procesado por cron y el retraso de envío. Así, las direcciones no se envían de forma caótica y es más fácil reducir el riesgo de consumir innecesariamente el límite disponible.
Menos duplicados y envíos repetidos
Antes de guardar una dirección, el módulo normaliza la URL, la valida y comprueba si esa misma dirección ya está esperando en la cola activa. Si ya existe un envío similar, el sistema puede actualizarlo o marcarlo como deduplicado. Esto reduce el desorden en la cola y disminuye el número de requests innecesarios a Google.
Mayor transparencia para el equipo
Cada envío tiene estado, origen, acción, prioridad, número de intentos, fecha de envío planificada e información sobre la respuesta de Google. El administrador ve qué direcciones están pendientes, cuáles se han enviado correctamente, cuáles requieren reintento y cuáles han terminado con un error permanente.
Diagnóstico de problemas más sencillo
El módulo guarda logs de la comunicación con Google API, incluido el tipo de request, la dirección del endpoint, el payload, el estado HTTP, el contenido de la respuesta y la duración. Esto facilita el análisis de errores relacionados con la configuración, los permisos, los límites o las propias URL notificadas.
Preparado para el crecimiento de la tienda
La arquitectura del módulo se basa en un scheduler y una cola compartidos. Las nuevas fuentes de URL no tienen que comunicarse directamente con Google. Basta con que envíen las direcciones a la cola y el procesador existente se encargará de la validación, la programación, los límites, los reintentos y el registro.
Cómo funciona el módulo en la práctica
El módulo actúa como una capa intermedia entre Magento y Google Indexing API.
- El administrador o la integración selecciona las URL que se van a enviar.
- El módulo normaliza y valida las URL, entre otros aspectos en cuanto a esquema, host y fuentes permitidas.
- Las direcciones válidas pasan a una cola central con el estado, la acción y la fecha de envío adecuados.
- El cron de Magento recoge periódicamente los registros listos para procesar.
- El procesador de la cola respeta los límites, prioridades, retrasos y bloqueos de registros.
- El módulo envía la notificación a Google Indexing API o realiza el procesamiento en modo dry-run.
- La respuesta de Google se guarda en el registro de la cola y en los logs de la API.
- En caso de errores temporales, el módulo puede programar un reintento con retraso.
Gracias a ello, el envío de URL no depende de un solo clic ni de un request directo desde el panel de administración. Todo el proceso se gestiona mediante cola, es auditable y más resistente a problemas temporales con la API.
Funciones principales
- cola central de URL para distintas fuentes de contenido,
- compatibilidad con las acciones
URL_UPDATEDyURL_DELETED, - importación manual de múltiples URL desde el panel de administración,
- acciones masivas para productos y páginas CMS,
- botones para solicitar la indexación en las pantallas de edición de producto, categoría y página CMS,
- integración opcional con Amasty Blog como módulo independiente,
- normalización y validación de URL,
- whitelist de hosts permitidos,
- compatibilidad con store view e identificación del origen del envío,
- deduplicación de envíos activos,
- retraso de envío, es decir, indexing lag,
- prioridades y acción
Transmit Now, - procesamiento mediante cron,
- control del límite diario y por minuto,
- reintento de errores temporales con retraso,
- estados de la cola:
scheduled,pending,processing,success,retry,failed_permanent,cancelled, - modo dry-run para pruebas seguras sin enviar requests reales,
- logs de API y retención de logs,
- test credentials y metadata en el asistente de configuración.
Para quién es este módulo
El módulo es adecuado para tiendas Magento 2 que:
- actualizan con frecuencia su catálogo de productos,
- publican o modifican muchas páginas CMS,
- realizan acciones SEO sobre varios tipos de contenido,
- necesitan controlar qué URL se han enviado a Google,
- quieren reducir la gestión manual de los envíos,
- trabajan en un entorno multistore o multilanguage,
- necesitan una auditoría clara de los requests a Google.
Esta solución es especialmente valiosa para equipos de e-commerce, SEO y administración que quieren disponer de un proceso común y ordenado para notificar a Google los cambios en la tienda.
Ejemplos de uso
Productos nuevos o modificados
Tras añadir un producto nuevo o realizar un cambio importante en uno existente, el administrador puede enviar su dirección a la cola. El módulo se encargará de guardar el envío, aplicar el retraso adecuado, deduplicarlo y enviarlo posteriormente.
Actualización de páginas CMS y landing pages
Cuando el equipo de marketing publica una nueva campaña, promoción o página informativa, la URL puede añadirse a la cola sin trabajo manual fuera de Magento.
Organización de direcciones tras cambios en el sitio
El módulo no solo admite notificaciones de actualización, sino también la acción URL_DELETED. Gracias a ello, es posible informar a Google sobre direcciones que deberían eliminarse del índice, siempre que ese escenario sea conforme con las normas de uso de la API.
Acciones SEO masivas
Ante cambios más amplios en la tienda, como la actualización de muchos productos, la migración de contenidos o la renovación de categorías, el administrador puede usar acciones masivas y seguir el progreso en la cola.
Resultado de negocio
La implantación del módulo proporciona al equipo un mayor control sobre la notificación técnica de cambios a Google. En lugar de acciones dispersas, manuales y difíciles de verificar, se crea un único proceso: la dirección entra en la cola, pasa la validación, se envía respetando los límites y el resultado queda visible en el panel de administración.
El valor principal del módulo es organizar el trabajo en torno a la indexación: menos requests aleatorios, menos duplicados, mejor diagnóstico y una responsabilidad más clara sobre lo que se ha enviado a Google.
Google Indexing API para Magento 2 - instalación y configuración
1. Información importante antes de la implantación
El módulo integra Magento 2 con Google Indexing API y permite añadir URL a una cola central de envíos. La cola es procesada por el cron de Magento, y cada envío se valida, se deduplica, está sujeto a límites y se registra.
Según la documentación de Google, Indexing API está destinada oficialmente principalmente a páginas con datos estructurados:
JobPosting,BroadcastEventincrustado enVideoObject.
El uso de la API para productos, categorías, páginas CMS o entradas de blog no garantiza la indexación ni la posición en los resultados de búsqueda. El módulo debe tratarse como una herramienta técnica para notificar URL y no como un sustituto del sitemap XML, canonical correctos, robots, hreflang, enlazado interno y la calidad general del SEO.
Materiales oficiales de Google:
- https://developers.google.com/search/apis/indexing-api/v3/quickstart
- https://developers.google.com/search/apis/indexing-api/v3/prereqs
- https://developers.google.com/search/apis/indexing-api/v3/using-api
- https://developers.google.com/search/apis/indexing-api/v3/quota-pricing
2. Requisitos
Antes de la instalación, asegúrate de que el entorno cumple los requisitos:
- Magento 2.4.x,
- PHP 8.1 o superior,
- Composer,
- cron de Magento en funcionamiento,
- posibilidad de instalar el paquete
google/apiclient, - acceso administrativo a Magento,
- proyecto de Google Cloud con Indexing API habilitada,
- propiedad en Google Search Console verificada para el dominio de la tienda,
- cuenta de servicio de Google añadida como propietaria en Google Search Console.
El módulo requiere el paquete:
google/apiclient:^2.16El paquete está declarado en el composer.json del módulo, por lo que Composer debería instalarlo automáticamente.
3. Instalación del módulo
3.1. Instalación mediante Composer desde un repositorio VCS
Si el módulo se instala desde un repositorio Git privado o público, añade el repositorio al proyecto Magento:
composer config repositories.kowal.google.indexing.api vcs https://github.com/kowalco/google-indexing-apiSi el repositorio es privado, configura el token de GitHub:
composer config --global --auth github-oauth.github.com Instala el paquete:
composer require kowal/module-google-indexing-apiActiva el módulo:
bin/magento module:enable Kowal_GoogleIndexingApiEjecuta la actualización del esquema de base de datos:
bin/magento setup:upgradeLimpia la caché:
bin/magento cache:flushEn modo producción, ejecuta además:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.2. Instalación local en app/code
Si el módulo se instala sin Composer como código local, colócalo en el directorio:
app/code/Kowal/GoogleIndexingApiA continuación, instala la dependencia Google API Client en el proyecto Magento:
composer require google/apiclient:^2.16Activa el módulo y ejecuta los comandos estándar de Magento:
bin/magento module:enable Kowal_GoogleIndexingApibin/magento setup:upgradebin/magento cache:flushPara producción:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.3. Verificación de la instalación
Comprueba si el módulo está activo:
bin/magento module:status Kowal_GoogleIndexingApiTras una instalación correcta, en el panel de administración deberían estar disponibles:
Stores > Configuration > Kowal > Google Indexing API,- menú de administración
Google Indexing API > Indexing Queue, Google Indexing API > Import URLs,Google Indexing API > API Logs,Google Indexing API > Setup Assistant.
En la base de datos deberían crearse las tablas:
kowal_google_indexing_queue,kowal_google_indexing_api_log.
4. Preparación de Google Cloud y Search Console
4.1. Creación de un proyecto de Google Cloud
- Accede a Google Cloud Console.
- Crea un proyecto nuevo o selecciona un proyecto existente usado para la tienda.
- Habilita la API:
Indexing APISin la API habilitada, el módulo no podrá enviar notificaciones correctamente.
4.2. Creación de una cuenta de servicio
- En Google Cloud, ve a
IAM & Admin > Service Accounts. - Crea una nueva cuenta de servicio.
- Genera una clave en formato JSON.
- Descarga el archivo JSON y guárdalo de forma segura.
El módulo requiere que el JSON contenga al menos los campos:
type,project_id,private_key,client_email.
El campo type debe tener el valor:
service_account4.3. Añadir la cuenta de servicio como propietaria en Search Console
- Abre Google Search Console.
- Selecciona la propiedad correspondiente al dominio de la tienda.
- Asegúrate de que la propiedad está verificada.
- Añade la dirección
client_emaildel archivo JSON como propietaria de la propiedad.
Ejemplo de dirección de cuenta de servicio:
my-service-account@project-name.iam.gserviceaccount.comSi la cuenta de servicio no es propietaria de la propiedad en Search Console, Google puede devolver errores de permisos, por ejemplo, falta de confirmación de propiedad de la URL.
5. Configuración del módulo en Magento
La configuración se encuentra en:
Stores > Configuration > Kowal > Google Indexing APILa configuración admite los ámbitos de Magento:
- Default Config,
- Website,
- Store View.
Gracias a ello, es posible tener ajustes separados para diferentes tiendas o vistas de tienda, si el proyecto lo requiere.
6. Sección General
Enable
Por defecto:
NoActiva o desactiva el funcionamiento del módulo.
Cuando el campo tiene el valor No, el cron no procesa la cola. Las direcciones pueden existir en la base de datos, pero el procesador de la cola no las enviará a Google.
Recomendación:
- durante la primera configuración establece
Noo dejaDry Run = Yes, - tras las pruebas correctas establece
Yes.
Dry Run
Por defecto:
YesModo de prueba. Cuando Dry Run está activado, el módulo procesa los registros de la cola, guarda estados y logs, pero no envía una notificación real a Google.
Es el modo más seguro para la primera puesta en marcha, pruebas de configuración y comprobación de que las URL llegan a la cola según lo esperado.
Recomendación:
- realiza siempre las primeras pruebas con
Dry Run = Yes, - desactiva
Dry Runsolo después de verificar credentials, allowed hosts, cola y logs.
7. Sección Google Access Credentials
Credentials Source
Por defecto:
Encrypted configuration valueDefine de dónde obtiene el módulo el JSON de la cuenta de servicio de Google.
Opciones disponibles:
| Opción | Valor técnico | Descripción |
|---|---|---|
Encrypted configuration value | config | El JSON se pega en la configuración de Magento y se guarda como valor cifrado de sensitive config. |
Uploaded JSON file | file | El JSON se sube como archivo y se guarda fuera del directorio pub, en var/google-indexing. |
Recomendación:
- para implantaciones sencillas se puede usar el valor cifrado en la configuración,
- para entornos con control de acceso a archivos, puede resultar más cómodo subir el archivo JSON.
Service Account JSON
Visible cuando Credentials Source = Encrypted configuration value.
En este campo hay que pegar el contenido completo del archivo JSON de la cuenta de servicio de Google.
El módulo valida el JSON antes de guardarlo. Se comprueban:
- la validez del formato JSON,
- la presencia de los campos
type,project_id,private_key,client_email, - el valor
type = service_account.
El valor se guarda como configuración cifrada de Magento.
Service Account JSON File
Visible cuando Credentials Source = Uploaded JSON file.
Permite subir el archivo JSON de la cuenta de servicio de Google.
El módulo:
- acepta solo archivos con extensión
.json, - valida el contenido del archivo,
- comprueba los campos requeridos
type,project_id,private_key,client_email, - guarda el archivo fuera del directorio público, en
var/google-indexing, - intenta establecer permisos del archivo en
0600, si el controlador de archivos lo permite.
El archivo se guarda con un nombre dependiente del ámbito de configuración, por ejemplo, para el ámbito global:
var/google-indexing/service-account-default-0.jsonGoogle Cloud Project ID
Campo de texto para el identificador del proyecto de Google Cloud.
En la implementación actual del módulo, la autorización principal se basa en los datos del JSON de la cuenta de servicio. El campo Google Cloud Project ID cumple una función informativa y de organización de la configuración, especialmente cuando la tienda utiliza varios entornos o varios proyectos de Google Cloud.
Recomendación:
- introduce el valor
project_iddel archivo JSON, - usa proyectos de Google Cloud separados para entornos de producción y de pruebas, si esa separación forma parte del proyecto.
8. Sección Queue and Limits
Daily Publish Limit
Por defecto:
200Define el número máximo de envíos publish que el módulo puede realizar al día.
El limitador cuenta los requests de tipo:
publish,publish_dry_run.
Si se alcanza el límite, el procesador de la cola no recogerá más registros para enviar hasta la siguiente ventana diaria.
Recomendación:
- deja
200si el proyecto utiliza el límite onboarding predeterminado de Google, - aumenta el valor solo cuando el proyecto de Google Cloud tenga aprobado un límite superior,
- el valor
0bloquea el envío, ya que el número de slots disponibles será0.
Requests Per Minute Limit
Por defecto:
60Define el número máximo de requests publish por minuto.
El módulo compara este valor con el número de requests guardados en los logs del último minuto. Si se ha agotado el límite por minuto, el cron no procesará más registros en esa ejecución.
Recomendación:
- para una implantación típica, deja el valor por defecto,
- reduce el valor si quieres cargar la API de forma más conservadora,
- no establezcas
0, salvo que quieras detener temporalmente el envío.
Cron Batch Size
Por defecto:
20Define el número máximo de registros de la cola procesados en una sola ejecución del cron.
El número real de registros procesados también está limitado por:
Daily Publish Limit,Requests Per Minute Limit,- el número de registros listos para enviar,
- el estado y la fecha
scheduled_at.
Recomendación:
20es un valor inicial seguro,- con colas grandes se puede aumentar el valor, pero solo teniendo en cuenta los límites de Google.
Default Indexing Lag (minutes)
Por defecto:
15Define el retraso predeterminado entre añadir una URL a la cola y el momento a partir del cual puede enviarse.
El retraso ayuda a:
- reducir duplicados,
- evitar envíos tras cada pequeño cambio,
- dar al administrador tiempo para corregir contenidos,
- gestionar mejor el límite de la API.
En la implementación actual, este ajuste se utiliza cuando el envío no tiene su propio retraso.
Manual Form Indexing Lag (minutes)
Por defecto:
15Define el retraso para las URL añadidas mediante el formulario:
Google Indexing API > Import URLsSi el administrador pega manualmente una lista de URL, cada dirección válida se programará con este retraso.
Recomendación:
- establece
0si la importación manual debe entrar en la cola de inmediato, - deja
15si quieres mantener un margen para la deduplicación y el control de envíos.
Mass Action Indexing Lag (minutes)
Por defecto:
15Define el retraso para las URL añadidas mediante:
- acciones masivas de productos,
- acciones masivas de páginas CMS,
- botones para solicitar la indexación en las pantallas de edición de producto, categoría y página CMS.
Recomendación:
- para operaciones masivas, deja el valor
15o superior, - para tiendas pequeñas y trabajo administrativo manual puede considerarse un valor inferior.
Max Attempts
Por defecto:
5Define el número máximo de intentos de envío de un registro de cola.
Si Google devuelve un error temporal, el módulo establecerá el estado retry, siempre que el número de intentos sea inferior a Max Attempts. Al superar el límite, el registro recibirá el estado failed_permanent.
Errores tratados como temporales:
408,409,412,429,500,502,503,504.
Retry Delay (minutes)
Por defecto:
15Retraso básico antes del siguiente intento de envío tras un error temporal.
El cron utiliza un retraso creciente. El multiplicador depende del número de intentos y está limitado a un máximo de 24. Gracias a ello, los intentos posteriores no se realizan de forma demasiado agresiva.
Ejemplo para el valor 15:
| Intento | Retraso aproximado |
|---|---|
| 1 | 15 minutos |
| 2 | 30 minutos |
| 3 | 60 minutos |
| 4 | 120 minutos |
Allowed Source Types
Por defecto:
manual,product,category,cms_page,amasty_blog_postLista de tipos de origen permitidos, separados por comas.
Valores admitidos:
| Valor | Significado |
|---|---|
manual | URL añadida manualmente mediante el formulario de importación. |
product | URL de producto. |
category | URL de categoría. |
cms_page | URL de página CMS. |
amasty_blog_post | URL de entrada de Amasty Blog, si se utiliza un módulo de integración independiente. |
Si el tipo de origen no está en la lista, el scheduler omitirá el envío y lo marcará como skipped.
Recomendación:
- deja los valores predeterminados si la tienda utiliza todas las fuentes estándar,
- elimina las fuentes que no quieras permitir en la cola.
Allowed URL Hosts
Por defecto:
vacíoLista de hosts de URL permitidos, separados por comas.
Ejemplo:
example.com,www.example.comSi la lista está completada, el módulo aceptará solo direcciones pertenecientes a los hosts indicados. Si la URL tiene otro host, la validación devolverá el error:
host_not_allowedRecomendación:
- en producción, completa siempre esta lista,
- añade todos los hosts utilizados por la tienda, por ejemplo, el dominio principal, la versión
www, los dominios de store view y los dominios de idioma, - no añadas dominios de prueba a la configuración de producción.
Require HTTPS URLs
Por defecto:
YesObliga a que las URL notificadas utilicen el esquema https.
Si el campo está activado, una dirección con http será rechazada con el error:
https_requiredRecomendación:
- para tiendas en producción, deja
Yes, - usa
Nosolo en entornos de prueba excepcionales.
9. Sección Auto-Indexing
Enable Auto-Indexing
Por defecto:
NoEl campo está preparado para integraciones automáticas de guardado o eliminación de entidades y proveedores adicionales de URL.
En el alcance actual del módulo, están disponibles mecanismos manuales y administrativos para añadir URL a la cola, entre ellos importación de URL, Mass Actions y botones en formularios de edición.
Recomendación:
- deja
Nosi auto-indexing no se ha implantado en el proyecto, - actívalo solo cuando el proyecto incluya soporte para eventos automáticos de entidades que utilicen esta configuración.
10. Sección Logs
API Log Retention Days
Por defecto:
90Define el número de días durante los que se conservan los logs de la API.
El cron que limpia los logs se ejecuta cada día a las:
03:15Elimina las entradas más antiguas que el número de días establecido en este campo.
Recomendación:
90días es un valor razonable para diagnóstico,- con un gran número de requests se puede reducir la retención,
- en auditorías SEO se puede aumentar la retención, teniendo en cuenta el tamaño de la tabla de logs.
11. Asistente de instalación y configuración
El asistente se encuentra en:
Google Indexing API > Setup AssistantSu objetivo es comprobar rápidamente si la configuración en Magento y Google está lista para la primera prueba.
11.1. Sección Current Status
El asistente muestra el estado actual de los elementos más importantes:
| Campo | Significado |
|---|---|
Module | Informa si el módulo está activado en la configuración. |
Dry Run | Informa si está activo el modo de prueba sin envío real a Google. |
Credentials | Muestra si el módulo puede leer y parsear las credentials de Google. |
Service Account Email | Muestra el client_email del JSON de la cuenta de servicio. Esta dirección debe añadirse como propietaria en Search Console. |
Allowed Hosts | Muestra la lista de hosts permitidos en la configuración. |
Queue | Muestra el número de registros con estados scheduled, pending, retry y failed_permanent. |
Si Credentials tiene el estado Missing or invalid, hay que volver a la configuración y corregir el JSON o el archivo de credentials.
Si Allowed Hosts muestra Not configured, el módulo no restringe los hosts. Técnicamente puede funcionar, pero en producción se recomienda introducir explícitamente los hosts de la tienda.
11.2. Sección Setup Steps
El asistente muestra la lista de pasos necesarios antes del primer request real:
- Crear o seleccionar un proyecto de Google Cloud.
- Habilitar Indexing API y crear una JSON key para la cuenta de servicio.
- Pegar el JSON o subir el archivo JSON en la configuración de Magento.
- Añadir el service account email como propietario en Google Search Console.
- Ejecutar pruebas y luego importar una URL con
Dry Runactivado.
El asistente contiene enlaces a:
- Google Cloud para Indexing API,
- la configuración del módulo en Magento,
- Google Search Console.
11.3. Test Google Credentials
El botón:
Test Google Credentialscomprueba si Magento puede utilizar los datos de la cuenta de servicio para obtener un token OAuth para el alcance:
https://www.googleapis.com/auth/indexingUn resultado positivo significa que:
- el JSON es correcto,
- la clave privada puede utilizarse,
- Google ha emitido el token OAuth.
Un resultado negativo puede significar:
- JSON incorrecto,
private_keyerrónea o dañada,- falta de un campo requerido en el JSON,
- problema de comunicación con Google,
- uso de una clave que no es una clave de cuenta de servicio.
Esta prueba todavía no confirma que la cuenta de servicio tenga acceso de propietario al dominio en Search Console. Para ello hace falta la prueba de URL metadata o un envío real de una URL de prueba.
11.4. Test URL Metadata
El formulario:
Test URL Metadatapermite introducir una URL pública de un host permitido y realizar un request de metadata a Google Indexing API.
Antes de enviar el request, el módulo:
- normaliza la URL,
- comprueba si la URL es absoluta,
- comprueba el esquema
httpohttps, - si
Require HTTPS URLsestá activado, exigehttps, - comprueba
Allowed URL Hosts, si se han configurado.
Posibles resultados:
| Resultado | Significado |
|---|---|
| Éxito HTTP 2xx | Google ha devuelto metadata para la URL. |
| HTTP 404 | A menudo significa que la URL todavía no tiene un envío correcto previo mediante Indexing API. No necesariamente significa una configuración incorrecta. |
| Error de validación antes del request | La URL no cumple las condiciones del módulo, por ejemplo, host incorrecto, falta de HTTPS o dirección no absoluta. |
| Error HTTP distinto de 404 | Debe revisarse el mensaje de Google, los permisos de Search Console, las credentials y los límites. |
La prueba de metadata no crea un nuevo envío publish. Sirve para diagnosticar la conexión y el estado de la URL.
12. Primera puesta en marcha paso a paso
Orden recomendado para la primera puesta en marcha:
- Instala el módulo y ejecuta
setup:upgrade. - En Magento, ve a
Stores > Configuration > Kowal > Google Indexing API. - Establece
Enable = Yes. - Deja
Dry Run = Yes. - Selecciona la fuente de credentials.
- Pega el JSON de la cuenta de servicio o sube el archivo JSON.
- Rellena
Google Cloud Project IDcon el valorproject_iddel JSON. - Rellena
Allowed URL Hosts, por ejemplo,example.com,www.example.com. - Deja los límites predeterminados si Google no ha aprobado límites superiores.
- Guarda la configuración y limpia la caché.
- Ve a
Google Indexing API > Setup Assistant. - Comprueba si el asistente muestra las credentials como listas.
- Haz clic en
Test Google Credentials. - Añade el service account email como propietario en Google Search Console, si aún no se ha hecho.
- Ejecuta
Test URL Metadatapara una URL pública de un host permitido. - Ve a
Google Indexing API > Import URLs. - Añade una URL de prueba con la acción
URL_UPDATED. - Ejecuta el cron de Magento:
bin/magento cron:run- Comprueba
Google Indexing API > Indexing Queue. - Comprueba
Google Indexing API > API Logs. - Si todo funciona correctamente, desactiva
Dry Run. - Vuelve a añadir una URL de prueba y comprueba la respuesta real de Google.
13. Importación de URL desde el panel de administración
La importación manual se encuentra en:
Google Indexing API > Import URLsEl formulario contiene los campos:
| Campo | Descripción |
|---|---|
Action | Tipo de envío a Google: alta/actualización o eliminación. |
Store View | Store view al que debe asignarse el envío. También está disponible la opción global Use global/no store. |
URLs | Lista de URL absolutas, una dirección por línea. |
Acciones disponibles:
| Acción en el formulario | Valor API | Significado |
|---|---|---|
Submit URLs for indexing | URL_UPDATED | Informa a Google de que la URL se ha añadido o actualizado. |
Delete URLs from indexing | URL_DELETED | Informa a Google de que la URL se ha eliminado y puede retirarse del índice. |
Tras enviar el formulario, el módulo mostrará un resumen:
- añadidas,
- actualizadas,
- deduplicadas,
- incorrectas,
- omitidas.
Los primeros 10 mensajes de validación se muestran como notice en el panel de administración.
14. Cola de indexación
La cola se encuentra en:
Google Indexing API > Indexing QueueCada registro de la cola contiene, entre otros:
- URL,
- hash de la URL,
- store ID,
- website ID,
- tipo de origen,
- ID de la entidad de origen,
- origen del request,
- acción
URL_UPDATEDoURL_DELETED, - estado,
- prioridad,
- número de intentos,
- número máximo de intentos,
- fecha de envío planificada,
- fecha de procesamiento,
- último código de error,
- último motivo de error,
- último mensaje de error,
- respuesta de Google,
- información
created_by.
Estados de la cola
| Estado | Significado |
|---|---|
scheduled | La URL está programada, pero aún espera la fecha scheduled_at. |
pending | La URL está lista para ser procesada por el cron. |
processing | La URL se está procesando actualmente. |
success | Google devolvió una respuesta correcta. |
retry | Se produjo un error temporal y el registro espera un nuevo intento. |
failed_permanent | El envío terminó de forma definitiva o se superó el número máximo de intentos. |
cancelled | El registro fue cancelado manualmente. |
Acciones sobre los registros de la cola
| Acción | Funcionamiento |
|---|---|
Transmit Now | Marca el registro como urgente, lo bloquea, lo envía inmediatamente mediante el cliente de Google y guarda el resultado. |
Retry | Establece el registro como pending, limpia el bloqueo y programa un nuevo intento inmediato. |
Cancel | Establece el estado cancelled y limpia el bloqueo. |
Nota: Transmit Now realiza un request real si Dry Run = No. Con Dry Run = Yes se guardará un log de dry-run sin envío real a Google.
15. Cron
El módulo añade dos tareas cron en el grupo default.
Procesamiento de la cola
kowal_google_indexing_process_queuePlanificación:
*/5 * * * *La tarea ejecuta el procesador de la cola cada 5 minutos.
El procesador:
- Comprueba si el módulo está activado.
- Libera bloqueos antiguos de registros
processingcon más de 30 minutos. - Mueve los registros
scheduledapendingsischeduled_at <= now. - Comprueba los slots disponibles en los límites diario y por minuto.
- Recoge los registros
pendingyretry. - Los ordena según prioridad y fecha de envío planificada.
- Envía el request a Google o ejecuta dry-run.
- Guarda la respuesta, el estado y el log de API.
Limpieza de logs
kowal_google_indexing_cleanup_logsPlanificación:
15 3 * * *La tarea elimina los logs de API más antiguos que el número de días establecido en el campo:
API Log Retention Days16. Logs de API
Los logs están disponibles en:
Google Indexing API > API LogsEl log incluye:
- ID del registro de cola,
- store ID,
- tipo de request,
- URL del endpoint,
- payload,
- estado HTTP,
- body de la respuesta,
- duración del request,
- fecha de creación del log.
Tipos de request:
| Tipo | Significado |
|---|---|
publish | Envío real de la URL a Google. |
publish_dry_run | Procesamiento en modo dry-run sin request real a Google. |
metadata | Prueba de metadata para la URL. |
17. Mass Actions y botones administrativos
El módulo añade mecanismos para notificar URL desde el panel de administración.
Productos
En la rejilla de productos hay disponible una acción masiva que añade las URL de productos a la cola.
El módulo omite los productos:
- desactivados,
- no visibles individualmente.
Las URL se generan a partir de URL rewrites para los store view activos.
Páginas CMS
En la rejilla de páginas CMS hay disponible una acción masiva que añade las URL de las páginas a la cola.
El módulo omite las páginas inactivas.
Si una página CMS está asignada a todos los store view, el módulo resuelve las URL para todos los store view.
Producto, categoría y página CMS - botones en el formulario de edición
El módulo añade botones para solicitar la indexación en las pantallas de edición de:
- producto,
- categoría,
- página CMS.
El botón resuelve las URL de la entidad para el store view y las añade a la cola como URL_UPDATED.
18. Configuración inicial recomendada
Para la primera implantación en producción:
| Campo | Recomendación |
|---|---|
Enable | Yes después de guardar credentials y allowed hosts. |
Dry Run | Yes durante las pruebas, después No. |
Credentials Source | Encrypted configuration value o Uploaded JSON file, según la política del proyecto. |
Google Cloud Project ID | project_id del JSON. |
Daily Publish Limit | 200, salvo que Google haya aprobado un límite superior. |
Requests Per Minute Limit | 60 o menos en una implantación prudente. |
Cron Batch Size | 20. |
Default Indexing Lag | 15. |
Manual Form Indexing Lag | 0-15, según la forma de trabajo de los administradores. |
Mass Action Indexing Lag | 15. |
Max Attempts | 5. |
Retry Delay | 15. |
Allowed Source Types | manual,product,category,cms_page,amasty_blog_post. |
Allowed URL Hosts | Todos los hosts de producción de la tienda. |
Require HTTPS URLs | Yes. |
Enable Auto-Indexing | No, salvo que el proyecto implemente proveedores automáticos. |
API Log Retention Days | 90. |
19. Problemas habituales y diagnóstico
Credentials test failed
Comprueba:
- si el JSON es correcto,
- si el JSON procede de una cuenta de servicio,
- si contiene
private_keyyclient_email, - si el campo
typetiene el valorservice_account, - si el archivo JSON no se ha dañado al pegarlo.
Google devuelve un error de permisos
Comprueba:
- si el dominio está verificado en Search Console,
- si el
client_emailde la cuenta de servicio está añadido como propietario, - si la URL probada pertenece a la misma propiedad de Search Console,
- si estás utilizando el proyecto de Google Cloud correcto y el JSON correcto.
La URL es rechazada antes del envío
Comprueba el mensaje de validación:
| Mensaje | Causa |
|---|---|
empty_url | URL vacía. |
url_too_long | La URL tiene más de 2048 caracteres. |
url_not_absolute | La URL no tiene esquema o host. |
https_required | Se ha activado el requisito HTTPS y la URL usa HTTP. |
invalid_scheme | El esquema no es http ni https. |
host_not_allowed | El host de la URL no se encuentra en Allowed URL Hosts. |
La cola no se procesa
Comprueba:
- si
Enable = Yes, - si el cron de Magento está funcionando,
- si los registros tienen estado
pendingoretry, - si
scheduled_atno está en el futuro, - si los límites diarios o por minuto no se han agotado,
- si
Daily Publish LimityRequests Per Minute Limitno están configurados como0.
Los registros pasan a retry
Comprueba:
- el estado HTTP en el registro de la cola,
- el log de API,
- la respuesta de Google,
- si no se está produciendo el límite
429, - si no hay errores temporales
5xx, - si
Max AttemptsyRetry Delayestán configurados según lo esperado.
20. Integración opcional con Amasty Blog
La integración con Amasty Blog está prevista como un módulo independiente:
Kowal_GoogleIndexingApiAmastyBlogPaquete:
kowal/module-google-indexing-api-amasty-blogEste módulo no es necesario para el funcionamiento de la integración principal. Debe instalarse solo en proyectos que utilicen amasty/blog y necesiten una acción masiva para entradas del blog.
Write Your Own Review




















