Escenario · Tienda online de piezas únicas · Artesanía artística

Piezas únicas online,
sin vender dos veces la misma.

Un taller que crea obras únicas y las vende en tienda, en persona y por mensaje. Una tienda online pensada para piezas únicas, encargos a medida y envíos de objetos frágiles, también al extranjero.

Tipo de proyectoTienda online de piezas únicas
SectorArtesanía artística
Plazos habituales8–10 semanas
●Escenario
tienda online · escultura de terracota
Taller
Catálogo
Encargos
Taller
🛒 0
Pieza única
Escultura · Serie Alba
Alba en Terracota #07
€ 480
IVA incluido · envío calculado en el checkout
Dimensiones
h 34 cm · Ø base 12 cm · peso 1,8 kg
Terracota esmaltada a mano · cocción a 1220°C
Disponible ahora
COMPRAR — PIEZA ÚNICA
¿Quieres una pieza por encargo?
Pide un presupuesto → 3–6 semanas

Escenario e-commerce — esculturas y cerámica artesanal

Un taller histórico.
Ninguna presencia digital.

Imagina un taller de cerámica en Deruta —la capital italiana de la mayólica— en manos de la misma familia desde hace generaciones. Produce esculturas y objetos decorativos de terracota esmaltada a mano, con técnicas que van de la mayólica renacentista a formas contemporáneas que encargan coleccionistas e interioristas europeos.

El escenario: un taller de cerámica que vende solo en su tienda, en ferias de artesanía y a través de un distribuidor en el extranjero. La web es un escaparate estático de hace muchos años: sin e-commerce, sin peticiones de encargos online, sin versión en inglés ni en alemán, aunque buena parte de quienes visitan el taller vienen de fuera.

El problema de fondo: cada pieza es distinta. Vender cerámica artesanal online no es como vender camisetas en tres tallas. El catálogo tiene que mostrar en tiempo real qué sigue disponible, qué ya se ha enviado y qué se puede encargar desde cero con sus propios plazos y costes.

«Los clientes extranjeros nos preguntan si pueden comprar online. Siempre decimos que no. Perder una venta por no tener web, en algún momento, deja de ser aceptable.»

— Lo que oigo a menudo en los talleres artesanos
Escenario E-commerce + catálogo en vivo + encargos (ejemplo)
Plataforma WooCommerce + PHP 8
Plugins a medida Gestor de piezas únicas, generador de encargos, cálculo de envíos frágiles
Idiomas IT · EN · DE (WPML)
Duración típica 8–9 semanas
Etiquetas
WooCommerce PHP a medida WPML piezas únicas encargos envíos frágiles Stripe

Retos de WooCommerce para piezas artesanales únicas

Cinco problemas que resolver,
ninguno estándar.

Un catálogo "vivo": cada pieza única e irrepetible

Cuando se compra una obra tiene que desaparecer del catálogo en tiempo real, sin que nadie más pueda añadirla al carrito. Cantidad siempre = 1 por artículo, con un bloqueo atómico durante el checkout.

Formulario de encargos a medida con presupuesto

El cliente tiene que poder pedir una pieza a medida: tamaño, técnica, tema, colores. El formulario genera un presupuesto automático a partir de parámetros configurables (horas × complejidad × materiales) que el artesano puede aprobar o modificar.

Envío de cerámica frágil: cálculo inteligente del embalaje

Las esculturas necesitan embalajes a medida (doble espuma, caja de madera para piezas de más de 30 cm). El coste depende del peso, el tamaño, la zona de entrega y la fragilidad. Un plugin a medida calcula el presupuesto en tiempo real con las API de los transportistas (p. ej. DHL y GLS).

Web trilingüe IT / EN / DE sin contenido duplicado

Cada ficha de producto existe en tres idiomas. Las traducciones se gestionan con WPML y un primer borrador automático (p. ej. DeepL), con revisión manual de los textos técnicos sobre esmaltes. URL separadas por idioma con hreflang correcto.

Panel para el artesano: un catálogo que cualquiera puede gestionar

En el taller tienen que poder subir una pieza nueva en un par de minutos: fotos, título, técnica, precio, tamaño, y el resto es automático. Nada de editores complicados: un formulario propio con ACF Pro, pensado para su forma de trabajar.

