PS PrestaShop Intermedio

DataFirefly All in One SEO — Documentación completa

Módulo SEO premium todo-en-uno para PrestaShop 8 y 9: metas dinámicas, esquemas JSON-LD, sitemap multilingüe, redirecciones, 404, robots.txt inteligente, tracking y analizador de contenido.

Actualizado Versión del módulo 1.0.2

Suite SEO premium todo-en-uno para PrestaShop 8 y 9: plantillas meta dinámicas, esquemas JSON-LD completos, sitemap XML multilingüe, redirecciones, monitoring 404, Open Graph y Twitter Cards, GA4 y GTM, robots.txt inteligente con bloqueo de crawlers IA y analizador de contenido — todo en un único módulo.

Requisitos

  • PrestaShop: 8.0 a 9.x
  • PHP: 8.1 o superior (8.2 y 8.3 recomendados)
  • MySQL: 5.7+ o MariaDB 10.3+
  • Módulo productcomments (oficial PrestaShop): opcional, requerido solo para AggregateRating en productos
  • mod_rewrite activado en Apache (o equivalente Nginx) para las URL reescritas
El módulo es consciente del contexto multi-tienda de forma nativa: todas las tablas están limitadas por id_shop. Puede tener configuraciones totalmente diferentes por tienda.

Instalación

  1. Descargue dfallinoneseo-vX.Y.Z.zip desde su cuenta de cliente DataFirefly.
  2. Inicie sesión en su back-office PrestaShop.
  3. Vaya a Módulos → Module Manager.
  4. Haga clic en Subir un módulo en la parte superior derecha.
  5. Arrastre y suelte el archivo ZIP o haga clic en Seleccionar un archivo.
  6. La instalación crea automáticamente las 11 tablas SQL, registra los hooks y añade el menú Mejorar → DataFirefly SEO.
Después de la instalación, abra el Dashboard del módulo para ver una vista general del score SEO global y los puntos a corregir con prioridad.

Configuración inicial en 10 minutos

Este recorrido rápido le permite configurar lo esencial antes del primer crawl de Google.

  1. Ajustes → General: active el módulo, indique el nombre del sitio y la etiqueta «Inicio» para el breadcrumb.
  2. Meta y plantillas: defina como mínimo una plantilla Producto y una plantilla Categoría (consulte la sección dedicada).
  3. Schema → Identidad de la organización: complete logo, teléfono, email, dirección y URLs de redes sociales (sameAs).
  4. Sitemap: active el sitemap y haga clic en Regenerar ahora.
  5. Tracking: añada su GA4 Measurement ID y/o GTM ID.
  6. Tracking → Verificaciones: pegue el valor de verificación de Google Search Console.
  7. Robots.txt: haga clic en Cargar predeterminados (PS + bloqueo IA) para partir de una base sana.

Plantillas meta

El módulo reemplaza la entrada manual de meta_title y meta_description por plantillas dinámicas por tipo de entidad. Al guardar una ficha con metas vacías, la plantilla correspondiente se aplica automáticamente.

Tipos de entidad soportados

  • Producto: páginas de producto (todos los tipos, incluyendo virtuales y pack)
  • Categoría: páginas de categoría
  • Página CMS: páginas de contenido estático
  • Marca / Fabricante: páginas de fabricante
  • Proveedor: páginas de proveedor
  • Inicio: página de inicio de la tienda
  • Páginas genéricas: /contact, /sitemap, etc.

Tokens disponibles

Los tokens se reemplazan con los valores reales al renderizar la página. No todos los tokens están disponibles para todos los tipos de entidad.

  • {shop_name} — nombre de la tienda
  • {sep} — separador (por defecto |)
  • {product_name} — nombre del producto (idioma actual)
  • {product_reference} — referencia interna
  • {product_sku} — alias de referencia
  • {product_ean13} — código de barras EAN13
  • {product_brand}, {brand} — marca/fabricante
  • {category} — categoría por defecto (producto) o nombre de la categoría (página de categoría)
  • {category_parent} — nombre de la categoría padre
  • {category_description} — descripción corta (160 car. máx.)
  • {short_description} — descripción corta del producto (160 car. máx.)
  • {price} — precio con IVA formateado con moneda
  • {price_tax_excl} — precio sin IVA formateado
  • {title} — título de la página CMS
  • {summary} — extracto del contenido CMS (160 car. máx.)

