Desarrollador Shopify - tiendas, headless e integraciones que aguantan picos

Desarrollador Shopify - tiendas, headless e integraciones que aguantan picos

5.00/5 - (17 votes)
10 min de lectura
Guía

Quién: soy Mariusz Szatkowski, desarrollador desde 2006, centrado en WooCommerce y Shopify. Tengo ocho certificados de Shopify Partner Academy, entre ellos Liquid Storefronts for Theme Developers. Trabajo solo: el código que recibes lo escribo yo.

Qué: temas Liquid y Online Store 2.0, frontends headless con la Storefront API y Hydrogen, checkout con Shopify Functions, integraciones con ERP y transportistas y migraciones desde WooCommerce.

Dónde: en remoto desde Gdynia, en la misma zona horaria que la España peninsular. Nos comunicamos por correo, documentos y repositorio.

Precio: presupuesto individual por escrito, después de leer tu briefing. Precio cerrado para un alcance definido o por horas para trabajo continuo.

Desarrollo Shopify para tiendas en España

Shopify te ahorra el servidor, pero no ordena por sí solo el catálogo, el IVA ni la logística. Mi trabajo es que el tema Liquid se pueda mantener, que los webhooks no dupliquen pedidos en el ERP y que el checkout siga funcionando cuando marketing añade otro píxel.

En España la tienda online suele convivir con marketplaces y con tienda física. Shopify funciona bien cuando contabilidad y almacén ven los mismos precios, tipos de IVA y plazos que el cliente en el checkout. Si además necesitas mucho contenido editorial, puede tener más sentido conectar WordPress como CMS que duplicar el catálogo en dos bases sin sincronización.

Qué decidir antes de montar la tienda

Empiezo por los mercados, los transportistas, la política de devoluciones y la facturación. Shopify Markets solo ayuda si los datos que muestra el checkout son los mismos que usa contabilidad.

En pagos, Shopify Payments está disponible en España. Bizum, Redsys u otros métodos llegan a través de proveedores y apps compatibles con tu configuración; cuál conviene es una decisión de negocio que tomas tú con tu banco o pasarela. Lo que sí hago es no acumular apps de pago que compiten por el mismo checkout y probar reembolsos parciales antes de una campaña.

Con los scripts de marketing hago inventario: qué etiqueta es de quién, para qué sirve y cuánto empeora el INP; la etiqueta que nadie reclama se elimina.

Qué hace un desarrollador Shopify

  • Metacampos y metaobjetos para fichas técnicas, tallas y compatibilidades, con importaciones CSV validadas.
  • Secciones Online Store 2.0 que el equipo de contenido ajusta sin tocar las plantillas que deciden el LCP.
  • Storefront API con paginación por cursor para colecciones grandes.
  • Admin API y fulfillment cuando hay varios almacenes, por ejemplo península y Canarias con reglas de envío distintas.
  • Revisión de apps para quitar solapamientos entre reseñas, upsell y puntos.

Liquid y migración a Online Store 2.0

Online Store 2.0 cambia las plantillas por JSON con secciones. Muchas tiendas siguen en temas antiguos porque migrar obliga a reubicar contenido y ajustes. Lo hago como una refactorización: uno snippets duplicados, quito consultas de colección dentro de bucles y doy proporciones fijas a las imágenes para evitar CLS. En el carrito lateral cuido el foco del teclado y los mensajes de stock para lectores de pantalla.

Ejemplos de código Liquid, GraphQL y webhooks para Shopify

Esquema de sección (Online Store 2.0)

{% schema %}
{
  "name": "Featured collection",
  "tag": "section",
  "class": "section-featured-collection",
  "settings": [
    {
      "type": "collection",
      "id": "collection",
      "label": "Collection"
    },
    {
      "type": "range",
      "id": "products_to_show",
      "min": 2,
      "max": 12,
      "step": 1,
      "default": 4,
      "label": "Products to show"
    }
  ],
  "presets": [{ "name": "Featured collection" }]
}
{% endschema %}

