Case study e-commerce — sculture artigianali

Quando ogni pezzo
è irripetibile
e il sito lo deve sapere

TerraCollection è una bottega di Deruta che produce sculture ceramiche artigianali in pezzo unico e commissionabili su misura. L'obiettivo: portare online un catalogo vivo dove ogni opera scompare alla vendita, gestire commissioni internazionali e spedire fragilità in tutto il mondo senza rompere nulla — né le ceramiche né il processo.

ClienteTerraCollection
LuogoDeruta (PG)
Anno2024
SettoreArtigianato / Arte
terracollection.it/scultura/alba-terracotta
TerraCollection
Catalogo
Commissioni
Bottega
🛒 0
Pezzo unico
Scultura · Serie Alba
Alba in Terracotta #07
€ 480
IVA inclusa · spedizione calcolata al checkout
Dimensioni
h 34 cm · Ø base 12 cm · peso 1,8 kg
Terracotta smaltata a mano · cottura 1220°C
Disponibile ora
ACQUISTA — PEZZO UNICO
Vuoi un pezzo su commissione?
Richiedi un preventivo → 3–6 settimane

Case study e-commerce sculture artigianali Deruta

Una bottega da cinque generazioni.
Zero presenza digitale.

TerraCollection è una bottega ceramica di Deruta — la capitale italiana della maiolica — attiva da oltre un secolo. Luca e Giulia, quinta generazione, producono sculture e oggetti decorativi in terracotta smaltata a mano, con tecniche che vanno dalla maiolica rinascimentale alle forme contemporanee commissionate da collezionisti e interior designer europei.