Plugins WooCommerce a medida para piezas únicas

El diablo está en los detalles.
Sobre todo con WooCommerce.

WooCommerce está pensado para catálogos con varios SKU y stock variable. Adaptarlo a un modelo en el que "cada producto existe una sola vez" exige intervenciones quirúrgicas en el núcleo del carrito, en la experiencia de checkout y en todo el sistema de sincronización del catálogo multilingüe.

01

Condición de carrera en la pieza única

Dos personas añaden la misma pieza al carrito en el mismo momento. WooCommerce por sí solo no lo impide: las dos llegan al checkout y una paga una obra ya vendida. Solución: un bloqueo transaccional en MySQL sobre wc_reserved_stock, que se libera solo si el pago no llega en 15 minutos.

02

Cálculo de envíos frágiles en tiempo real

Los transportistas no tienen API estándar para "pieza frágil en caja de madera". Hace falta una calculadora a medida que estime el volumen del embalaje (+40% por la doble capa), calcule el peso volumétrico, elija el mejor transportista para el destino y muestre el precio en el carrito por AJAX, con una caché de una hora para reducir llamadas.

03

Presupuesto de encargos: lógica de precios no lineal

El precio de un encargo depende del tamaño, la técnica (mayólica, vidriada, raku), el número de colores, el tema (geométrico o figurativo) y la urgencia. Ninguna fórmula lineal: una matriz de coeficientes configurable desde el panel, con un resultado en forma de rango (€ mín–máx) para no atar al cliente a una cifra antes de hablar.

04

WPML + WooCommerce: sincronización de stock en tres idiomas

WPML duplica los productos para cada idioma, pero WooCommerce gestiona el stock en la versión principal. El riesgo: una compra desde la versión inglesa no actualiza la disponibilidad en la alemana. Solución: un hook en woocommerce_reduce_order_stock que propaga la actualización a todas las traducciones mediante la API de WPML.

05

SEO para obras de arte: datos estructurados + imágenes en alta resolución

Las cerámicas deben indexarse con Schema.org VisualArtwork (no Product) para describir cada obra con precisión a los buscadores, lo que favorece su visibilidad en Google Imágenes. Cada obra lleva en sus metadatos artista, técnica, material, dimensiones y año de producción. Las imágenes en alta resolución (5–10 MB) se sirven en WebP progresivo con lazy loading para no afectar al LCP.

Proceso de desarrollo de un e-commerce de cerámica

8–9 semanas de cero
al catálogo online.

Semanas 1–2
Auditoría, arquitectura y modelo de datos

Se parte de la forma de trabajar real del taller: cómo nacen las piezas, cómo se fotografían, qué necesita saber un coleccionista europeo antes de comprar. De ahí salen el modelo de datos (técnica, cocción, tamaño, serie, año) y una arquitectura de tres plugins a medida independientes entre sí.

→ Entrega: arquitectura técnica + estructura de contenidos + wireframe del panel
Semanas 3–4
Gestor de piezas únicas + bloqueo transaccional

El corazón del sistema: cada producto tiene la cantidad fijada en 1 mediante un hook en woocommerce_product_get_stock_quantity. El bloqueo transaccional en MySQL impide compras dobles: un registro en wc_reserved_stock se crea de forma atómica cuando la pieza entra en el carrito y se libera a los 15 minutos si no llega el pago. Pruebas de carga con decenas de sesiones simultáneas sobre el mismo artículo.

→ Plugin PHP con pruebas PHPUnit
Semanas 5–6
Cálculo de envíos frágiles + generador de encargos

La calculadora integra las API REST de los transportistas: toma peso, tamaño y fragilidad, calcula el volumen del embalaje con coeficientes de seguridad (×1,4 por la doble espuma, caja de madera por encima de 30 cm) y devuelve el coste por AJAX con una caché de 60 minutos. El generador de encargos crea presupuestos por rango (mín–máx) a partir de una matriz de 4 variables configurable sin código.

→ API de transportistas · matriz de coeficientes · AJAX + caché
Semana 7
WPML trilingüe + schema VisualArtwork + panel ACF