Consulta Storefront API con paginación por cursor

Variables: handle (colección), first (tamaño de página), after (cursor).

query CollectionProducts($handle: String!, $first: Int!, $after: String) {
  collection(handle: $handle) {
    id
    title
    products(first: $first, after: $after) {
      pageInfo {
        hasNextPage
        endCursor
      }
      edges {
        cursor
        node {
          id
          handle
          title
        }
      }
    }
  }
}

Cómo procesar webhooks de Shopify sin duplicados

Shopify puede entregar el mismo webhook más de una vez. Según su documentación, se deduplica por X-Shopify-Webhook-Id. La respuesta debe llegar en cinco segundos, así que el receptor solo encola.

// Pseudocódigo: receptor estilo Node con caché de deduplicación breve
async function handleOrderCreate(payload, headers) {
  const webhookId = headers["x-shopify-webhook-id"];
  const orderId = payload?.id?.toString();
  if (!webhookId || !orderId) return { status: 400 };

  const dedupeKey = `orders/create:${webhookId}`;
  if (await cache.has(dedupeKey)) {
    return { status: 200, body: "duplicate ignored" };
  }

  await enqueueErpExport(orderId);
  await cache.set(dedupeKey, "1", { ttlSeconds: 86400 });
  return { status: 200 };
}

Bucle Liquid acotado para la rejilla de producto

Un limit fijo y anchos explícitos en image_url evitan bucles caros y descargas de imagen excesivas en el móvil.

{% assign cap = section.settings.products_to_show | default: 8 %}
{% assign collection = section.settings.collection %}
<ul class="product-grid" role="list">
  {% for product in collection.products limit: cap %}
    <li>
      <a href="{{ product.url }}">
        {{
          product.featured_image
          | image_url: width: 640
          | image_tag: loading: 'lazy', widths: '320,640,960'
        }}
      </a>
    </li>
  {% endfor %}
</ul>

Cómo añadir productos al carrito con Storefront API

Si quieres que el token no viaje en el bundle del navegador, lanza la mutación desde el servidor: una ruta propia, un worker o una action de React Router en Hydrogen.

mutation cartLinesAdd($cartId: ID!, $lines: [CartLineInput!]!) {
  cartLinesAdd(cartId: $cartId, lines: $lines) {
    cart {
      id
      totalQuantity
    }
    userErrors {
      field
      message
    }
  }
}

Variables de ejemplo:

{
  "cartId": "gid://shopify/Cart/YOUR_CART_ID",
  "lines": [
    {
      "merchandiseId": "gid://shopify/ProductVariant/YOUR_VARIANT_ID",
      "quantity": 1
    }
  ]
}

Hydrogen, Storefront API y Oxygen

La Storefront API da acceso por GraphQL al catálogo y al carrito, para que un frontend propio pinte colecciones y gestione el carrito sin Liquid. Hydrogen es el stack de Shopify para eso: su plantilla usa React Router 7 en modo framework y se despliega en Oxygen, el alojamiento de Shopify. Si tu equipo ya trabaja con Next.js o Astro, puede llamar a la Storefront API directamente y quedarse con su sistema de diseño.

Headless no es más rápido por definición. Un bundle de React con diez trackers pierde frente a un buen tema Liquid. Comparo el LCP en las mismas URLs de colección, el peso del JavaScript, el coste de alojamiento y cómo previsualiza los cambios quien no programa. Si el tema optimizado basta, me quedo en Liquid.

Cómo personalizar el checkout de Shopify con Functions

Shopify no deja meter JavaScript libre en el checkout, y eso protege a la tienda y al comprador. Descuentos, gastos de envío y métodos de pago se personalizan con Shopify Functions; la interfaz, con checkout UI extensions.

Lo que depende del plan, según la documentación de Shopify:

  • Las checkout UI extensions en los pasos de información, envío y pago solo funcionan en Shopify Plus.
  • Las apps personalizadas que contienen Functions también exigen Plus. Las apps públicas de la App Store con funciones sirven en cualquier plan.