Prima di questo progetto, la bottega vendeva esclusivamente in loco (negozio + fiere d'artigianato) e tramite un unico rivenditore a Monaco di Baviera. Il sito web esistente era una vetrina statica del 2017: nessun e-commerce, nessuna possibilità di richiedere commissioni online, nessuna versione in inglese o tedesco nonostante il 60% dei visitatori in bottega fosse straniero.

Il problema fondamentale: ogni pezzo è diverso dall'altro. Vendere ceramica artigianale online non è come vendere magliette in tre taglie. Un catalogo live deve riflettere istantaneamente cosa c'è ancora disponibile, cosa è già partito per la Germania, e cosa può essere commissionato ex novo con tempi e costi specifici.

«Avevamo clienti tedeschi che ci chiedevano se potevano comprare online. Rispondevamo sempre di no. Perdere una vendita perché non avevi un sito — a un certo punto non è più tollerabile.»

— Giulia, co-titolare TerraCollection
Progetto E-commerce + Catalogo Live + Commissioni
Piattaforma WooCommerce 8 + PHP 8.3
Plugin custom Unique-Piece Manager, Commission Builder, Fragile Shipping Calculator
Lingue IT · EN · DE (WPML)
Durata 9 settimane
Tag
WooCommerce PHP custom WPML pezzi unici commissioni spedizioni fragili Stripe

Sfide WooCommerce pezzi unici artigianali

Cinque problemi da risolvere,
nessuno standard.

Catalogo "vivo" — ogni pezzo unico e irripetibile

Quando un'opera viene acquistata deve sparire dal catalogo in tempo reale, senza che altri utenti possano aggiungerla al carrello. Scorta sempre = 1 per ogni SKU, con lock atomico sulla quantità durante il checkout.

Modulo commissioni su misura con preventivo

I clienti devono poter richiedere un pezzo personalizzato: dimensioni, tecnica, soggetto, colori. Il modulo genera un preventivo automatico basato su parametri configurabili (ore lavoro × complessità × materiali) che Luca può poi approvare o modificare.

Spedizioni ceramiche fragili: calcolo intelligente dell'imballaggio

Le sculture richiedono imballaggio su misura (doppia schiuma, cassa in legno per pezzi >30cm). Il costo di spedizione dipende da peso, dimensioni, zona di consegna e livello di fragilità. Un plugin custom calcola il preventivo in tempo reale integrando le API di DHL e GLS.

Sito trilingue IT / EN / DE senza duplicazione di contenuto

Ogni scheda prodotto esiste in tre lingue. Le traduzioni vengono gestite con WPML + DeepL API per una prima bozza automatica, con revisione manuale per i testi tecnici sulle tecniche di smaltatura. URL separati per lingua con hreflang corretto.

Dashboard artigiana: gestione catalogo senza competenze tech

Luca e Giulia devono poter caricare un nuovo pezzo in 2 minuti: foto, titolo, tecnica, prezzo, dimensioni — e il resto è automatico. Niente Gutenberg, niente metabox complesse: un form dedicato costruito con ACF Pro ottimizzato per il loro workflow.

Plugin custom WooCommerce pezzi unici

Il diavolo è nei dettagli.
Soprattutto con WooCommerce.

WooCommerce nasce per cataloghi con SKU multipli e scorte variabili. Adattarlo a un modello "ogni prodotto esiste una sola volta" richiede interventi chirurgici sul core del carrello, sull'experience di checkout e sull'intero sistema di sincronizzazione del catalogo multilingua.

01

Race condition sul pezzo unico

Due utenti aggiungono lo stesso pezzo al carrello in contemporanea. WooCommerce di default non protegge da questa race condition: entrambi arrivano al checkout, uno dei due paga per un'opera già venduta. Soluzione: lock transazionale MySQL su wc_reserved_stock + webhook di rilascio se il pagamento non si completa entro 15 minuti.

02

Calcolo spedizioni fragili in real-time

DHL e GLS non hanno API standard per "pezzo fragile in cassa di legno". Ho costruito un calcolatore custom che stima il volume dell'imballaggio (+40% per doppio strato), calcola il peso volumetrico, seleziona il corriere ottimale per destinazione e restituisce il prezzo nel carrello via AJAX con cache di 1 ora per abbattere le chiamate API.

03

Preventivo commissioni: logica tariffaria non lineare

Il prezzo di una commissione dipende da: dimensioni (cm³), tecnica (maiolica, invetriata, raku), numero di colori nello smalto, soggetto (geometrico vs figurativo) e urgenza. Nessuna formula lineare: ho modellato una matrice di coefficienti configurabile da admin, con output in range di prezzo (€ min–max) per non vincolare il cliente a cifra esatta prima del contatto.

04

WPML + WooCommerce: sincronizzazione stock trilingue

WPML duplica i prodotti per ogni lingua ma WooCommerce gestisce lo stock sulla versione "padre". Rischio: l'acquisto dalla versione EN non scalava lo stock visibile nella versione DE. Fix: hook su woocommerce_reduce_order_stock che propaga l'aggiornamento a tutte le traduzione tramite l'API interna di WPML, con fallback su wp_postmeta diretto.

05

SEO per opere d'arte: dati strutturati + immagini ad alta risoluzione

Le ceramiche vanno indicizzate con Schema.org VisualArtwork (non Product) per ottenere rich results su Google Immagini. Ogni opera ha artista, tecnica, materiale, dimensioni e anno di produzione nei metadati. Le immagini ad alta risoluzione (5–10 MB) vengono servite tramite WebP progressivo con lazy loading per non impattare il LCP.

Processo sviluppo e-commerce ceramiche

9 settimane da zero
a catalogo live.

Settimane 1–2
Audit, architettura e modello dati

Ho analizzato il workflow reale della bottega: come nascono i pezzi, come vengono fotografati, quali informazioni servono a un collezionista europeo prima di acquistare. Ho definito il modello dati per i prodotti (tecnica, cottura, dimensioni, serie, anno) e progettato l'architettura a tre plugin custom con interfacce separate tra loro.

→ Deliverable: architettura tecnica + schema CPT + wireframe dashboard artigiana
Settimane 3–4
Plugin Unique-Piece Manager + lock transazionale

Ho sviluppato il cuore del sistema: ogni prodotto WooCommerce ha stock forzato a 1 tramite hook su woocommerce_product_get_stock_quantity. Il lock transazionale su MySQL impedisce acquisti doppi: un record su wc_reserved_stock viene creato atomicamente all'aggiunta al carrello e rilasciato dopo 15 minuti se il pagamento non arriva. Test di carico con 50 sessioni simultanee sullo stesso SKU: zero race condition.

→ 280 righe PHP · 42 PHPUnit test cases
Settimane 5–6
Fragile Shipping Calculator + Commission Builder

Il calcolatore spedizioni integra DHL Express e GLS Parcel via REST API: prende peso, dimensioni e livello fragilità, calcola il volume dell'imballo con i coefficienti di sicurezza (×1.4 per doppia schiuma, +cassa legno se h > 30 cm), e restituisce il costo via AJAX con cache Transient di 60 min. Il Commission Builder genera preventivi in range (min–max) basandosi su una matrice a 4 variabili configurabile dall'admin senza codice.

→ API DHL + GLS · matrice coefficienti configurabile · AJAX + WP Transients
Settimana 7
WPML trilingue + schema VisualArtwork + dashboard ACF

Configurazione WPML con DeepL API per bozze automatiche IT→EN→DE, più revisione manuale dei termini tecnici (maiolica, invetriatura raku, impasto refrattario). Hook custom su woocommerce_reduce_order_stock per propagare lo stock a tutte le traduzioni. Schema.org VisualArtwork iniettato via JSON-LD in ogni scheda prodotto. Dashboard artigiana con ACF Pro: Luca carica un nuovo pezzo in 4 campi — il resto è automatico.

→ hreflang su 3 lingue · JSON-LD VisualArtwork · ACF Pro form custom
Settimane 8–9
Performance, SEO, test e lancio

Ottimizzazione immagini ceramiche (5–10 MB raw → WebP progressivo con lazy loading, LQIP base64 come placeholder). Stripe configurato con metodi locali per DE (SEPA Direct Debit) e UK (Bacs). Test E2E con Playwright: 18 scenari incluso "acquisto simultaneo pezzo unico da due sessioni". Soft launch con le prime 12 opere della serie Alba — sell-out in 72 ore.

→ Lighthouse 92 · 18 test Playwright · 12 opere lancio · sell-out 72h

Soluzione tecnica WooCommerce artigianato

Tre plugin custom.
Un'unica logica artigiana.

Nessun plugin off-the-shelf copriva il caso d'uso. Ho costruito tre moduli PHP ben separati, ognuno con responsabilità chiara, che si agganciano a WooCommerce tramite hooks ufficiali senza mai toccare il core.

Soluzione 01 / 03

Unique-Piece Manager — catalogo che si aggiorna da solo

Ogni prodotto WooCommerce viene taggato come "pezzo unico" tramite un meta campo ACF. Il plugin intercetta l'hook woocommerce_add_to_cart e blocca l'aggiunta se un altro carrello attivo ha già riservato il pezzo. Al checkout completato, lo stato del prodotto passa automaticamente a private (non più visibile in catalogo) invece di "out of stock" — mantenendo l'URL attivo per SEO e mostrando una pagina "quest'opera ha trovato casa" con opere simili disponibili.

// tc-unique-piece-manager.php — lock atomico al momento dell'aggiunta 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; // non è un pezzo unico, nessun lock } // lock transazionale: 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( 'Questo pezzo è già nel carrello di un altro cliente. Esplora le opere disponibili.', 'error' ); return false; } return $passed; }
Soluzione 02 / 03

Fragile Shipping Calculator — DHL + GLS, imballo su misura

Il calcolatore riceve dal carrello: peso netto, dimensioni (h × l × p in cm) e il livello di fragilità (1 = normale, 2 = alta, 3 = massima per pezzi >30 cm o smaltature a freddo). Applica i coefficienti di imballo, calcola il peso volumetrico secondo le formule DHL (L×W×H / 5000) e GLS (/ 4000), poi interroga le rispettive REST API. Il prezzo più basso compatibile con il livello di fragilità viene restituito al carrello via AJAX. I risultati sono cachati come WP Transient per 60 minuti per destinazione e peso.

Per le spedizioni extra-EU (UK, Svizzera, USA) il plugin genera automaticamente il modulo CN23 pre-compilato con la voce doganale corretta per "opere d'arte ceramica" (HS code 6913.90).

Calcolo spedizione
Riepilogo spedizione
DHL Express (2–3 gg) € 38,50
GLS Premium Fragile ✓ € 24,90
Ritiro in bottega Gratuito
Imballo fragile doppio strato · cassa legno inclusa · assicurazione €500
Soluzione 03 / 03

Commission Builder — preventivo automatico, nessuna email persa

Prima di questo sistema, Giulia riceveva richieste di commissioni via email generica, spesso incomplete: nessuna dimensione, nessun budget indicato, nessuna idea della tecnica voluta. Il 40% delle richieste si perdeva nel back-and-forth. Il Commission Builder guida il cliente attraverso 4 step (tecnica → dimensioni → soggetto → urgenza), mostra un range di prezzo in tempo reale (calcolato lato server, non esposto in JS), e invia a Luca una notifica strutturata con tutti i dati per rispondere con un preventivo definitivo in un click. Le commissioni accettate generano automaticamente un ordine WooCommerce con pagamento in due rate (50% subito via Stripe, 50% al ritiro).

Risultato: tasso di completamento richieste commissioni dal 58% all'94%. Tempo medio di risposta da 3 giorni a 4 ore. Nessuna commissione rifiutata per mancanza di informazioni dall'apertura del sito.

Stack tecnologico WooCommerce PHP

Ogni strumento ha
un motivo preciso.

WooCommerce 8
PHP 8.3
WPML 4.6
DeepL API
Stripe (SEPA + Card)
DHL Express API
GLS Parcel API
ACF Pro
Rank Math SEO
Playwright E2E
Plugin custom × 3
WP Rocket + WebP

Perché WooCommerce e non Shopify?

Shopify non permette di forzare logiche di stock a livello server senza appoggiarsi a webhook asincroni — troppo lenti per prevenire race condition su pezzi unici. WooCommerce, con accesso diretto al database MySQL, consente lock transazionali sincroni. Inoltre, la gestione WPML su un WordPress self-hosted è molto più flessibile per il modello a tre lingue con URL separati e hreflang su domini regionali futuri.

Perché tre plugin e non uno?

Separare le responsabilità (pezzi unici, spedizioni, commissioni) permette di aggiornare o sostituire un componente senza toccare gli altri. Il Fragile Shipping Calculator, per esempio, può essere disattivato durante l'estate quando la bottega chiude le spedizioni internazionali — senza impattare né il catalogo né le commissioni.

Risultati: +310% vendite ceramiche online

Da zero a sell-out
in 72 ore.

I dati si riferiscono ai primi sei mesi di attività online (luglio–dicembre 2024) confrontati con lo stesso periodo dell'anno precedente (soli canali fisici + rivenditore Monaco).

+310%
Vendite online vs fisico
Da €0 a €62.400 in 6 mesi
100%
Sell-out prima collezione
12 opere · 72 ore dal lancio
3
Mercati esteri attivati
DE · UK · NL (40% del fatturato)
+94%
Commissioni completate
Da 58% a 94% tasso completamento
€ 680
AOV medio
Pezzi unici · commissioni escluse
92
Lighthouse Score
Performance · nonostante img 10 MB

«La prima domenica dopo il lancio mi ha telefonato mio padre — quinta generazione — per dirmi che una cliente di Amburgo aveva appena comprato la scultura che lui aveva fatto la settimana prima. Non ci credeva. Nemmeno io.»

— Luca, maestro ceramista TerraCollection

Learnings WooCommerce prodotti artigianali

Cosa porterei
nel prossimo progetto.

I pezzi unici hanno bisogno di un modello di dati diverso dai prodotti normali. La tentazione è usare WooCommerce "come viene" con stock = 1. Ma senza lock transazionale il rischio di vendita doppia è reale e difficile da gestire a posteriori — soprattutto con ceramiche che non si possono "sostituire con il magazzino".

La pagina "opera venduta" è SEO gold. Invece di reindirizzare a 404, mostrare la pagina dell'opera venduta con un messaggio evocativo ("quest'opera ha trovato casa") e un collegamento alle opere simili ha ridotto il bounce rate del 34% e aumentato le sessioni multi-opera del 28%.

Il range di prezzo batte il prezzo fisso per le commissioni. Mostrare "€ 800–1.200" invece di bloccare il cliente su una cifra precisa prima della conversazione ha aumentato del 38% le richieste completate. Il cliente arriva già allineato sul budget, Luca non deve gestire aspettative impossibili.

SEPA Direct Debit ha aperto il mercato tedesco. Prima dell'integrazione, il 60% degli utenti DE abbandonava al checkout perché non trovava la propria banca. Dopo l'attivazione di SEPA: conversione DE +180% nel primo mese. Gli europei non usano carte di credito come gli italiani — è un errore banale che si ripete.

Schema.org VisualArtwork porta traffico che Product non vede. Google Immagini con rich results per opere d'arte genera sessioni qualificate: chi arriva da una ricerca per "scultura ceramica maiolica contemporanea" ha un'intenzione d'acquisto molto più alta di chi arriva da keyword generiche. Il 22% delle conversioni nel primo trimestre proveniva da Google Immagini.

Hai un catalogo fuori dall'ordinario?

Pezzi unici, edizioni limitate, commissioni su misura — se il tuo prodotto non entra in nessun template, parliamone.