Una de las novedades que en su día trajo WooCommerce 2.3 (a principios de 2015) fue la integración con MaxMind para la función de geolocalización del cliente, algo que permite desde entonces que se apliquen diferentes impuestos y métodos de envío en función del país incluso antes de que el usuario se haya identificado en nuestra tienda.
Sin embargo, algunos cambios en MaxMind requieren ahora acciones adicionales para poder acceder a esta base de datos, de modo que WooCommerce 3.9 incluye integración completa mediante la API. La diferencia es que para ello es necesario una clave API, así que vamos a ver cómo tienes que hacer para poder configurar la geolocalización en WooCommerce mediante la integración con MaxMind.
Tabla de contenidos
La función de geolocalización de WooCommerce y MaxMind
Sobre esta función no me voy a extender demasiado porque ya le dediqué una entrada completa, incluyendo todos los detalles sobre su configuración y funcionamiento, qué problemas podía darte y cómo podías probar que estaba funcionando correctamente. Si te interesa, puedes echar un vistazo a esa entrada:
Así que ahora sólo recordaré que la opción para activarla está en WooCommerce > Ajustes > General > Ubicación del cliente por defecto. Hasta ahora bastaba con seleccionar la opción Geolocalizar para que se aplicara la configuración de impuestos y métodos de envío a nuestros visitantes, incluso aunque no tuvieran una cuenta de usuario en la tienda (es decir, sin necesidad de haberle dicho a WooCommerce la ubicación por medio de la dirección en los datos de usuario).
De todo esto, como ya he dicho antes y expliqué extensamente en su día en la entrada enlazada más arriba, se ocupa la integración con MaxMind, que es quien ofrece el servicio a través de la base de datos GeoLite2. De hecho esto no ha cambiado. Y, sin embargo, al actualizar a WooCommerce 3.9 verás un mensaje que dice:
No se ha configurado la geolocalización
Debes introducir una clave de licencia válida en la página de ajustes de integración de MaxMind para poder usar el servicio de geolocalización. Si no necesitas el servicio de geolocalización para el envío o los impuestos, deberías cambiar la ubicación por defecto del cliente en la página de ajustes generales.
¿Cómo? ¿Qué está pasando aquí?
Cambios en MaxMind
La respuesta es muy sencilla: MaxMind ahora requiere que el usuario acepte los términos de su acuerdo de licencia para poder descargar su base de datos. Simplemente eso, hay que marcar una casilla para aceptar el acuerdo.
Pero claro, eso requiere que cada usuario que descarga y utiliza esta base de datos haya aceptado estos términos, y eso incluye todas las tiendas WooCommerce que estén usando este servicio (todas las que tengan la geolocalización activada).
En pocas palabras: para poder usar la geolocalización de WooCommerce tendrás que crear una cuenta (gratuita, nada de esto te va a costar dinero) en MaxMind y aceptar los términos de uso para poder crear una clave API que configurar en tu tienda. Tedioso pero fácil, vamos a ver cómo hacerlo.
Crear y configurar la clave API de MaxMind
Lo primero que necesitamos el, obviamente, crear la clave API, para poder después introducirla en la opción que WooCommerce incluye desde la versión 3.9. Para ello tenemos que crearnos una cuenta de usuario en el servicio de MaxMind. Esta cuenta de usuario es gratuita, así como lo son la creación de la clave API y el uso del servicio.
Cuenta de usuario en el servicio de MaxMind
Los campos a rellenar incluyen cosas como el nombre, el país, etcétera. Sin embargo hay un par de campos a considerar: el sector (Industry) y el uso que haremos del servicio (Intented use). Si no estás seguro de qué poner aquí, las respuestas más ajustadas son eCommerce y Price localization, respectivamente.
Por supuesto, hay que marcar la casilla de aceptación de los términos de la licencia de usuario de GeoLite2 (la base de datos que usa el servicio de MaxMind). Al fin y al cabo, todo este tinglado es a causa de esta casilla.
Tras esto recibirás un correo electrónico de confirmación con un enlace para establecer tu contraseña. La establecemos y nos identificamos usando nuestro correo electrónico y la contraseña que acabamos de establecer.
Creación de la clave API
Y bien, ya estamos dentro. Vamos a lo que hemos venido, que es conseguir nuestra clave API. Para ello tenemos que ir a la pestaña My License Key del menú de nuestro panel de usuario, bajo el apartado Services, y usar el botón Generate new license key.
Tendrás que rellenar dos campos:
- Descripción de la clave de licencia. Esto es para que tú sepas dónde la estás usando, en el caso de que tengas varias generadas. Si sólo vas a utilizar una da igual lo que pongas, pero si tienes varias tiendas o si eres desarrollador web y vas a usarlas para tus clientes (puedes tener hasta un máximo de 25 claves API activas), lo mejor es crear una diferente para cada proyecto, por lo que deberías poner algo que identifique a la tienda en que la usarás (el nombre comercial o el dominio, por ejemplo).
- ¿Usarás esta clave para la actualización de GeoLite2? Pues aunque la respuesta obvia aquí parece Sí, lo cierto es que tienes que marcar No.
Pulsa confirmar y listo, la clave está generada. Cópiala porque ya no te la volverá a mostrar (si te vas sin copiarla no podrás volver a verla, y tendrás que eliminarla y generar otra). Mejor usar el icono de copiar que aparece junto a la clave, así te aseguras de no llevarte espacios en blanco al intentar copiar el texto de la clave (actualización: WooCoommerce 3.9.1 ya elimina los espacios en blanco si te llevas alguno).
Y ahora que ya tenemos nuestra clave API, vamos a usarla.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Configuración de la integración con WooCommerce
Lo que queda es realmente poco. Una vez que hemos creado nuestra nueva clave API sólo tendremos que ponerla en la nueva opción que WooCommerce incluye a tal efecto.
Para ello tenemos que ir a WooCommerce > Ajustes > Integración, donde tendrás un apartado llamado Geolocalización de MaxMind en WooCommerce. Si no cuentas con ningún plugin que necesite integración (como, por ejemplo, WooCommerce Google Analytics Pro) entonces no será un apartado sino el contenido en sí de la pestaña.
Aquí tienes el campo donde deberás introducir la clave de licencia de MaxMind que acabas de generar. Hay un segundo campo, pero éste estará ya relleno por WooCommerce y deshabilitado para escritura, que es el que indica la ruta al archivo de la base de datos GeoLite2 descargada en tu servidor.
Pues nada, donde dice Clave de licencia de MaxMind introduces la clave API, guardas, y solucionado: ya puedes seguir usando la funcionalidad de geolocalización de WooCommerce como lo has venido haciendo hasta ahora.
Es posible que recibas el mensaje de error La clave de licencia de MaxMind no es válida. Si has creado esta clave recientemente, puede que tengas que esperar a que se active. No te asustes, no pasa nada: la clave tarda unos minutos en activarse. Espera un poquito (un par de minutos suele ser suficiente) y vuelve a probar.
¿Realmente es necesario hacer esto?
Con esta pregunta no estoy queriendo decir si era necesario hacernos esto, aunque realmente más de uno lo piense. No, lo que quiero decir es: ¿necesitas hacer este tinglado? ¿Tienes que usar esta funcionalidad?
La respuesta es «depende». Si estás usando tablas de impuestos para diferentes países y métodos de envío diferentes en función del país del cliente, la respuesta es que sí, necesitas usar la función de geolocalización para los usuarios que llegan a tu tienda.
Ten en cuenta que, de no hacerlo, WooCommerce puede estar mostrándoles los precios aplicando (o no) unos impuestos que no les correspondan, o mostrando unos métodos de envío (con sus precios correspondientes), y cuando lleguen al checkout y seleccionen el país (y, en su caso, la provincia o departamento) de envío encontrarse con impuestos y métodos de envío diferentes, con el subsiguiente cambio en el precio de los productos y del envío. Esto puede derivar en multitud de carritos abandonados.
Si por el contrario sólo vendes en tu país (o estás vendiendo al mismo precio final a todos los usuarios, independientemente de los impuestos aplicados) y si no aplicas métodos de envío diferentes por país (o vendes productos virtuales, sin envío), entonces no necesitas que WooCommerce geolocalice a tus usuarios. Basta con que establezcas la opción Ubicación del cliente por defecto como Dirección principal del negocio.
iñaki dice
Muchas Gracias Enrique
Una gozada
Nacho dice
Genial como siempre.
Útil, y bien explicado.
Muchas gracias.
Luis Miguel dice
¡Gracias crack!,
Israel dice
Muchas gracias, acabo de hacerlo ¿Sirve también para internacional? O solo para España. Mi tienda está ubicada en España.
Un cliente me mandó una captura desde Brasil y se ve que en el envío por defecto aparece una ciudad española. Por eso he activado la geolocalización de MaxMind, para que no vean los precios de España.
Un saludo 🙂
Fernando dice
Hola,
Si vendes solo a España, pero con diferentes gastos de envío si es a península o si es a Canarias (y diferentes impuestos, ya que canarias, ceuta y melilla se ponen exsentos), ¿recomiendas activarlo?
Enrique J. Ros dice
Hola Fernando
La geolocalización es a nivel de país.
Un saludo
Fernando dice
O sea que en este caso no hace falta. Gracias!
Claudio dice
Excelente y gracias. Pero tengo una duda, si tengo diferentes precios de envío según la distancia , en 5 ,km y 7 km por ej. Maxmind es preciso en mi geo referencia?
Joan Fernando dice
Muchas gracias hombre, me haz ayudado.
Hugo Acosta dice
Hey! estyo leyendo tus pots, ya que ando como loco buscando algún plugin o funcionalidad que me permita poder obtener la ubicación gps del cliente dentro de 1 ciudad, esto porque en mi ciudad, los costos de envío se hacen de acuerdo a la distancia pero dentro de la misma ciudad. No he logrado encontrar algo que le permita el cliente, en el formulario de compra, marcar en el mapa su ubicación exacta, y esto se envíe al vendedor, de modo que pueda aplicar correctamente el costo de envío.
Sabes de algún plugin o algo! que haga esto?
Enrique J. Ros dice
Hola Hugo
Echa un vistazo a este plugin, puede servirte para lo que quieres.
Un saludo
Patricio dice
Hola Enrique, muy buena esta informacion. Me ha servido mucho y seguire investigando tu web.
Yo necesito que cuando el usuario entre al marketplace solo vea los productos que estan disponibles en su area, seria lo mismo que sucede cuando le damos click a «Location» en el filtro de geolocalización pero quiero que sea automático. Podrías decirme si con este mismo plugin puedo lograrlo, si es asi quisiera saber como hacerlo, o si necesitaría de otro plugin aparte, cual podria ser?
Un saludo y gracias por compartir tus conocimientos.
Enrique J. Ros dice
Hola Patricio
Eso depende del plugin que estés usando para marketplace. Consulta directamente con el soporte de ese plugin.
Un saludo
Manuel dice
Hola Enrique
Tengo un «pequeño» problema. Cuando los clientes añaden productos al carrito y acceden a el, en el total del carrito aparece como dirección de envio la direccion de mi ciudad. Una vez que dan a finalizar comprar y pasan al checkout, les permite modificarlo, pero da lugar a confusión ya que son bastantes los que me han preguntado sin solo envío a Granada, que es la ciudad que aparece por defecto, ¿como puedo hacer para que no aparezca ninguna ciudad por defecto? En Ubicación del cliente por defecto he probado con todas las opciones pero siempre sale lo mismo.
gracias.
Enrique J. Ros dice
Hola Manuel
Revisa qué tienes configurado en WooCommerce > Ajustes > Ubicación del cliente por defecto, supongo que lo tendrás puesto en «Dirección principal del negocio». Cámbialo a «Geolocalizar» o a «Sin ubicación por defecto».
Un saludo,
Manuel dice
Gracias Enrique por la respuesta, he seleccionado «Sin ubicación por defecto» y me aparece lo siguiente cuando entro ya en finalizar comprar «No hay opciones de métodos de envío disponibles. Por favor, asegúrate de que has introducido correctamente tu dirección, o contáctanos si necesitas ayuda». Si dejo «Geolocalizar» sigue apareciendo Granada independientemente la ciudad donde esté el cliente. No se a que puede deberse.
Enrique J. Ros dice
Hola Manuel
Claro, te está geolocalizando a ti.
Un saludo
ESTRELLA dice
Un artículo muy interesante y muy bien explicado.
Tengo una pregunta. Precisamente la geolocalización es necesaria sobre todo cuando vendes a otros países, en mi caso de la Unión Europea, pero sobre la casilla donde debes introducir la clave, hay una frase «Ten en cuenta que esta integración solo hará consultas nacionales.» Esto hace sospechar que ¿solamente geolocaliza a clientes del país donde se encuentra la tienda online?
Gracias!
Enrique J. Ros dice
Hola Estrella
Quiere decir que la localización es a nivel de país, no a nivel de divisiones territoriales menores.
Un saludo
Estella dice
Hola Enrique,
me pasa algo que no entiendo muy bien. No tengo geolocalizadas las visitas, pero tengo puesto en los ajustes de la Tarifa estándar en los impuestos del Woocommerce, que para los países UK e Irlanda no haya IVA.
Entonces sucede algo que me parece curioso, y es que pedí a amigos que viven en UK, en Leeds concretamente, que me enviasen screenshots de cómo ven la web, y resulta que en la home de la tienda, ven los precios con IVA (comportamiento que entiendo está bien) pero en la página de detalle del producto, ven los precios sin IVA… 😐
Y es ahí dónde me descoloca. ¿No debería aplicarse esto del IVA solo en el checkout? Nosotros tenemos la tienda así configurada, mostrar los precios con IVA en toda la tienda, pero no entiendo por qué en la página de detalle del producto los muestra sin IVA si entras desde United Kingdom.
No sé si me he explicado bien, muchas gracias Enrique, te voy siguiendo siempre porque eres un referente
Enrique J. Ros dice
Hola Estella
Si en UK no pagan IVA (y así lo tienes configurado en los impuestos), es correcto que los precios se les muestren sin IVA. Lo que no es correcto es que en la tienda los vean con IVA, ya que no es ése el precio que ellos van a pagar. Revisa si se les está mostrando una versión cacheada.
Un saludo
Nerea dice
Hola Enrique,
queria activar la opción de geolocalizar en woocommerce, pero tengo un problema.
Moví mi tienda de un dominio a otro, y ahora en la «Ruta de archivo de la base de datos» me sale la carpeta raiz del antiguo dominio en vez de la carpeta raiz del nuevo dominio.
Para que me entiendas te pongo un ejemplo.
Actualmente se ver así: public_html/carpetaRaizVieja/wp-content/uploads/woocommerce_uploads/xxxxxxxxxxxxxxxxx-GeoLite2-Country.mmdb
Mientras que lo que quiero es así: public_html/carpetaRaizNueva/wp-content/uploads/woocommerce_uploads/xxxxxxxxxxxxxxxxx-GeoLite2-Country.mmdb
Como puedes ver, la carpeta raiz del dominio actual es «carpetaRaizNueva» sin embargo sigue mostrando la carpeta raiz vieja «carpetaRaizVieja».
Como puedo cambiar está ruta para que se descargue en el lugar correcto?
Enrique J. Ros dice
Hola Nerea
Puedes usar el filtro ‘woocommerce_maxmind_geolocation_database_path’, con una búsqueda de este filtro encontrarás ejemplos de cómo usarlo.
Un saludo
Ariel dice
Hola Enrique,
He creado hace unas 24hs la cuenta en en Maxmind y ahora mismo tengo este problema: la Geolocalización a veces funciona y otras veces no funciona.
Debo esperar a que se propaguen los datos o algo parecido? Si no es esto, ¿cómo puedo rastrear este problema?
Gracias