Por eso, antes de prometer un cambio en el checkout, compruebo tu plan y qué se puede resolver con una app pública.

Integración de Shopify con ERP mediante webhooks y colas

Pedidos y stock necesitan receptores idempotentes. Shopify reintenta un webhook fallido 8 veces durante 4 horas y, si una suscripción creada por Admin API falla 8 veces seguidas, la elimina. Una cola con registro de errores evita que una caída del ERP se convierta en descuadres de stock que nadie ve hasta el siguiente inventario. Si vendes en tienda física y online, los ajustes de stock se programan para no chocar con las horas punta de caja.

Si vienes de WooCommerce, se puede migrar por partes: primero catálogo y pagos en Shopify, y el checkout antiguo se apaga cuando los webhooks llevan un tiempo estables.

Rendimiento y Core Web Vitals en Shopify

La CDN de Shopify ayuda, pero el tema y las etiquetas deciden el INP y el CLS. Mido cada plantilla, aplazo el JavaScript que no hace falta al cargar y cargo las fuentes de forma que no muevan el contenido. Te entrego el antes y el después medidos con el mismo perfil de prueba.

Venta B2B e internacional

Las funciones B2B de Shopify (empresas cliente, catálogos, condiciones de pago) están en los planes Basic, Grow, Advanced y Plus, con alcance distinto según el plan; en Starter y Retail no. Con Markets configuro monedas y textos de envío para que el total sea el mismo antes y después del pago. Aranceles y fiscalidad de envíos fuera de la UE los decides con tu asesor; el código aplica las reglas acordadas.

Migración a Shopify sin perder SEO

Una migración sin mapa de redirecciones acaba en un Search Console lleno de 404. Mi orden de trabajo:

  1. Inventario de URL: exporto todas las URL de productos, categorías y páginas de la tienda actual.
  2. Mapa 301: cada URL antigua apunta a su equivalente en Shopify, con los handles definidos antes de importar.
  3. Datos: productos, clientes y pedidos se importan con los atributos técnicos en metacampos, para que los filtros de colección sigan funcionando.
  4. Datos estructurados: Product y Organization reflejan la oferta real, con precios y disponibilidad iguales a los visibles.
  5. Después del DNS: reviso Search Console y corrijo las redirecciones que falten.

Los asistentes de IA citan mejor una tienda cuando la política de devoluciones, los plazos de envío y las especificaciones dicen lo mismo en el HTML, en el JSON-LD y en las FAQ.

Stack técnico para desarrollo Shopify

El tema vive en Git con integración continua y los secretos quedan fuera de Liquid. Documento las integraciones para que tu equipo de sistemas pueda mantenerlas sin depender de mí.

Integraciones de Shopify con pagos, logística y ERP

CategoríaHerramientas y métodos
PagosShopify Payments (disponible en España) y métodos locales a través de proveedores compatibles.
LogísticaCorreos, SEUR, GLS, MRW o la API de tu almacén.
ERPAdmin API, webhooks, colas y conciliación de stock.
AnalíticaGA4 y etiquetado en servidor cuando el consentimiento lo permite.
Email marketingKlaviyo o similares sin cargar de más el storefront.
ContenidoWordPress o un CMS headless sin duplicar el catálogo.

Si estás creando una app de Shopify y necesitas ayuda con su ficha en la App Store, la medición del onboarding y el seguimiento posterior, eso es ingeniería go-to-market.

Qué puedes esperar y qué no prometo

  • Una sola persona: quien lee tu briefing escribe el código y revisa los webhooks. No hay equipo, gestores de cuenta ni subcontratas.
  • Comunicación por escrito: correo, documentos y repositorio. Si necesitas una llamada, pídemela.
  • Contrato y factura: contrato B2B bajo ley polaca, factura con inversión del sujeto pasivo y mi NIF-IVA europeo PL7393037445. Si accedo a datos personales, antes firmamos el contrato de encargo del art. 28 RGPD.
  • Sin garantías de ventas: optimizo tema, integraciones y medición. Los ingresos dependen de tu tráfico, margen y surtido.
  • Sin guardias: no ofrezco servicio 24/7 ni tiempos de respuesta garantizados.