Bloques condicionales

Para no mostrar un token vacío, use la sintaxis condicional:

{?product_brand}{product_brand} | {/?}{product_name} - {shop_name}

Si product_brand está vacío (producto sin marca), todo el bloque entre {?token} y {/?} se elimina. De lo contrario, su contenido se renderiza y los tokens internos se reemplazan normalmente.

Ejemplos de plantillas recomendadas

Producto:

Title: {?product_brand}{product_brand} {/?}{product_name} - {category} | {shop_name}
Description: Descubra {product_name}{?product_brand} de {product_brand}{/?}. {short_description} Envío rápido en {shop_name}.

Categoría:

Title: {category} - {?category_parent}{category_parent} - {/?}{shop_name}
Description: Todos los productos de la categoría {category} en {shop_name}. {category_description}

Inicio:

Title: {shop_name} - Tienda online
Description: Bienvenido a {shop_name}. Descubra nuestro catálogo, envío rápido, pago seguro.

Sobrescritura por entidad

Para sobrescribir una ficha específica (por ejemplo un producto destacado), haga clic en el icono Sobrescritura meta en el menú Edición masiva o use la URL:

?controller=AdminDfSeoMeta&entity=product&entity_id=42

La página de sobrescritura le permite definir meta_title, meta_description, la directiva robots (por ejemplo noindex,follow) y un canonical personalizado por idioma.

La directiva robots definida en una entidad específica tiene prioridad sobre los ajustes globales de indexación. Úsela con moderación para evitar desindexar accidentalmente sus mejores páginas.

Esquemas JSON-LD

El módulo genera un bloque @graph único que agrupa todos los esquemas de la página actual, validado por Google Rich Results Test.

Esquemas generados automáticamente

  • Organization — en todas las páginas, identidad de la empresa
  • WebSite — en la home, con SearchAction para activar el sitelinks search box
  • LocalBusiness — si se ha indicado una dirección física
  • BreadcrumbList — breadcrumb
  • Product — en las fichas de producto, con offers, priceValidUntil, gtin13/isbn/mpn
  • AggregateRating — agregado desde el módulo productcomments oficial
  • Article — en las páginas CMS
  • FAQPage — desde los bloques FAQ de producto o página

Identidad de la organización

Pestaña Schema → Identidad de la organización. Campos a completar:

  • Tipo: Organization, Corporation, LocalBusiness, Store, OnlineStore, OnlineBusiness
  • Logo: URL absoluta (recomendado 600×60 mínimo, ratio cuadrado o paisaje)
  • Teléfono, Email: usados en contactPoint
  • Dirección postal: calle, código postal, ciudad, país (ISO-2)
  • sameAs: una URL por línea (Facebook, Instagram, LinkedIn, Twitter/X, etc.)

Validez de las ofertas de producto

El campo Validez de las ofertas de producto (días) controla el valor de priceValidUntil en Product.offers. Por defecto: 60 días. Google requiere este campo para mostrar el precio en los resultados enriquecidos.

Esquemas personalizados

Pestaña Schema → Esquemas personalizados. Permite añadir bloques JSON-LD a medida (HowTo, Recipe, Event, JobPosting, VideoObject, Course, etc.) con un alcance preciso:

  • global: todas las páginas
  • home: solo home
  • product: todas las páginas de producto
  • product_id: un producto específico (usa el campo ID)
  • category, category_id: idem categoría
  • cms, cms_id: idem página CMS

Variables disponibles en el JSON personalizado: {shop_name}, {base_url}, {entity_id}, {entity_type}.

El JSON-LD personalizado se inserta tal cual en el @graph. Valídelo con el Rich Results Test antes de publicar. Un JSON inválido se rechaza silenciosamente.

Sitemap XML

El módulo genera un sitemap XML conforme a la especificación sitemaps.org, con hreflang en cada URL y soporte de imágenes. Arquitectura: un sitemap index por tienda, luego un sitemap por tipo de entidad × idioma, dividido en chunks.

Configuración

Pestaña Sitemap. Active el sitemap y luego marque el contenido a incluir:

  • Productos (por defecto todos los productos activos)
  • Categorías
  • Páginas CMS
  • Marcas / Fabricantes
  • Proveedores
  • Imágenes (añade image:image a cada URL de producto)
  • Vídeos (si están presentes en las fichas)