WPML con borradores automáticos IT→EN→DE y revisión manual de los términos técnicos (mayólica, vidriado raku, arcilla refractaria). Un hook en woocommerce_reduce_order_stock mantiene el stock alineado en todos los idiomas. Datos estructurados VisualArtwork en JSON-LD en cada ficha. Panel con ACF Pro: una pieza nueva se sube con 4 campos y el resto es automático.

→ hreflang en 3 idiomas · JSON-LD VisualArtwork · formulario ACF Pro a medida
Semanas 8–9
Rendimiento, SEO, pruebas y lanzamiento

Optimización de imágenes (originales de 5–10 MB → WebP progresivo con carga diferida y marcador difuminado). Stripe con métodos de pago locales para Alemania (SEPA) y Reino Unido (Bacs). Pruebas automáticas con Playwright, incluida "la misma pieza comprada a la vez desde dos sesiones". Lanzamiento gradual con una primera colección pequeña.

→ Objetivo Lighthouse 90+ · pruebas automáticas · lanzamiento con una primera colección

Solución técnica WooCommerce para artesanía

Tres plugins a medida.
Una única lógica artesana.

Ningún plugin existente cubre este caso. La solución son tres módulos PHP separados, cada uno con una tarea clara, conectados a WooCommerce con los hooks oficiales sin tocar nunca el núcleo.

Solución 01 / 03

Gestor de piezas únicas: un catálogo que se actualiza solo

Cada producto se marca como "pieza única" con un campo ACF. El plugin intercepta el añadir al carrito y lo bloquea si otro carrito ya ha reservado la pieza. Al completarse el pedido, el producto pasa a privado (ya no aparece en el catálogo) en lugar de "agotado": la URL sigue activa para el SEO y muestra una página de "esta obra ha encontrado hogar" con obras parecidas disponibles.

// unique-piece-manager.php — bloqueo atómico al añadir al carrito add_filter( 'woocommerce_add_to_cart_validation', 'tc_lock_unique_piece', 10, 3 ); function tc_lock_unique_piece( $passed, $product_id, $qty ) { if ( ! get_post_meta( $product_id, '_tc_unique_piece', true ) ) { return $passed; // no es una pieza única, sin bloqueo } // bloqueo transaccional: INSERT ... ON DUPLICATE KEY UPDATE global $wpdb; $reserved = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}wc_reserved_stock WHERE product_id = %d AND timestamp > %s AND order_id != %d", $product_id, date( 'Y-m-d H:i:s', time() - 900 ), // 15 min 0 ) ); if ( $reserved > 0 ) { wc_add_notice( 'Esta pieza ya está en el carrito de otro cliente. Explora las obras disponibles.', 'error' ); return false; } return $passed; }
Solución 02 / 03

Cálculo de envíos frágiles: embalaje a medida

La calculadora recibe del carrito el peso neto, las dimensiones (alto × ancho × fondo en cm) y el nivel de fragilidad (1 normal, 2 alta, 3 máxima para piezas de más de 30 cm o esmaltes en frío). Aplica los coeficientes de embalaje, calcula el peso volumétrico con las fórmulas de los transportistas (L×W×H / 5000 o / 4000) y consulta sus API. Al carrito llega por AJAX el precio más bajo compatible con la fragilidad, con caché de 60 minutos por destino y peso.

Para envíos fuera de la UE (Reino Unido, Suiza, Estados Unidos) el plugin prepara automáticamente el formulario aduanero CN23 con la partida correcta para "obras de arte en cerámica" (código HS 6913.90).

Cálculo del envío
Resumen del envío
DHL Express (2–3 días) € 38,50
GLS Premium Fragile ✓ € 24,90
Recogida en el taller Gratis
Embalaje frágil de doble capa · caja de madera incluida · seguro de 500 €
Solución 03 / 03

Generador de encargos: presupuesto automático, ningún email perdido

Sin un sistema, las peticiones de encargo llegan por email y a menudo incompletas: sin tamaño, sin presupuesto, sin idea de la técnica. Muchas se pierden en el ir y venir. El generador guía al cliente en 4 pasos (técnica → tamaño → tema → urgencia), muestra un rango de precio en tiempo real (calculado en el servidor, no en el JavaScript) y envía al artesano un aviso con todos los datos para responder con un presupuesto definitivo en un clic. Los encargos aceptados se convierten en un pedido de WooCommerce con pago en dos plazos (50% al momento con Stripe, 50% a la recogida).