Credenciales de Shopify Academy

Cómo empezar un proyecto Shopify

Envíame por el formulario de contacto la URL de la tienda, tu plan de Shopify, la lista de apps e integraciones y las fechas de campaña. Te respondo por escrito con preguntas y, cuando el alcance esté claro, con un presupuesto y los supuestos en los que se basa.

Explora otros servicios WordPress y base de conocimiento

Refuerza tu negocio con soporte técnico profesional en áreas clave del ecosistema WordPress.

Recomendaciones de LinkedIn

Recomendaciones y opiniones sobre el trabajo con WPPoland

Recomendaciones seleccionadas de líderes de las comunidades WordPress, WordCamp y e-commerce - con énfasis en la entrega puntual, profundidad técnica y enfoque orientado al negocio en el desarrollo WordPress.

Karolina Czapla

Karolina Czapla

Estratega de Marketing, Performance & Digital Strategy

“Trabajar con Mariusz en el WordCamp me ha mostrado lo poco común que es combinar competencias técnicas profundas con un verdadero liderazgo. Planifica, coordina y entrega con precisión, a la vez que da al equipo espacio ...”

Co‑organizadora, WordCamp Gdynia 2024 y 2025

Anna Kamińska

Anna Kamińska

Talent Acquisition Specialist / HR People Partner

“El portafolio de Mariusz habla por sí solo: refleja su precisión, versatilidad y sentido de la responsabilidad. Se puede confiar en él para conducir un proyecto desde la idea hasta la entrega, mantener informados a los s...”

Trabajamos en el mismo equipo

Sarah‑Luisa Kwolek

Sarah‑Luisa Kwolek

Gestora de Proyectos TI & Product Owner, Web/App

“Durante más de dos años pude contar siempre con Mariusz para tareas de WordPress, desde el styling y los templates hasta integraciones con terceros. Aporta estabilidad al equipo y mantiene la parte de frontend bajo contr...”

Mariusz fue su cliente en proyectos WordPress

Argert Boja

Argert Boja

Senior Full‑Stack Developer

“Mariusz es el compañero de equipo que todos esperan tener: competencias técnicas profundas full‑stack en WordPress, explicaciones claras y una actitud positiva incluso bajo presión. Se mueve con soltura entre plugins per...”

Trabajamos juntos en proyectos WordPress

Varun Patil

Varun Patil

Líder de Growth & CRM

“Más allá del desarrollo, Mariusz entiende SEO, analítica y growth. Habla directamente con los stakeholders, hace las preguntas correctas y entrega soluciones que mueven los indicadores de negocio: de AMP a tracking y ren...”

Fue responsable de Mariusz en iniciativas de growth

Rafał Osiński

Rafał Osiński

Founder @ EasyTrips.pl, Senior WordPress Dev

“Conozco a Mariusz a través de la comunidad WordPress desde hace muchos años. Es fiable, muy implicado y siempre está presente: en meetups, WordCamps y en los proyectos. Si le importa la colaboración a largo plazo y algui...”

Co‑organizador de la comunidad WordUp Trójmiasto y WordCamp

Daniel Blossfeld

Daniel Blossfeld

Consultor de Optimización de Procesos y Digitalización

“Tuve el placer de trabajar con Mariusz durante casi tres años. En ese tiempo, sus competencias técnicas profundas en desarrollo WordPress resultaron de un valor incalculable en una variedad de proyectos, desde la constru...”

Mariusz fue su cliente en proyectos WordPress

Natalie Wiszczor

Natalie Wiszczor

Gestora de CRM y E-mail Marketing

“Tuve el gran placer de trabajar con Mariusz durante más de 4 años en el ámbito técnico. Durante ese tiempo demostró ser un compañero competente y fiable. Destacaron especialmente su carácter amable y su notable persevera...”

Trabajó con Mariusz en distintos equipos

Mark Chalklen

Mark Chalklen