Opciones adicionales:

  • Excluir ruptura de stock: elimina los productos sin stock
  • Gzip: también genera las variantes .xml.gz (reduce 5 a 10x el tamaño descargado por los crawlers)
  • URLs por archivo: tamaño de chunk (recomendado 5000-10000, máx 50000 por spec XML)

Regeneración

La regeneración es manual desde el admin para evitar carga imprevista del servidor. Haga clic en Regenerar ahora.

Para automatizar, programe un cron que llame al siguiente script (cada 6 o 12 horas según la frecuencia de actualización de su catálogo):

0 */6 * * * php /var/www/html/index.php fc=module&module=dfallinoneseo&controller=sitemap&action=rebuild

Envío a motores de búsqueda

Haga clic en Pingear motores para notificar a Google y Bing (endpoints legacy pero todavía activos). Para Google Search Console, envíe la URL del sitemap index una vez en GSC → Sitemaps. GSC vuelve a crawlear automáticamente con cada modificación.

URL del sitemap index: https://su-tienda.com/sitemap.xml

Sitemap HTML público

Un sitemap HTML legible por humanos se genera automáticamente en /plan-du-site. Agrega categorías (árbol), páginas CMS, marcas, proveedores y los 200 productos más recientes. Útil para enlazado interno y accesibilidad.

Redirecciones

El módulo gestiona las redirecciones HTTP 301 (permanente), 302 (temporal), 307, 308 y 410 (Gone) con tres tipos de match.