Objetivo: casi todas las peticiones de encargo completas al primer envío, y respuesta en el día en lugar de días después.

Stack tecnológico WooCommerce PHP

Cada herramienta tiene
un motivo preciso.

WooCommerce
PHP 8
WPML
DeepL API
Stripe (SEPA + Card)
API de transportistas (p. ej. DHL)
API de transportistas (p. ej. GLS)
ACF Pro
Rank Math SEO
Playwright E2E
3 plugins a medida
WP Rocket + WebP

¿Por qué WooCommerce y no Shopify?

Shopify no permite forzar la lógica de stock a nivel de servidor sin apoyarse en webhooks asíncronos, demasiado lentos para evitar condiciones de carrera en piezas únicas. WooCommerce, con acceso directo a la base de datos MySQL, permite bloqueos transaccionales síncronos. Además, WPML en un WordPress autoalojado es mucho más flexible para el modelo de tres idiomas con URLs separadas y hreflang en futuros dominios regionales.

¿Por qué tres plugins y no uno?

Separar las tareas (piezas únicas, envíos, encargos) permite actualizar o sustituir un componente sin tocar los demás. La calculadora de envíos, por ejemplo, se puede desactivar cuando el taller suspende los envíos internacionales, sin afectar ni al catálogo ni a los encargos.

Objetivos de ejemplo — e-commerce artesanal

De cero a ventas online
en toda Europa.

Cifras de ejemplo, no resultados de un cliente: objetivos realistas para un escenario como este, a medir en los seis primeros meses online frente a los canales físicos.

↑
Ventas online vs físicas
un canal de venta nuevo, que antes no existía
✓
Primera colección agotada
objetivo para la primera colección online
+3
Mercados extranjeros abiertos
objetivo: nuevos países alcanzados
90%+
Encargos completados
objetivo de peticiones completas
€ 680
Ticket medio
valor medio de una pieza única (ejemplo)
90+
Puntuación Lighthouse
objetivo incluso con imágenes pesadas

«Una clienta del extranjero compra la escultura terminada la semana anterior, con el taller cerrado.» Ese es el escenario al que apuntar: un taller que vende aunque no haya nadie en el mostrador.

— El objetivo concreto del proyecto

Aprendizajes de WooCommerce para productos artesanales

Lo que aplico
en cada proyecto así.

→

Las piezas únicas necesitan un modelo de datos distinto al de los productos normales. La tentación es usar WooCommerce "tal cual" con stock = 1. Pero sin bloqueo transaccional el riesgo de venta doble es real y difícil de gestionar a posteriori, sobre todo con cerámicas que no se pueden "sustituir desde el almacén".

→

La página de "obra vendida" es oro para el SEO. En lugar de un 404, mostrar la obra vendida con un mensaje evocador ("esta obra ha encontrado hogar") y un enlace a obras parecidas reduce las salidas inmediatas y lleva a ver más piezas.

→

En los encargos, un rango de precio funciona mejor que un precio fijo. Mostrar "800–1.200 €" en lugar de atar al cliente a una cifra antes de hablar trae más peticiones completas. El cliente llega ya alineado con el presupuesto y el artesano no tiene que gestionar expectativas imposibles.

→

SEPA abre el mercado alemán. En Alemania mucha gente no usa la tarjeta de crédito como en Italia: sin un cargo bancario local, muchos abandonan en el checkout. Activar SEPA es un detalle trivial que marca una gran diferencia, y un error que se repite a menudo.

→

Los datos VisualArtwork traen tráfico que Product no ve. Las búsquedas de obras de arte en Google Imágenes traen visitas cualificadas: quien busca "escultura de mayólica contemporánea" tiene una intención de compra mucho mayor que quien llega desde búsquedas genéricas.

¿Tienes un catálogo fuera de lo común?

Piezas únicas, ediciones limitadas, encargos a medida: si tu producto no encaja en ninguna plantilla, hablemos.

¿Tienes en mente un proyecto parecido?

Cuéntamelo: partimos de objetivos y prioridades, y la primera llamada es gratuita.