Head of Design & Build en Itineris Limited

“Mariusz es un gran miembro del equipo, siempre dispuesto a meterse de lleno en cualquier tarea y a aprender cosas nuevas. Un excelente comunicador y, en general, una persona muy agradable con la que trabajar. ¡Eso sí, es...”

Gestionó a Mariusz directamente

Jessica Di Pasquale

Jessica Di Pasquale

Liderando iniciativas de SEO con estrategias de crecimiento basadas en datos.

“Mariusz es una persona muy hábil, paciente y experta. Siempre dispuesto a ayudar y corregir errores, valoré mucho trabajar con él. ¡Es un compañero estupendo!”

Gestionó a Mariusz directamente

Biki John

Biki John

Apasionado del Marketing de Contenidos y entusiasta del SEO

“Fue genial trabajar con Mariusz. Valoré mucho su amplio conocimiento de WordPress y lo útil que resultó siempre que necesité ayuda para moverme por el CMS. Elogio totalmente a Mariusz por su paciencia, su buen carácter y...”

Trabajó con Mariusz en distintos equipos

Rafal Borowiec

Rafal Borowiec

Desarrollador de Software, Consultor, Manager y Profesor

“Tuve la oportunidad de trabajar con Mariusz durante 7 meses. Destaca en optimización técnica para motores de búsqueda (SEO). Mariusz cuenta también con una sólida experiencia en desarrollo AMP, GTM y GA. Se siente muy có...”

Gestionó a Mariusz directamente

Belinda Koch

Belinda Koch

Analista de Web-Tracking en TUI

“Mariusz es una persona estupenda con quien trabajar. Está extremadamente motivado por aprender cosas nuevas y compartir su conocimiento, y domina una amplia gama de temas. Trabajamos juntos en analítica digital y trackin...”

Trabajó con Mariusz en temas de analítica digital y tracking

Ali Nezamolmaleki

Ali Nezamolmaleki

Growth, SEO, Pensamiento Analítico, AMP

“Mariusz es una persona extremadamente talentosa en su campo de trabajo. Siempre es capaz de aportar una nueva perspectiva para resolver problemas y de pensar fuera de la caja en situaciones en las que todo parece bloquea...”

Trabajó con Mariusz en el mismo equipo

Karol Jakubcewicz

Karol Jakubcewicz

Desarrollador Front-end / JavaScript

“Mariusz es un desarrollador WordPress y especialista en SEO/SEM increíblemente experimentado con quien he tenido el placer de trabajar durante casi dos años. Fue una de las figuras clave responsables de la mejora constan...”

Trabajó con Mariusz en el mismo equipo

Paweł Lewczuk

Paweł Lewczuk

Desarrollador Front-end, Desarrollador WordPress

“Colaboré con Mariusz en varios proyectos y nuestra cooperación fue siempre ejemplar. Creo que aún tenemos por delante muchos proyectos conjuntos. ¡Muy recomendable!”

Mariusz fue cliente de Paweł

Przemek Wroblewski

Przemek Wroblewski

Desarrollador de Software con más de 20 años de experiencia

“Encontré en Mariusz a alguien con gran experiencia y un conocimiento profundo de las soluciones frontend. Un desarrollador WordPress sólido, competente y responsable. Tiene facilidad para construir relaciones interperson...”

Trabajó con Mariusz en distintos equipos

Preguntas frecuentes

Preguntas sobre alcance, entrega, costes y calidad.

¿Cuánto cuesta el desarrollo Shopify?#
Presupuesto cada proyecto por separado, después de leer tu briefing: catálogo, mercados, apps, integraciones y fechas de campaña. Limpiar un tema Online Store 2.0 y conectar un ERP con varios almacenes son trabajos de tamaño muy distinto. Recibes una propuesta escrita con los supuestos en los que se basa, a precio cerrado o por horas. Aquí no publico tarifas.
¿Necesito Shopify Plus?#
Muchas tiendas no. Trabajo en todos los planes, pero algunas cosas dependen de Plus según la documentación de Shopify: las checkout UI extensions en los pasos de información, envío y pago, y las apps personalizadas que contienen Shopify Functions. Las apps públicas de la App Store con funciones sirven en cualquier plan. Las funciones B2B existen en Basic, Grow, Advanced y Plus, con distinto alcance según el plan. Antes de recomendar un cambio de plan compruebo qué necesitas de verdad.
¿Hace falta headless para que la tienda vaya rápida?#
Casi nunca es lo primero. Antes reviso Liquid, imágenes, apps y píxeles que empeoran el INP en el móvil, y mido las plantillas de colección y producto con datos de usuarios reales. Headless tiene sentido cuando la tienda optimizada sigue sin llegar y el coste de mantener un segundo frontend compensa. Si es opcional, te lo digo por escrito con lo que cuesta mantenerlo.
¿Hydrogen, Liquid o un frontend propio con Storefront API?#
Hydrogen usa React Router 7 en modo framework y se despliega en Oxygen, el alojamiento de Shopify. Encaja si tu equipo ya trabaja con React. Liquid sigue siendo la opción más sencilla cuando el merchandising vive en el editor de temas y el problema real son las apps o el código del tema. Astro o Next.js contra la Storefront API son la tercera vía si ya tienes un sistema de diseño ahí. Decido con LCP e INP medidos, no por moda.
¿Cómo evitas pedidos duplicados por webhooks?#
Shopify puede enviar el mismo webhook más de una vez, así que el receptor deduplica por la cabecera X-Shopify-Webhook-Id y procesa de forma idempotente. Shopify espera respuesta en cinco segundos y, si falla, reintenta 8 veces durante 4 horas; por eso el receptor solo encola y el envío al ERP se hace después, con reintentos propios y un registro de errores que se puede revisar.
¿Te encargas de un tema hecho por otra agencia?#
Sí. Empiezo leyendo el código en una copia sin publicar, sin tocar la tienda en producción, y te envío por escrito qué archivos afectan a precio, carrito y cuenta. Los cambios van por Git y los revisas en un tema sin publicar antes de activarlos. Solo propongo rehacer el tema si arreglarlo cuesta más.
¿Se puede migrar de WooCommerce sin perder posiciones?#
Migro productos, clientes y pedidos con los atributos en metacampos para no perder filtros ni feeds, y preparo un mapa de redirecciones 301 de cada URL antigua. Tras el cambio de DNS reviso Search Console en busca de 404. Nadie puede garantizar posiciones; el mapa de redirecciones es lo que más pérdida evita.
¿Conectas Shopify con el ERP?#
Sí, mediante Admin API, webhooks y una capa intermedia con cola y registro. El mapeo de campos, tipos de IVA y códigos de almacén queda por escrito antes de programar. Pruebo envíos parciales, devoluciones y reembolsos antes de que la integración cargue con una campaña.
¿Desarrollas apps privadas?#
Solo cuando ni una sección de tema, ni Shopify Flow, ni una app pública resuelven el caso. La app pide los permisos mínimos. Ten en cuenta que una app personalizada con Shopify Functions requiere Shopify Plus.
¿Cómo tratas el RGPD?#
Antes de acceder a datos personales firmamos un contrato de encargo del tratamiento según el art. 28 RGPD. Documento qué datos salen de Shopify hacia CRM, email y analítica, y los tokens de API llevan el alcance mínimo. No uso subencargados.
¿Ofreces mantenimiento?#
Sí, como trabajo mensual con alcance por escrito: revisión de apps y del tema, cambios planificados y vigilancia de las integraciones. No ofrezco guardias 24/7 ni tiempos de respuesta garantizados.
¿Cómo me informas del avance?#
Por correo, en documentos y en el repositorio. Cada cambio llega con una descripción de lo que hice y de cómo revisarlo. Si en algún momento prefieres una llamada, pídemela.

¿Necesitas un FAQ adaptado a tu sector y mercado? Preparo una versión alineada con tus objetivos de negocio.

Hablemos

Artículos Relacionados