Introducir productos en PrestaShop y volver a sacarlos fuera es esa infraestructura poco vistosa de la que acaba dependiendo cualquier catálogo: una migración desde otra plataforma, una fuente nocturna de un proveedor que cambia 4.000 precios de un día para otro, un ERP que controla el stock y necesita que PrestaShop lo refleje. PrestaShop te da tres herramientas realmente distintas para hacerlo — el importador CSV integrado, la API Webservice y SQL Manager para exportar — y el error más caro que cometen los comerciantes es elegir la herramienta equivocada. Lanzar una tienda con 200 productos y sincronizar cada noche 40.000 SKU no es el mismo trabajo, y la herramienta perfecta para uno puede fallar discretamente con el otro. Esta guía trata específicamente sobre datos de productos: catálogo, combinaciones, imágenes, stock y precios, tanto de entrada como de salida. (Si lo que necesitas en realidad es sacar datos de pedidos y facturas fuera de PrestaShop — para contabilidad o conciliación — ese es otro camino de exportación, explicado en exportaciones CSV de pedidos y facturas.)

Última actualización: junio de 2026.

El importador CSV integrado: por donde empieza casi todo el mundo

Pantalla de importación CSV nativa de PrestaShop con separador de campo, separador de valores múltiples y archivos de ejemplo
La herramienta de importación integrada de PrestaShop: elige el tipo de datos, define los separadores de campo y de valores múltiples y descarga un archivo CSV de ejemplo.

PrestaShop incluye un importador nativo en Parámetros avanzados → Importar (el AdminImportController). Acepta CSV para productos, combinaciones, categorías, clientes, direcciones, marcas (fabricantes), proveedores, alias y — cuando tu versión los expone — tiendas; primero eliges el tipo de entidad y después subes el archivo. Para un catálogo de unos pocos miles de productos, sin necesidad de sincronización recurrente, esta es la opción correcta y puedes saltarte la sección de la API. La ventaja es real: cargas toda la tienda desde una hoja de cálculo, desde el back office, sin desarrollador y sin una sola línea de código.

Las reglas de formato CSV que provocan la mayoría de los fallos