Tipos de match

  • Exacto: la URL fuente debe coincidir exactamente (sin query string)
  • Prefijo: la URL fuente es un prefijo de la URL solicitada. El sufijo se conserva en el destino si Conservar query string está marcado. Útil para migrar carpetas enteras (/carpeta-antigua//carpeta-nueva/).
  • Regex: expresión regular PHP (modo ~...~i sensible/insensible). Los grupos de captura están disponibles en el destino vía $1, $2, etc.

Creación manual

Pestaña Redirecciones → Nueva redirección. Campos:

  • URL fuente: ruta sin el dominio (ej: /pagina-antigua)
  • URL destino: ruta o URL absoluta. Deje vacío para código 410.
  • Tipo de match, Código HTTP, Conservar query string

Importación / exportación CSV

Formato CSV esperado (con header):

source,destination,type,code
/producto-antiguo,/producto-nuevo,exact,301
/carpeta-antigua/,/carpeta-nueva/,prefix,301
/old-(.*),/new-$1,regex,301

La exportación CSV recoge las redirecciones actualmente filtradas en la lista.

Redirección automática al cambiar slug

Si la opción Ajustes → Monitoring → Redirección 301 auto al cambiar URL está marcada, el módulo crea una 301 automáticamente al modificar el slug de un producto, categoría, página CMS, marca o proveedor. El created_by se marca como auto:urlchange para distinguirlo.

Esta opción evita la mayoría de los 404 SEO clásicos relacionados con la refactorización de contenido. Actívela desde la instalación.

Monitoring 404

Pestaña Monitor 404. Captura todas las URLs en error 404 servidas por PrestaShop, con deduplicación, conteo de hits, detección de bots y hash de direcciones IP (sal COOKIE_KEY de PrestaShop para conformidad RGPD).

Filtros disponibles

  • No resueltas: URLs sin redirección cubridora (vista por defecto)
  • Resueltas: URLs para las que se creó una redirección a posteriori
  • Bots: hits provenientes de user-agents identificados como bots
  • Todas

Crear una redirección con un clic

En cada línea, el botón Redirigir abre un formulario inline que pre-rellena la fuente. Indique el destino, elija el código HTTP, valide. La 404 se marca automáticamente como resuelta.

Purga y mantenimiento

El menú Ajustes → Monitoring expone un umbral Número máximo de entradas 404 conservadas (por defecto 5000). Más allá, el botón Purgar 404 antiguos elimina las entradas no resueltas más antiguas.

Robots.txt dinámico

El módulo sirve un archivo /robots.txt generado dinámicamente en cada solicitud, basado en las reglas definidas en Robots.txt.

Preajustes PrestaShop + bloqueo IA

El botón Cargar predeterminados (PS + bloqueo IA) sobrescribe todas las reglas actuales y carga un preajuste sano que:

  • Bloquea los directorios sensibles de PrestaShop (/admin*/, /cache/, /classes/, etc.)
  • Bloquea las páginas técnicas (/cart, /order, /my-account, etc.)
  • Bloquea los principales crawlers IA no respetuosos: GPTBot, ClaudeBot, CCBot, Google-Extended, anthropic-ai
  • Apunta al sitemap (Sitemap: /sitemap.xml)

Reglas personalizadas

Cada regla tiene un user-agent, una directiva (Allow, Disallow, Crawl-delay), un valor y una posición (orden en el archivo). Active/desactive una regla sin eliminarla mediante la pastilla ON/OFF.

Vista previa en directo

El bloque Vista previa del archivo generado en la parte inferior renderiza el robots.txt tal como se servirá, antes de publicar.

Archivo llms.txt nativo

El módulo sirve un archivo /llms.txt conforme a la especificación llmstxt.org. Este archivo lista, en markdown, las secciones principales del sitio para los crawlers IA respetuosos que desean una vista estructurada en lugar de scrapear todo el HTML.

No se requiere configuración — el módulo genera automáticamente el archivo desde su árbol de categorías, páginas CMS y marcas.

Open Graph y Twitter Cards

Pestaña Social. El módulo inyecta las etiquetas og:* y twitter:* en todas las páginas.

Ajustes

  • Activar Open Graph y Twitter Cards: master switch
  • og:locale automático: calculado desde el idioma del contexto (ej: es_ES)
  • Imagen OG por defecto: URL absoluta de una imagen 1200×630 (usada cuando la página no tiene imagen dedicada)
  • og:site_name, og:type por defecto
  • Twitter @handle y tipo de tarjeta (summary o summary_large_image)
  • fb:app_id: Facebook App ID
Para las fichas de producto, el módulo usa automáticamente la imagen principal de la ficha. Para las demás páginas, se usa la imagen OG por defecto si no hay imagen definida.

Tracking: GA4, GTM, píxeles

GA4 y Enhanced Ecommerce

Campo GA4 Measurement ID: formato G-XXXXXXXXXX. Validación automática del formato.

Marque Enhanced Ecommerce para activar los eventos view_item, view_item_list, add_to_cart, remove_from_cart, begin_checkout, add_payment_info, purchase.

Marque Respetar Consent Mode v2 para anonimizar los hits hasta el consentimiento explícito (compatible con las CMP estándar).

Google Tag Manager

Campo GTM ID: formato GTM-XXXXXXX. El módulo inyecta el snippet GTM en el head y el fallback noscript justo después de la apertura del body.

Píxeles publicitarios

  • Facebook Pixel ID: 15 dígitos
  • TikTok Pixel ID: alfanumérico

Si Consent Mode v2 está activo, estos píxeles solo se activan tras el consentimiento.

Verificaciones de propiedad

Pegue los valores de las etiquetas de verificación (sin la etiqueta meta completa, solo el contenido del atributo content):

  • Google Search Console
  • Bing Webmaster Tools
  • Yandex Webmaster
  • Pinterest
  • Baidu

Código personalizado head y body-end

Dos campos libres aceptan HTML/JS arbitrario:

  • Código inyectado en head: para scripts de terceros, metas complementarias
  • Código inyectado justo antes del cierre del body: ideal para widgets de chat, retargeting tardío, scripts asíncronos
Estos campos no efectúan validación. Un error de sintaxis HTML puede romper el renderizado de la página. Pruebe en pre-producción antes de publicar.

Analizador de contenido

Pestaña Analizador. Envíe un producto, una categoría, una página CMS o HTML bruto al analizador para obtener un score SEO global y un desglose detallado de métricas.

Métricas calculadas

  • Score SEO global (0-100) — ponderación weighted de los checks
  • Legibilidad Flesch — aproximación multilingüe (vowel-group syllable count)
  • Número de palabras, número de frases
  • Densidad de la palabra clave principal (en %)
  • Enlaces internos / externos / nofollow
  • Imágenes sin atributo alt
  • Estructura de títulos H1 a H6
  • Presencia de la palabra clave en slug y primer párrafo

Verificaciones (checks)

El analizador devuelve una lista de checks con estado good / warn / bad:

  • Longitud del title (50-60 caracteres)
  • Longitud de la meta description (140-160 caracteres)
  • Presencia y longitud del slug
  • Longitud del cuerpo (mínimo 300 palabras)
  • Presencia de al menos una imagen con alt
  • Palabra clave en title, en primer párrafo, en slug
  • Densidad de palabra clave entre 0,5% y 2,5%
  • Al menos un H1 y varios H2/H3
El analizador es una guía, no una verdad absoluta. Un score de 80+ es excelente. Por debajo de 50, revise la estructura y la redacción. Nunca sacrifique la calidad editorial por un score.

Edición masiva

Pestaña Edición masiva. Grilla paginada (30 entradas/página) con filtros para modificar rápidamente meta_title, meta_description y link_rewrite en productos, categorías o páginas CMS.

Filtros disponibles

  • Todas
  • Sin title: solo entradas con meta_title vacío
  • Sin descripción: solo entradas con meta_description vacío
  • Búsqueda por nombre

Aplicar plantillas en masa

El botón Aplicar plantillas aplica automáticamente la plantilla definida para el tipo de entidad actual a las fichas que coinciden con los filtros. Marque Aplicar solo a campos vacíos para evitar sobrescribir metas ya rellenadas.

Metabox SEO en la ficha de producto

En la página de edición de un producto en el back-office, se añade un encart DataFirefly SEO con:

  • Un score SEO en directo (7 checks: longitud title, descripción, slug, body, imagen, EAN13, marca)
  • Una vista previa SERP Google renderizada fielmente
  • La palabra clave principal detectada

Ajustes avanzados

Indexación

Pestaña Ajustes → Indexación:

  • hreflang multilingüe: genera las etiquetas link rel="alternate" en todas las páginas
  • Estrategia x-default: Idioma por defecto (recomendado), Inglés, o Desactivado
  • URL canonical: inyecta link rel="canonical"
  • Canonical en paginación: En la página actual (recomendado), Siempre en página 1, o Sin canonical
  • noindex automáticos: páginas /search, carrito, mi cuenta, novedades, mejores ventas, promociones, facetas
  • Canonical hacia la página padre en facetas: evita el duplicate content de la navegación por facetas

Imágenes

  • Generación automática de atributos alt: al guardar una imagen sin alt, aplica la plantilla
  • Plantilla alt: por defecto {product_name} - {shop_name}
  • Lazyload imágenes nativo: añade loading="lazy" y decoding="async" a todas las imágenes, con fallback IntersectionObserver para imágenes data-src

Mantenimiento

  • Vaciar la caché: purga la caché Smarty + caché PrestaShop
  • Purgar 404 antiguos: aplica el umbral configurado
  • Exportar todos los datos (JSON): descarga un archivo JSON con todas las tablas SEO de la tienda actual (útil para migración entre entornos o backup antes de desinstalar)

Multi-tienda

Todas las funcionalidades están limitadas por id_shop. Al pasar de una tienda a otra mediante el selector de contexto PrestaShop, ve y modifica únicamente los datos de esa tienda.

Casos particulares a conocer:

  • Plantillas: una plantilla por par (tipo de entidad, tienda). Defina explícitamente las plantillas para cada tienda.
  • Sitemap: un sitemap_index distinto por tienda, accesible en https://tienda-1.com/sitemap.xml, https://tienda-2.com/sitemap.xml, etc.
  • Robots.txt: reglas por tienda, servidas en el dominio correspondiente
  • Redirecciones: por tienda
  • Esquemas personalizados: por tienda

Solución de problemas

El sitemap no se genera

  • Verifique que la carpeta modules/dfallinoneseo/sitemaps/ tiene permisos de escritura para PHP
  • Verifique los permisos: chmod 755 modules/dfallinoneseo/sitemaps/
  • Aumente max_execution_time en php.ini si tiene más de 50.000 productos

Los esquemas JSON-LD no aparecen

  • Verifique que el módulo está activado (Ajustes → General)
  • Verifique que el tipo de esquema correspondiente está activado (Schema → Tipos de esquemas generados)
  • Vacíe la caché PrestaShop
  • Inspeccione el código fuente HTML: los esquemas se inyectan en un bloque script type="application/ld+json"

Las redirecciones 301 no funcionan

  • Verifique que el módulo está instalado y activado
  • Verifique que las redirecciones están marcadas como activas (pastilla ON)
  • Para regex, pruebe su expresión en regex101.com en modo PCRE
  • El orden de prioridad es: exacto → prefijo → regex (por hit_count descendente)

GA4 / GTM no se inyecta

  • Verifique el formato del ID (G-XXXXXXX o GTM-XXXXXXX)
  • Si Consent Mode v2 está activo, el snippet está en modo «denied» por defecto hasta el consentimiento. Verifique la capa CMP.
  • Inspeccione el head de la página: el snippet GA4/GTM se inyecta justo antes del cierre

El robots.txt no cambia

  • Verifique que no exista un archivo robots.txt estático en la raíz del sitio (tendría prioridad sobre el módulo). Elimínelo.
  • El módulo sirve robots.txt vía una ruta PrestaShop — verifique que las URL amigables están activadas

Error al crear las tablas SQL en la instalación

  • Verifique que el usuario MySQL tiene los permisos CREATE y ALTER
  • Verifique la codificación: MySQL debe soportar utf8mb4 con collation utf8mb4_unicode_ci
  • Si el prefijo de tabla personalizado de PrestaShop supera 5 caracteres, algunos nombres de índice pueden superar el límite MySQL de 64 caracteres. Contacte con soporte.

Referencia técnica

Hooks utilizados

El módulo registra 18 hooks:

  • displayHeader — inyección de etiquetas meta, canonical, hreflang, OG, Twitter, JSON-LD, GA4/GTM, verificaciones
  • displayBeforeBodyClosingTag — inyección GTM noscript, FB Pixel noscript, custom body-end code
  • displayBackOfficeHeader — CSS/JS del back-office
  • displayAdminProductsExtra — metabox SEO en ficha de producto
  • actionDispatcherBefore, actionDispatcherAfter — routing de redirecciones y captura 404
  • actionObjectProductAddAfter, actionObjectProductUpdateAfter — auto-fill meta + auto-301
  • actionObjectCategoryAddAfter, actionObjectCategoryUpdateAfter — idem categoría
  • actionObjectCmsAddAfter, actionObjectCmsUpdateAfter — idem CMS
  • actionObjectManufacturerUpdateAfter, actionObjectSupplierUpdateAfter — auto-301 al cambiar slug
  • actionAdminControllerSetMedia, actionFrontControllerSetMedia — assets CSS/JS
  • displayProductExtraContent — reservado para usos futuros
  • moduleRoutes — rutas /sitemap.xml, /plan-du-site, /robots.txt, /llms.txt

Tablas SQL añadidas

Todas las tablas usan el prefijo df_seo_, charset utf8mb4, collation utf8mb4_unicode_ci:

  • df_seo_meta, df_seo_meta_lang — sobrescrituras meta por entidad
  • df_seo_template, df_seo_template_lang — plantillas por tipo
  • df_seo_redirect — redirecciones 301/302/307/308/410
  • df_seo_404 — diario de 404
  • df_seo_score — snapshots de score (analizador)
  • df_seo_keyword — focus keywords
  • df_seo_robots_rule — reglas robots.txt
  • df_seo_schema_custom — esquemas JSON-LD personalizados
  • df_seo_log — log diagnóstico interno

Desinstalación

La desinstalación elimina los hooks y las pestañas del back-office, pero conserva las tablas SQL y los datos. Para purgar completamente:

DROP TABLE ps_df_seo_meta, ps_df_seo_meta_lang, ps_df_seo_template, ps_df_seo_template_lang,
           ps_df_seo_redirect, ps_df_seo_404, ps_df_seo_score, ps_df_seo_keyword,
           ps_df_seo_robots_rule, ps_df_seo_schema_custom, ps_df_seo_log;
DELETE FROM ps_configuration WHERE name LIKE 'DFSEO_%';
Antes de desinstalar, use Ajustes → Mantenimiento → Exportar todos los datos (JSON) para conservar un archivo completo. El formato JSON permite reimportar redirecciones, plantillas y esquemas en otra instalación.

Actualizaciones y soporte

  • Actualizaciones: 12 meses incluidos desde la compra. Renovación anual opcional a 49 €.
  • Soporte: 12 meses por email, respuesta en 48h hábiles.
  • Changelog y descarga de las últimas versiones en su cuenta de cliente DataFirefly.
¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte