Saltar al contenido
pcreative Commerce

Traer tu tienda de Shopify o WooCommerce

Traerte el catálogo, los clientes y el historial de pedidos de tu tienda actual sin perder el posicionamiento que ya tenías en Google.

Traerte el catálogo, los clientes y el historial de pedidos de tu tienda actual sin perder el posicionamiento que ya tenías en Google.

Está en Panel → Migración. No hace falta configurar nada antes.

Dos formas de entrar

Conectarte a tu tienda. Le das la dirección y unas llaves de solo lectura y se trae todo por su cuenta. Es lo que quieres casi siempre: no hay que exportar nada, no hay ficheros que se queden a medias, y viene lo que un CSV no puede traer —los pedidos, los cupones, las reseñas—.

Subir un CSV. Para quien no puede o no quiere dar llaves de su tienda, y para plataformas que todavía no cubrimos. Trae productos y clientes.

Empieza por la prueba

El interruptor «Primero una prueba» viene encendido, y conviene dejarlo: trae 20 de cada cosa para que veas cómo queda tu catálogo aquí antes de traerte veinte mil.

Míralo, y si te convence, deshaz la prueba y lánzala entera. Deshacer una prueba de veinte productos es un botón; deshacer una migración completa mal apuntada también, pero media hora después y con el susto puesto.

Las llaves que hacen falta

Shopify

La dirección es la que acaba en .myshopify.com, no tu dominio bonito: la API solo entiende ésa.

El token sale de una app privada con permiso de lectura de:

PermisoPara qué
read_productscatálogo, variantes, colecciones
read_inventoryel peso — sí, el peso está en el inventario
read_customersclientes
read_ordershistorial de pedidos

🔴 Sin read_inventory llega el catálogo entero sin un solo peso, y sin un error. Shopify sacó el peso de la variante en 2024 y lo puso en el inventario, que pide otro permiso. Un catálogo sin pesos calcula todos los envíos al precio base. Si pasa, te avisamos al terminar — pero es más barato darlo antes.

WooCommerce

WooCommerce → Ajustes → Avanzado → API REST → Crear clave, con permiso de lectura. Te da una clave (ck_…) y un secreto (cs_…).

Si tu alojamiento se come la cabecera de autenticación —le pasa a mucho Apache— lo detectamos, se reintenta por otra vía y te lo decimos, en vez de arreglarlo a escondidas.

Qué se trae

Las dos primeras columnas son conectándote; la tercera, subiendo un CSV.

ShopifyWooCommerceCSV
Productos, variantes, precios, stock✅✅✅
Imágenes (realojadas en tu tienda)✅✅✅
Categorías y colecciones✅✅✅
Título y descripción de SEO✅✅✅
Campos personalizados del producto✅✅—
Campos personalizados de la variante✅——
Clientes y direcciones✅—✅
Historial de pedidos✅✅—
Cupones—✅—
Reseñas—✅—
Entradas de blog—✅—
Páginas—✅—
Zonas y tarifas de envío—✅—
Tipos de impuesto—✅—

Y, cuando subes un CSV de productos: el mapa de redirecciones (ver más abajo).

🔴 Los clientes de WooCommerce no llegan conectándote. Tráelos con el CSV de clientes que exporta WooCommerce. Sus pedidos sí llegan por la conexión, con el correo y las direcciones de entonces, pero sin enlazar a una ficha de cliente.

Si apagas los pedidos, se apaga más de lo que parece. Con esa casilla quitada tampoco se traen las colecciones de Shopify, ni los envíos, los impuestos y las páginas de WooCommerce. Si los quieres, déjala puesta.

El SEO: lo que casi nadie se lleva

El título de SEO no es el título del producto. En la ficha se lee «Camiseta»; en Google tiene que leerse «Camiseta de algodón orgánico | Mi Tienda». Si llevas años escribiéndolos, eso es parte de por qué te encuentran.

Se trae de las columnas propias de Shopify y, en WooCommerce, de Yoast o Rank Math, que son los dos que se reparten casi todo WordPress. Con otro complemento no se pierde nada que tuvieras: simplemente no hay.

Las redirecciones: la otra mitad del trabajo

Más de la mitad de las tiendas que cambian de plataforma pierden tráfico de Google, y casi nunca es por un castigo: son URLs viejas que dejan de existir sin decir a dónde han ido.

Se genera una redirección permanente por cada URL vieja, una a una. Mandarlo todo a la portada no vale: para Google eso es una página de error disfrazada.

Incluye las URLs de Shopify anidadas en colección (/collections/ropa/products/camiseta), que son la mitad del tráfico de producto de una tienda Shopify y las que todo el mundo olvida.

El mapa sale solo de un CSV de productos: subes el fichero y aparece, lo importes o no. Conectarte a tu tienda no lo genera, así que si migras conectándote, sube también el CSV de productos solo para sacar el mapa.

Sale en cuatro formatos —nginx, Apache, JSON y CSV— y puedes descargarlo sin haber importado, que es cuando lo necesitas: antes de tocar los DNS.

Cubre los productos y las categorías. Las páginas, las entradas del blog y las URLs con filtros que tuvieras indexadas no están ahí: sácalas de Search Console y añádelas a mano.

Encima de los botones de descarga hay dos campos, Ruta de los productos y Ruta de las categorías, que dicen a dónde apuntan las redirecciones en tu tienda nueva. Vienen con producto y categoria, que es lo que usan los temas de fábrica. Si tu tema pone la ficha en otro sitio —pongamos p—, escríbelo ahí y el mapa sale apuntando a /p/<handle>. Puedes escribirlo con barras o sin ellas: p, /p y /p/ son lo mismo.

Cada URL vieja apunta a /producto/<handle> o /categoria/<handle> (o a lo que hayas puesto en esos dos campos), sin idioma. Los temas de fábrica usan un prefijo de idioma, así que contestan a esas direcciones con una redirección temporal 307 a /en/… o /es/…. El visitante llega a su sitio, pero la cadena es 301 → 307. Si quieres un solo salto permanente, edita el fichero descargado y añade el idioma a cada destino (/es/producto/<handle>).

Los pedidos se archivan, no se rejuegan

Un pedido de hace dos años entra como historial. No descuenta stock, no cobra, no manda ningún correo y no reparte puntos.

No es un detalle técnico: mil pedidos migrados descontando stock te dejan el catálogo agotado antes de abrir, y un «tu pedido está en camino» a un cliente de 2024 es la peor primera impresión posible de una tienda que acaba de nacer.

  • Con su fecha de entonces. Con la de hoy, tus informes de ventas mienten y el plazo de devolución se te reabre para todo el catálogo de golpe.
  • Con su número, si lo pides. La numeración de la tienda nueva se coloca por encima para que el primer pedido de verdad no choque con uno de hace dos años.
  • Enganchados a su cliente y a sus productos, para que salgan en «mis pedidos» y puedas devolver lo que se vendió antes del cambio. En WooCommerce, solo a sus productos: los clientes no vienen por la conexión (ver arriba).
  • Una línea de un producto que ya no vendes entra igual, con su título, su SKU y su precio. Es lo que hace falta para atender a quien pregunta.

El estado se traduce a pendiente, completado o cancelado, y se guarda además el original tal cual — Shopify parte el estado en dos campos y WooCommerce lo junta en uno, así que cualquier traducción pierde algo.

Los cupones

Se traen con su código, su descuento, su límite de usos y las veces que ya se usaron — sin eso, un cupón de cien usos gastado noventa y siete llega con cien disponibles.

Uno caducado también se trae, pero apagado: así quien lo tenga guardado ve «ha caducado» y no «no existe», y los pedidos viejos que lo usaron se pueden explicar.

🔴 Las condiciones no viajan todavía. Importe mínimo, restricción por producto o categoría, por correo, «no combinable»… nada de eso se trae, y un cupón sin su condición descuenta donde no debía. Te sale la lista con el código de cada uno, para que los revises antes de anunciarlos.

Reseñas, blog, páginas y colecciones

Las reseñas no vuelven a moderación. Ya pasaron por ella en tu tienda vieja; meter ochocientas en la cola obliga a revisar a mano lo ya revisado, y lo que pasa de verdad es que nadie lo hace y tus fichas se quedan sin ninguna. Lo que marcaste como spam o tiraste a la papelera se queda allí.

Del blog llegan las entradas publicadas, no los borradores. El blog es de WordPress, no de WooCommerce, y las llaves de WooCommerce no autentican sus rutas. Se traen con su portada, su firma y su fecha de publicación.

Las páginas de WordPress entran en /pagina/<dirección>, que no es la que tenían allí; en los temas de fábrica se sirven en /en/pagina/<dirección> y /es/pagina/<dirección>. Los temas Mascotas y Dulce Obrador no tienen ruta de páginas, así que en ellos no se ven. Si estaban posicionadas, añade esas URLs al mapa de redirecciones: el mapa no las lleva. Una página hija entra como padre-hija, y si dos comparten dirección, una entra con otra distinta y te decimos cuál.

Las colecciones automáticas de Shopify entran congeladas. Una colección automática es una regla («todo lo que cueste menos de 20 €») que Shopify reevalúa sola. Aquí entra con los productos que tenía el día de la mudanza, como categoría normal: funciona igual el primer día y deja de actualizarse sola. Te decimos cuáles, por su nombre.

Mientras corre

Verás las etapas, no un porcentaje: cuando algo va lento, lo que necesitas saber es en qué va lento. Puedes pausarla y seguir después.

Los problemas salen arriba y en dos bloques: lo que no ha entrado y lo que ha entrado pero conviene mirar. No están escondidos detrás de un desplegable a propósito — una migración que termina «bien» con doce avisos es una que hay que revisar antes de abrir.

Deshacer borra lo que trajo esa mudanza y te dice qué no ha podido deshacerse. Callarlo sería peor que no ofrecerlo.

Volver a pasarla

Entre la migración y el cambio de DNS pasan días, y tu tienda vieja sigue vendiendo. Vuelve a lanzarla y traerá solo lo nuevo: lo que ya está se reconoce y se actualiza, no se duplica. Ni los productos, ni los clientes, ni el historial.

Puedes repetirla las veces que quieras.

Cosas que te ahorran un disgusto

  • El precio que se trae es el que paga el cliente, no el tachado. Traer el de antes vendería más caro que tu tienda original.
  • El peso aterriza en la unidad de peso de tu tienda (Ajustes > General > Unidad de peso), convertido desde la que trajera. Confundir libras con kilos infla cada envío un 120 %, así que la mudanza hace la cuenta por ti: Shopify declara la unidad en cada variante, a WooCommerce se le pregunta su ajuste woocommerce_weight_unit, y una columna de CSV titulada Weight (lbs) lo dice en su propio nombre. Elige tu unidad de peso antes de mudarte: es donde van a caer todos los pesos, y como es una etiqueta, cambiarla después no rehace las cuentas.
  • Si el origen no dice en qué unidad trabajaba, los pesos se leen como kilos —el valor de fábrica de WooCommerce— y la mudanza lo cuenta en su informe, diciendo cuántos pesos ha tenido que suponer. Repasa unos cuantos productos antes de abrir: una tienda que trabajara en libras o en gramos saldría mal por ese factor, y nada más se quejaría.
  • Lo que estaba oculto entra como borrador. Lo archivado en Shopify también: publicarlo sería reabrir algo que cerraste a propósito.
  • Las contraseñas no viajan. Lo que guardan Shopify y WooCommerce son hashes de su propio algoritmo. Tus clientes entran como ficha y crean su cuenta con el mismo correo la próxima vez. Díselo antes de abrir, o te enteras por sus mensajes.
  • El permiso para mandar correos se copia, nunca se supone. Solo entra suscrito quien lo dijera explícitamente; vacío o raro es un no, y si un correo sale dos veces gana el no. El RGPD pide un acto afirmativo, y «ya estaban en mi lista» no es una base legal.
  • Los códigos de barras son únicos en toda la tienda. Si tu exportación repite uno, se queda el primero y a los demás se les deja en blanco — antes que perder el producto entero. Te decimos cuántos.
  • Repasa los impuestos antes de abrir. Cada plataforma guarda el IVA a su manera: mira si tus precios llevan impuesto incluido.

Catálogos grandes

Conectándote no hay límite de tamaño: el trabajo corre en segundo plano, se puede pausar y se reanuda por donde iba si algo se corta. En Shopify se pide un volcado completo y se espera a que lo prepare, que en un catálogo grande son minutos.

Con CSV el límite del fichero son 25 MB. Si tu catálogo pasa de ahí, pártelo: como no duplica nada, puedes subirlos uno detrás de otro.

Los envíos y los impuestos de WooCommerce

Se traen las zonas y sus tarifas activas, y los tipos de impuesto con su país, su provincia y su porcentaje. Pero conviene repasarlo todo antes de abrir, por cuatro cosas:

  • Una zona entra cubriendo solo sus países. Si en WooCommerce la afinabas por provincia o código postal, esas reglas se quedan fuera, y te decimos qué zona era. Afínala en Envíos.
  • Todas entran como tarifa fija, con el coste que tenían. Una que pedía el precio a un transportista en vivo entra fija también, y sale en la lista de avisos.
  • El envío gratis entra a 0 y para todos. El importe mínimo que tuviera no viaja: ponlo como condición en la tarifa, o regalas el porte en cada pedido.
  • Un coste con fórmula (10 * [qty], [fee]) no se entiende y entra a 0.

🔴 Los precios de las tarifas entran siempre en euros, fuera cual fuera la moneda de tu WooCommerce: el importe se copia tal cual y se marca como EUR. Si vendías en otra moneda, revisa cada tarifa. Si un país ya tenía un impuesto por defecto, el que llega entra como adicional y te avisamos: mira cuál se aplica.

Cómo se ajusta todo esto, en configurar los envíos.

Lo que todavía no se trae

De Shopify: los cupones, las reseñas, el blog, las páginas, los envíos y los impuestos. De los campos personalizados de las variantes, solo los de las que tienen SKU: es lo único que permite emparejarlas.

De WooCommerce: los clientes (tráelos por CSV), los campos personalizados de las variantes, las condiciones de los cupones (ver arriba), los borradores del blog, la cobertura de envíos por provincia o código postal y el importe mínimo del envío gratis.

De ninguno de los dos: los menús de navegación y las contraseñas.