El importador no perdona el formato, y un archivo mal formado es la razón número uno por la que una importación "no funciona". Revisa esto antes de subir nada:

  • Codificación: UTF-8 sin BOM. Si has creado el archivo en Excel, usa Guardar como → CSV UTF-8 — el "CSV" normal guarda en Windows-1252 y convierte cualquier carácter acentuado en texto corrupto (é se convierte en é). Si tu archivo ya tiene BOM, elimínalo: sed -i '1s/^\xEF\xBB\xBF//' file.csv.
  • Separador: punto y coma (;) por defecto. Puede cambiarse en la pantalla de importación, pero no lo cambies nunca a coma si tus descripciones contienen comas — y siempre las contienen.
  • Calificador de texto: comillas dobles ("). Encierra entre comillas cualquier campo que contenga el separador o un salto de línea.
  • Finales de línea: Unix LF es lo más seguro; CRLF se acepta, pero a veces introduce filas vacías fantasma que se importan como productos en blanco.
  • Fila de encabezado: los nombres de las columnas deben coincidir con los nombres de campos de PrestaShop o mapearse manualmente en la pantalla siguiente. El importador recuerda los mapeos con nombre, así que un archivo recurrente de proveedor solo necesita mapearse una vez.

Un archivo mínimo de productos:

ID;Active;Name;Categories;Price (tax excl.);Tax rules ID;Reference;Quantity;Description

El ajuste que decide entre actualizar y duplicar

Este es el punto que suele morder en la segunda importación. El importador tiene dos modos que parecen casi idénticos, pero se comportan de forma opuesta. Por defecto crea filas. Para que actualice productos existentes en lugar de clonarlos, debes marcar "Usar la referencia del producto como clave" (o proporcionar la columna real ID y marcar el equivalente de usar el ID como clave). Si te saltas esto en una actualización de precios, no actualizas 4.000 productos — creas 4.000 duplicados y duplicas el catálogo. ¿Qué significa eso en la práctica? Una fuente recurrente de proveedor debe llevar una Reference estable (o ID) en cada fila, y esa casilla debe estar marcada siempre, sin excepción.

Combinaciones: se importan por separado, y el orden importa

Las combinaciones (variantes) son una entidad propia: primero importas los productos padre y después ejecutas una segunda importación con la entidad Combinaciones seleccionada. Cada fila referencia al producto padre por ID o referencia e incluye el grupo de atributo, el valor, el impacto en el precio, la cantidad, el EAN13 y la referencia de la combinación:

Product ID;Attribute (Name:Type:Position);Value (Value:Position);Reference;Supplier reference;EAN13;Impact on price;Quantity

La trampa clásica: PrestaShop crea automáticamente los grupos de atributos y valores que no conoce, y compara por la cadena exacta. "Talla", "talla" y "TALLA" se convierten en tres grupos de atributos distintos, y el desplegable de tallas termina siendo un caos. Normaliza mayúsculas, minúsculas y ortografía en el archivo antes de importar, no después.

Imágenes por URL — y por qué aquí es donde tu servidor cae

Puedes rellenar las imágenes poniendo una lista de URL separadas por comas en la columna de imagen; la primera se convierte en portada. Lo que suele sorprender es la mecánica, porque cada URL dispara una descarga síncrona durante la petición de importación:

  • Tormenta de descargas: 5.000 productos × 3 imágenes = 15.000 solicitudes HTTP dentro de una sola tarea de importación. Una importación lanzada desde la web agotará el tiempo de espera mucho antes de terminar. El patrón fiable son dos pasadas: primero importar los productos sin imágenes y después una segunda pasada, en lotes más pequeños, solo para las imágenes.
  • Multiplicación de miniaturas: cada imagen importada se regenera en todos los formatos definidos en Diseño → Ajustes de imágenes. Ocho formatos significan ocho operaciones de redimensionado por imagen. Antes de una importación grande de imágenes, elimina temporalmente los formatos que no uses y regenera una sola vez al final.
  • "Eliminar todas las imágenes antes de importar": esta opción borra todas las imágenes existentes en los productos coincidentes — incluidas las que añadiste a mano — antes de cargar el nuevo conjunto. Es la herramienta adecuada para una resincronización limpia y un desastre si no era eso lo que querías.

Cómo hacer que las importaciones grandes sobrevivan: tiempos de espera, memoria y CLI

El importador web funciona con comodidad hasta unos 5.000 productos. A partir de ahí dejas de pelearte con el formato CSV y empiezas a pelearte con PHP y el servidor web:

  • Tiempo de ejecución: el max_execution_time estándar de 30 segundos no sirve para un archivo grande. Súbelo a 600+ en php.ini (o por importación mediante el worker), o no terminarás ni un solo lote.
  • Memoria: un CSV de 50 MB con unos 20.000 productos necesita 256 MB+ de memoria PHP; configura memory_limit en 512M para tener margen.
  • Trabaja por lotes: divide el archivo en archivos de 1.000–2.000 filas. Si falla la fila 7.400, repites un lote, no los 40.000 productos completos.
  • Desactiva la indexación durante la ejecución: en Parámetros de la tienda → Búsqueda desactiva "Indexar productos al guardar" y no regeneres imágenes a mitad de importación. Reindexa una sola vez al final. En catálogos grandes, este es el mayor ahorro de tiempo: reindexar cada fila se lleva la mayor parte del tiempo total.
  • Saca los trabajos grandes fuera de la petición web: el núcleo de PrestaShop no incluye un comando de consola prestashop:import integrado, así que para una migración puntual de 10.000+ productos las respuestas prácticas son dividir agresivamente en lotes (archivos de 1.000–2.000 filas), subir los límites del servidor indicados abajo o ejecutar la carga desde un módulo de importación creado para ello o desde un script de API en línea de comandos — cualquier cosa que funcione fuera del servidor web para que no haya un tiempo de espera de petición que alcanzar.

Sacar datos de productos: opciones de exportación en PrestaShop

La exportación es el lado más débil de la plataforma, y conviene decirlo con claridad. La página nativa de Importar sirve para importaciones y archivos de ejemplo; no es una herramienta completa de exportación de productos. Lo más parecido que trae el back office es el botón Exportar de la propia lista de productos, pero solo genera los campos básicos que se ven en la lista: no combinaciones, no precios específicos, no stock por almacén. Para cualquier caso serio, tienes dos rutas mejores.

SQL Manager: el caballo de batalla para exportar

Parámetros avanzados → Base de datos → SQL Manager te permite escribir una consulta de lectura y descargar el resultado como CSV. Es la forma más rápida de obtener exactamente las columnas que necesitas. Para exportar cada producto con su stock actual:

SELECT p.id_product, pl.name, p.reference, p.price, sa.quantity FROM ps_product p JOIN ps_product_lang pl ON p.id_product = pl.id_product AND pl.id_lang = 1 JOIN ps_stock_available sa ON p.id_product = sa.id_product AND sa.id_product_attribute = 0;

(Cambia ps_ por el prefijo real de tus tablas.) Esto encaja perfectamente con el importador para ediciones masivas: exportas a CSV, cambias precios o stock en una hoja de cálculo y reimportas con la referencia como clave activada. El inconveniente es que SQL Manager es de solo lectura y manual: es una herramienta excelente para usos puntuales y una mala automatización, porque alguien tiene que hacer clic.

Cuando la exportación debe ser una fuente recurrente

Fuentes diarias de precios, archivos para marketplaces y Google Shopping, una entrega nocturna a un sistema externo: esto necesita un archivo generado según una programación, no una persona en SQL Manager. Ese es territorio de módulos: un generador que crea una fuente de productos multilingüe (y, para facilitar el descubrimiento, mantiene el mapa del sitio acompasado con el catálogo activo) mediante cron, para que el archivo esté siempre actualizado sin que nadie toque el back office. Si generar fuentes de datos es el trabajo real, revisa los módulos de exportación y fuentes en mypresta.rocks: la ventaja es una fuente siempre al día y un administrador que no tiene que acordarse de ejecutarla.

XML y la API Webservice: para integraciones, no migraciones

XML es la lengua franca de las fuentes B2B, los ERP y los marketplaces, y este es el dato clave: el importador CSV de PrestaShop no lee XML en absoluto. Tienes dos opciones honestas, y sirven para objetivos distintos.

Opción 1 — convertir el XML a CSV

Si un proveedor te entrega una fuente XML y solo quieres cargarla una vez en el catálogo, transfórmala al formato CSV de PrestaShop con una hoja de estilos XSLT, un script corto en Python (xml.etree.ElementTree gestiona la mayoría de fuentes planas de proveedores en bastante menos de 50 líneas), o una herramienta de datos como Talend o Akeneo. Después pásala al importador nativo. Simple, sin activar ninguna API e ideal para una carga puntual.

Opción 2 — hablar directamente con la API Webservice

Para una sincronización bidireccional continua, la API Webservice es la capa adecuada. Es una interfaz de estilo REST con CRUD completo sobre productos, combinaciones, categorías, stock, clientes y pedidos. El Webservice clásico (legacy) está pensado primero para XML: ese es el formato sobre el que conviene construir en las versiones compatibles; JSON no suele estar disponible en el webservice legacy, así que si necesitas JSON específicamente, comprueba si tu versión de PrestaShop incluye en su lugar la API de administración más reciente basada en Symfony. Actívala en Parámetros avanzados → Webservice, crea una clave y concédele solo los recursos y verbos que necesita: nunca entregues a una clave acceso total a todos los recursos. Crea un producto con un POST a https://yourstore.com/api/products enviando un cuerpo XML; actualiza con PUT y el ID del producto en la URL; la respuesta devuelve la entidad con su nuevo ID.

Tres realidades que debes tener previstas antes de construir sobre ella:

  • Una entidad por petición. No hay endpoint masivo: 10.000 productos son 10.000 llamadas. El webservice legacy del núcleo no tiene limitación de tasa integrada, pero tu hosting, una capa de seguridad/WAF o tu propio Apache (mod_evasive) o Nginx (limit_req) pueden estrangular una ráfaga, así que espacia las llamadas unos ~100–200 ms y una importación de 10k se convierte en una ventana planificada de unos ~30 minutos, no en una sorpresa.
  • Las imágenes se suben, no se descargan. Envía el archivo por POST a /api/images/products/{id} y PrestaShop lo almacena directamente: mucho más fiable que el enfoque de descargar URL desde el CSV, porque nada depende de que tu servidor obtenga una URL remota en mitad de la importación.
  • Construye lógica de reintentos. La API responde con códigos HTTP (201 creado, 200 actualizado, 404 no encontrado, 500 error de servidor). Registra cada respuesta y reintenta los 500: en miles de llamadas, algunas fallarán de forma transitoria, y una sincronización que no puede reanudarse no es una sincronización en la que puedas confiar.

Errores que verás de verdad — y cómo solucionarlos

  • "La propiedad X está vacía": un campo obligatorio (nombre, precio, categoría) está en blanco. Comprueba que cada columna obligatoria tenga valor en cada fila.
  • "La categoría no existe": has referenciado un ID de categoría que no existe. Importa primero las categorías o usa nombres de categoría: el importador acepta ambos y creará las que falten.
  • Precios incorrectos después de importar: el importador lee precios sin impuestos. Si tu archivo incluye impuestos, divide primero por (1 + tipo) o mapea la regla fiscal correcta.
  • Los acentos se han convertido en basura: el archivo no está en UTF-8. Conviértelo: iconv -f Windows-1252 -t UTF-8 input.csv > output.csv.
  • La importación "funcionó" pero los productos no son visibles: comprueba Active=1, una categoría real asignada, la asociación correcta de tienda en multitienda y que el índice de productos se haya reconstruido.
  • Duplicados después de reimportar: olvidaste "Usar la referencia del producto como clave" (o usar el ID como clave). Eso actualiza en lugar de clonar: mira la advertencia anterior.

Elegir el método adecuado

Ajusta la herramienta al trabajo, no a la costumbre:

Tu situaciónUsa estoPor qué
Migración puntual, menos de ~5.000 productosImportador CSV integradoSin código, sin desarrollador, el mapeo es reutilizable.
Migración puntual, 10.000+ productosLotes estrictos, o un módulo de importación / script de API ejecutado desde la CLISin tiempo de espera web; puedes repetir solo el lote fallido.
Sincronización recurrente con proveedor/ERPAPI Webservice + un scriptCRUD bidireccional, programable y planificable.
Fuente de exportación recurrente (marketplace, Shopping)Módulo de fuentes/exportación en cronArchivo siempre actualizado, cero pasos manuales.
Ediciones rápidas y masivas de precios/stockExportación con SQL Manager → importación CSVIda y vuelta mediante una hoja de cálculo.
50.000+ SKU, atributos complejosPIM (p. ej., Akeneo) alimentando la APIEl sistema externo controla los datos maestros.

Preguntas frecuentes

Mi segunda importación creó duplicados en lugar de actualizar. ¿Qué me faltó?

La casilla "Usar la referencia del producto como clave" (o el equivalente de usar el ID como clave). Por defecto, el importador crea filas, así que una actualización de precios sin esa casilla marcada clona cada producto en lugar de actualizarlo. Asegúrate de que cada fila lleve una Reference o un ID estable y marca la opción de clave en cada ejecución recurrente.

¿Por qué todos los caracteres acentuados se convirtieron en basura después de importar?

El archivo no está en UTF-8. El guardado "CSV" normal de Excel usa Windows-1252, que destroza los acentos: usa Guardar como → CSV UTF-8 en su lugar y elimina el BOM inicial si existe. La sección sobre codificación del artículo muestra exactamente cómo se ven los caracteres rotos y el comando de una línea iconv que convierte un archivo Windows-1252 de vuelta a UTF-8 limpio.

¿Puede el importador integrado leer una fuente XML?

No: el importador CSV no lee XML en absoluto. Para una carga puntual, transforma primero el XML al formato CSV de PrestaShop (una hoja de estilos XSLT o un script corto con xml.etree.ElementTree gestiona la mayoría de fuentes planas de proveedores). Para una sincronización bidireccional continua, usa directamente la API Webservice en lugar de convertir archivos cada vez.

Mi importación sigue agotando el tiempo de espera con un catálogo grande. ¿Cómo consigo que pase?

El importador web funciona con comodidad hasta unos 5.000 productos. A partir de ahí, divide en lotes de 1.000–2.000 filas, sube max_execution_time (a 600+) y memory_limit (a 512M), y desactiva "Indexar productos al guardar" durante la ejecución: reindexar cada fila supone la mayor parte del tiempo total. El núcleo de PrestaShop no incluye ningún comando de consola prestashop:import, así que para una migración de 10.000+ productos ejecuta la carga desde un módulo de importación o un script de API fuera de la petición web.

Haz una ida y vuelta por SQL Manager: exporta a CSV las columnas que necesitas, cámbialas en una hoja de cálculo y después reimporta usando la referencia como clave para que actualice en lugar de clonar. Para cambios frecuentes de precios, nuestros módulos de actualización masiva de precios y fuentes de productos lo hacen desde el back office según una programación, para que no tengas que ejecutar SQL Manager a mano ni acordarte de la casilla de clave cada vez.

Donde la importación/exportación se cruza con el resto de tus operaciones

Importar y exportar rara vez viven solos: normalmente son un paso dentro de un flujo más amplio de catálogo o stock. Algunos temas cercanos que conviene conocer:

  • Stock vía CSV. Una actualización masiva de cantidades es simplemente una importación de dos columnas usando la referencia como clave. Pero la pregunta de fondo — qué nivel deberían tener esas cantidades y cuándo reponer — es una disciplina propia: consulta cuándo reponer stock.
  • Cuando la hoja de cálculo se queda pequeña. Si estás haciendo idas y vueltas constantes con CSV solo para mantener el stock en orden, suele ser la señal de que toca usar herramientas reales de inventario: cuando las hojas de cálculo dejan de servir cubre esa transición.
  • Exportación de pedidos y facturas. Otra entidad, otro camino: sacar datos de pedidos para contabilidad se explica en exportaciones CSV de pedidos y facturas.

Los datos de producto son el tipo de trabajo que nadie celebra y del que todos dependen: importaciones limpias significan fichas precisas, precios correctos y un stock que coincide con la realidad. El principio común a los tres métodos es el mismo: mantén una clave estable en cada producto, elige la herramienta que encaje con la escala del trabajo y no dejes nunca que una importación se ejecute dos veces sin saber si crea o actualiza. Si lo que realmente buscas es generar fuentes recurrentes o entregar datos de producto de forma programada, los módulos de exportación y sitemap de mypresta.rocks están pensados justo para eso: una fuente que se mantiene actualizada sin que nadie tenga que acordarse de pulsar un botón.

Compartir esta publicación:
David Miller

David Miller

Founder, mypresta.rocks

David Miller es un especialista en PrestaShop con más de una década de experiencia práctica y fundador de mypresta.rocks, un estudio de desarrollo con sede en Tychy, Polonia. Crea y mantiene un catálogo de 152 módulos PrestaShop —incluidas 21 suites «Revolution» que abarcan SEO, checkout, seguridad, rendimiento, marketing, búsqueda, soporte y gestión de almacén— que mejoran tiendas reales cada día, probados en PrestaShop 1.7.8, 8.x y 9.x. También se encarga del mantenimiento de tiendas en producción que facturan millones al año, por lo que su trabajo se mide por ventas reales, no por demos. Su experiencia abarca todo el comercio electrónico —rendimiento, seguridad, SEO y marketing— y va más allá de PrestaShop, hasta WooCommerce, Shopify y sistemas a medida. En el blog escribe sobre la parte técnica de PrestaShop: qué hace realmente la plataforma, qué se rompe en producción y qué soluciones aguantan.

¿Te gustó este artículo?

Recibe nuestros últimos consejos, guías y actualizaciones de módulos en tu bandeja de entrada.

Comentarios

Aún no hay comentarios. ¡Sé el primero!

Sé el primero en hacer una pregunta o compartir una opinión útil.

Cargando...
Volver arriba