Obligatoire à compter du 19 juin 2026

Documentation

WWU Withdrawal Button mette WooCommerce, FluentCart ed Easy Digital Downloads a norma con il bouton de rétractation en ligne richiesto dalla Direttiva UE 2023/2673 (art. 54-bis Codice del Consumo). Pulsante statutario, modulo in due passaggi, ricevuta su supporto durevole, log immodificabile e marca temporale. Gratuito e open source (GPLv3).

Come funziona (in pratica)

Per il cliente è semplicissimo — quattro passaggi:

  1. Clic sul pulsante. Il cliente apre il suo ordine e clicca «Recedere dal contratto qui» — dall'area account, dal link nell'email d'ordine, oppure dalla pagina pubblica (senza account: cerca l'ordine con numero + email). La dicitura è quella esatta prevista dalla legge per ogni lingua.
  2. Modulo in due passaggi. Rivede da cosa sta recedendo (può spuntare solo alcuni prodotti — recesso parziale), poi conferma. Nessun motivo obbligatorio, nessun dark pattern.
  3. Ricevuta su supporto durevole. Appena conferma, riceve email + PDF + link permanente verificabile con cosa ha recesso e data/ora esatte. L'ordine passa a «recesso richiesto» e tu ricevi una notifica.
  4. Prova immodificabile. Ogni passaggio finisce in un log append-only con hash-chain e marca temporale (data certa). Tu poi gestisci il rimborso come sempre — registrato anch'esso come prova del rispetto dei 14 giorni.

Tutto il resto del plugin serve a rendere questo flusso corretto, facile da gestire e difendibile. In sintesi, cosa include (ogni voce ha la sua sezione qui sotto):

Gratuito e open source (GPLv3): nessun upsell, nessun tracciamento, nessuno script o font remoto caricato sul tuo sito. Ha superato un audit di sicurezza completo (0 critical / 0 high).

Requisiti

WordPress5.6+ (consigliato 6.x)
PHP7.4+
E-commerceWooCommerce (HPOS + version héritée), FluentCart oppure Easy Digital Downloads (3.0+)
EmailUn plugin SMTP (es. FluentSMTP) per consegnare le ricevute

Installazione

  1. Scarica wwu-withdrawal-button.zip (il pacchetto ufficiale include la libreria PDF).
  2. In WordPress: Plugin → Aggiungi nuovo → Carica plugin → seleziona lo ZIP → Installa ora (se esiste già scegli «Sostituisci l'attuale con il caricato»).
  3. Attiva. Il plugin crea da solo la pagina pubblica «Diritto di recesso» e le tabelle del log.
Importante: configura un plugin SMTP, altrimenti le ricevute non partono (è la causa #1 di «non arriva l'email»). Usa il pulsante «Invia email di test» nel cruscotto per verificare.

Configurazione

Vai su Withdrawal Button → Settings e procedi dall'alto verso il basso. Il Dashboard ha una checklist che diventa tutta verde quando sei a posto.

  1. Abilita la funzione di recesso.
  2. Dove si applica — «Solo UE/SEE» (minimo legale) o «Mostra sempre»; opzionale esclusione B2B (P.IVA).
  3. Consumer guidance — finestra di recesso in giorni (min 14; puoi concederne di più) e, se vuoi, un testo guida personalizzato.
  4. Receipt & evidence — allega PDF, email di notifica, marca temporale (OpenTimestamps gratis, o RFC 3161), retention, slug della scheda account.
  5. Email delivery — configura l'SMTP, fai il test, poi «Preview the acknowledgement email».

Tutte le impostazioni

ImpostazioneQue fait-il ?
Enable withdrawal functionMostra il pulsante ai consumatori idonei.
Applicability modeSolo UE/SEE · Sempre · Lista paesi custom. + toggle B2B.
Withdrawal period (days)Finestra mostrata al cliente. Minimo 14, estendibile.
Custom guidance textSostituisce il testo guida predefinito (HTML base). Responsabilità del merchant.
Attach PDF receiptAllega una copia PDF alla ricevuta (l'email è comunque il supporto durevole).
Notification emailDove ricevere l'avviso delle nuove richieste.
Trusted timestampOpenTimestamps · RFC 3161 (endpoint + credenziali) · Nessuna.
Evidence retention (years)Per quanto conservare il log (default 10).
My Account tab slugSlug della scheda «Diritto di recesso» nell'area cliente.
Custom CSSPersonalizza ogni elemento grafico (riferimento classi/variabili incluso).
FluentCartAuto (default) · Sempre · Off. In modalità Auto il plugin mostra il pulsante ma si fa da parte automaticamente se rileva un add-on di recesso nativo di FluentCart, così il cliente non vede mai due pulsanti. Riguarda solo le superfici consumer FluentCart; il cruscotto richieste e il log non sono modificati.

Installare il pulsante non basta per essere a norma. La Direttiva sui diritti dei consumatori (art. 6) impone di informare il consumatore su come esercita il recesso: con l'introduzione del pulsante, le tue Condizioni di vendita e le informazioni precontrattuali vanno aggiornate nell'articolo sul recesso per prevedere la nuova modalità con pulsante. Il plugin aggiunge il pulsante, ma non modifica i tuoi documenti pubblicati.

Per renderlo semplice, il plugin genera le clausole pronte da incollare — le trovi in Withdrawal Button → Conformità (e via shortcode [wwu_wb_info type="precontractual|terms|privacy"]):

Non è una consulenza legale: usa le clausole come base e fai sempre revisionare i testi dal tuo legale, adattandoli alla tua attività.

Dove appare il pulsante

Non compare quando non c'è un reale diritto di recesso: paese fuori scope, ordine non in stato contrattuale, articoli esclusi (Art. 59) o B2B, ordine di rinnovo di un abbonamento, oppure funzione disattivata. Il cruscotto spiega «perché potrebbe non comparire».

Shortcode & blocco

ShortcodeUso
[wwu_wb_form]Il modulo in due passaggi / selettore ordini.
[wwu_wb_button order_id="…"]Il solo pulsante per un ordine.
[wwu_wb_status order_id="…"]Lo stato della richiesta di un ordine.
[wwu_wb_model_form lang="…"]Il modulo tipo Allegato I-B.
[wwu_wb_info type="precontractual|terms|privacy"]Le clausole legali pronte.

Blocco editor: «Withdrawal — self-service» (dynamic, server-rendered) per inserire la superficie ovunque nell'editor a blocchi.

Esperienza cliente

  1. Il cliente apre il suo ordine e clicca il pulsante statutario. Nel primo passaggio del modulo compare una checklist opzionale degli articoli dell'ordine: può selezionare solo i prodotti da restituire (recesso parziale, consentito dalla legge UE — Allegato I-B: «dei seguenti beni»). Se lascia la selezione vuota, il recesso riguarda l'intero ordine. Il recesso non è mai bloccato da questa scelta.
  2. Modulo in due passaggi (revisione → conferma), nessun dark pattern, nessun motivo richiesto.
  3. Alla conferma riceve subito un'attestazione di ricevimento via email (+ PDF + link verificabile), con l'elenco degli articoli selezionati; l'ordine passa a «recesso richiesto».
La selezione dei prodotti (totale o parziale) appare sulla ricevuta su supporto durevole e nel cruscotto Requests. Il rimborso — totale o parziale — rimane sempre gestito manualmente dal merchant.

Gestione richieste

In Withdrawal Button → Requests: ogni richiesta con stato (Aperta / Lavorata / Rimborsata), badge integrità della catena, e azioni:

Nota legale: il recesso è un diritto unilaterale — non si «approva». Una volta esercitato nei termini, rimborsa entro 14 giorni con lo stesso mezzo di pagamento. Il riquadro «What to do» in pagina lo riassume.

Marche temporali

Scegli in Receipt & evidence → Trusted timestamp:

ProviderNote
OpenTimestampsGratis, ancorato a Bitcoin, nessun account (default).
Sectigo /qualifiedRFC 3161 eIDAS-qualificato, gratis, senza account.
QTSP nazionaliAruba/InfoCert (IT), D-Trust (DE), Universign (FR), FNMT (ES), SwissSign (CH) — endpoint + credenziali.

Esenzioni (Art. 59)

Alcuni prodotti/servizi non hanno diritto di recesso (beni su misura, deperibili, sigillati aperti, biglietti per eventi a data fissa, contenuti digitali ad accesso immediato con consenso, servizi già eseguiti…). In Impostazioni → Esenzioni tagghi prodotti/categorie per motivo statutario specifico, ciascuno con riferimento di legge e spiegazione in linguaggio semplice. Il diritto di recesso resta il default (prodotti digitali inclusi).

Quando un ordine è interamente esente, il pulsante di recesso non compare — ma il cliente non resta senza spiegazioni. Dalla 1.0.0-alpha.43, una nota breve e accurata riporta l'eccezione specifica applicata con il relativo riferimento normativo (es. «Contenuto digitale ad accesso immediato — Art. 16(1)(m) CRD / Art. 59(1)(o) Cod. Consumo»). La nota è mostrata sul modulo di recesso, nelle pagine account WooCommerce ed EDD e nel portale FluentCart. Il testo è editabile in Impostazioni → Guida al consumatore. Compare solo sugli ordini realmente esenti, mai su quelli ordinari; la visibilità del pulsante non cambia.

Per i casi condizionati (digitale immediato, servizio eseguito) l'esenzione vale solo se hai raccolto consenso espresso + presa d'atto del cliente. Dalla 1.0.0-alpha.28 il checkout WooCommerce mostra automaticamente la casella di presa d'atto richiesta e ne conserva il testo (con hash, data e IP) sull'ordine come prova: il pulsante viene nascosto per quegli articoli solo dopo il consenso. Il testo è personalizzabile col filtro wwu_wb_consent_text. La cattura del consenso è ora attiva su WooCommerce (classico + a blocchi), FluentCart ed Easy Digital Downloads, con esenzioni anche per categoria. Dove la cattura non è disponibile il pulsante resta (fail-safe). Non nascondere mai il pulsante senza queste condizioni.

Abbonamenti

La legge UE dà un solo diritto di recesso di 14 giorni conformément au contrat, che parte dalla conclusione del contratto (art. 9 Dir. 2011/83/UE = art. 52 Codice del Consumo). Un rinnovo non lo fa ripartire: è la continuazione dello stesso contratto, non un nuovo contratto a distanza. Quindi:

In Impostazioni → Subscriptions ci sono due interruttori, entrambi disattivi per default:

ImpostazioneQue fait-il ?
Mostra anche sui rinnoviOff consigliato. Attivalo solo se un parere legale dice che uno specifico rinnovo fa ripartire il diritto.
Annulla l'abbonamento al recessoOff. Se attivo, alla conferma del recesso ferma i rinnovi futuri. Il rimborso e l'eventuale pro-rata per il servizio già usato restano sempre manuali.
Recesso ≠ disdetta. «Annullare l'abbonamento» ferma i rinnovi futuri; il recesso è il diritto statutario di 14 giorni che dà anche diritto al rimborso. Offrire solo la disdetta non basta per il periodo iniziale di 14 giorni. Nel cruscotto richieste gli ordini di abbonamento hanno un badge «Subscription» con il promemoria: ferma i rinnovi, applica l'eventuale pro-rata, poi rimborsa.

FAQ

Basta installare il pulsante per essere a norma? No. Devi aggiornare anche le tue Condizioni di vendita e le informazioni precontrattuali nell'articolo sul recesso, per prevedere la nuova modalità con pulsante (art. 6 della Direttiva diritti dei consumatori). Il plugin genera le clausole pronte da incollare — vedi Aggiorna i tuoi documenti legali.

Posso dare più di 14 giorni? Sì — imposta «Withdrawal period» a piacere (≥14). Il testo mostrato si aggiorna.

Come funziona con gli abbonamenti? Il pulsante compare sull'ordine iniziale e sparisce sui renouvellements (un solo diritto di 14 giorni per contratto). Il recesso non è la disdetta: il cliente può sempre fermare i rinnovi futuri dal suo account, ma il recesso è il diritto di 14 giorni con rimborso. Vedi la sezione Abbonamenti.

L'email non parte? Configura un plugin SMTP e usa «Send test email». Non è la libreria PDF.

Funziona con i temi a blocchi / FSE? Sì: la pagina My Account di WooCommerce è ancora resa dallo shortcode classico, gli hook funzionano; c'è anche un blocco Gutenberg.

La legge si applica ai prodotti digitali (plugin, software, download)? Sì. L'obbligo del pulsante riguarda il professionista che vende online a consumatori UE, non il singolo prodotto — anche uno shop di plugin o di contenuti digitali è in scope. I prodotti digitali hanno i 14 giorni di recesso per default; il diritto si toglie solo con consenso espresso + presa d'atto + conferma su supporto durevole (art. 59 lett. o), che il plugin cattura al checkout. Le vendite B2B (con partita IVA) e ai consumatori extra-UE sono fuori scope.

È consulenza legale? No, è uno strumento tecnico di supporto alla conformità. Fai revisionare i tuoi documenti da un legale.

Per sviluppatori

Il plugin espone 33 hook pubblici documentati (action e filter) per personalizzare il flusso di recesso, i testi, la logica di visibilità del pulsante, la ricevuta e il log — senza modificare il core del plugin.

Riferimento completo: wwu-wb-hooks-filters-REFERENCE.md su GitHub — ogni hook con firma, descrizione, parametri ed esempio d'uso.

API REST & webhook (automazioni)

Dalla 1.0.0-alpha.44 il plugin offre un'API REST en lecture seule (namespace wwu-wb/v1, autenticazione con Password applicazione di WordPress) per elencare le richieste di recesso e verificare lo stato di un ordine, più un webhook in uscita firmato (HMAC-SHA256) che notifica il tuo endpoint nel momento in cui un recesso viene confermato — pronto per Zapier, Make, n8n, un CRM o un helpdesk. Privacy-first: l'IP del consumatore non viene mai esposto (solo un hash di riga per la verifica d'integrità). Non esiste — per scelta — un endpoint per créer un recesso (è la dichiarazione legale del consumatore). Superata una verifica di sicurezza dedicata prima del rilascio.

Riferimento API: wwu-wb-rest-api-REFERENCE.md — endpoint, autenticazione, shape delle risposte, payload del webhook ed esempi di verifica della firma (PHP + Node).

Changelog

Mantieni questa sezione allineata al docs/changelog/wwu-wb-CHANGELOG.md del repository.

1.2.0 2026-06-18
  • Promemoria: aggiorna anche i tuoi documenti legali. Installare il pulsante non aggiorna i documenti del tuo shop. La legge (art. 6 della Direttiva sui diritti dei consumatori) impone che le Condizioni di vendita e le informazioni precontrattuali descrivano come il consumatore recede — e ora questo include il nuovo pulsante online. Il plugin lo segnala ora con evidenza nel Cruscotto e nella pagina Conformità, apre per default le due clausole da incollare (precontrattuale + condizioni) e la clausola «Modalità di recesso» nomina ora esplicitamente il pulsante. Nessun cambiamento al flusso di recesso. Vedi Aggiorna i tuoi documenti legali.
1.0.0-alpha.45 2026-06-16
  • Link di recesso nelle email d'ordine — su tutte le piattaforme. Il link viene aggiunto automaticamente alle email cliente di WooCommerce e alla ricevuta email di Easy Digital Downloads (così il cliente raggiunge il recesso direttamente dall'email, come suggerisce il Considerando 37). FluentCart non permette ai plugin di aggiungere contenuto alle sue email in automatico: perciò Impostazioni → FluentCart mostra ora una breve guida opzionale (3 passi) per inserire lo shortcode {{wwu.recesso_url}} nel template della ricevuta. Niente di invasivo e niente di obbligatorio: il recesso è sempre raggiungibile da area cliente/portale e pagina pubblica. Note di rilascio →
1.0.0-alpha.44 2026-06-16
  • Automazioni: API REST di sola lettura + webhook firmato. Nuova sezione Impostazioni → Integrazioni per collegare le richieste di recesso a sistemi esterni (Zapier, Make, n8n, CRM, helpdesk). (1) Un'API REST en lecture seule (wwu-wb/v1) per elencare le richieste e verificare lo stato di un ordine, autenticata con una Password applicazione di WordPress. (2) Un webhook opzionale che invia una notifica firmata HMAC-SHA256 al tuo endpoint quando un recesso viene confermato. Privacy-first: l'IP del consumatore non è mai esposto (solo un hash di verifica). Nessun endpoint per créer un recesso, per scelta legale. Superata una verifica di sicurezza dedicata. Nessun cambiamento al flusso di recesso. Note di rilascio →
1.0.0-alpha.43 2026-06-16
  • Nota «perché esente» lato consumatore. Quando tutti gli articoli di un ordine rientrano in un'eccezione Art. 59 (es. contenuto digitale ad accesso immediato o servizio interamente eseguito, entrambi con consenso raccolto al checkout), il pulsante di recesso è assente. Il cliente vede ora una nota breve e accurata che riporta l'eccezione specifica con il riferimento normativo (es. «Contenuto digitale ad accesso immediato — Art. 16(1)(m) CRD / Art. 59(1)(o) Cod. Consumo»). Mostrata sul modulo di recesso, nelle pagine account WooCommerce ed EDD e nel portale FluentCart. Testo editabile in Impostazioni → Guida al consumatore. Compare solo sugli ordini realmente esenti — mai su quelli ordinari; la visibilità del pulsante non cambia. Note di rilascio →
1.0.0-alpha.42 2026-06-16
  • Recesso parziale per prodotto (consumer-facing). La legge UE consente di recedere anche da parte degli articoli di un ordine (Allegato I-B: «dei seguenti beni»). Il primo passaggio del modulo mostra ora una checklist opzionale: il consumatore seleziona i prodotti da restituire; lasciando vuoto, recede dall'intero ordine. La selezione appare sulla ricevuta su supporto durevole e nel cruscotto Richieste. Rimborso (totale o parziale) sempre manuale. Il recesso non è mai bloccato. Note di rilascio →
1.0.0-alpha.41 2026-06-16
  • Gestione FluentCart configurabile. Nuova impostazione Impostazioni → FluentCart con tre modalità: Auto (default) — mostra il pulsante ma cede automaticamente se rileva l'add-on di recesso nativo di FluentCart, così il cliente non vede mai due pulsanti; Sempre — mantiene sempre il nostro pulsante; Off — disabilita la gestione FluentCart. Riguarda solo le superfici consumer; admin e richieste esistenti non sono modificati. Note di rilascio →
1.0.0-alpha.38 2026-06-15
  • Abbonamenti gestiti correttamente (WooCommerce Subscriptions, FluentCart, EDD Recurring). La legge UE dà un solo diritto di recesso di 14 giorni conformément au contrat, alla conclusione: un rinnovo non lo fa ripartire. Il pulsante compare ora solo sull'ordine iniziale ed è nascosto sugli ordini di rinnovo (un unico controllo copre tutte le superfici). Due interruttori opt-in in Impostazioni → Subscriptions (mostra anche sui rinnovi · annulla l'abbonamento al recesso), entrambi off di default — rimborso e pro-rata restano manuali. Il cruscotto richieste segnala gli ordini di abbonamento con un promemoria. Rilevamento del rinnovo prudente e fail-safe (se incerto, il pulsante resta). Da testare con un plugin abbonamenti attivo. Vedi Abbonamenti.
1.0.0-alpha.37 2026-06-15
  • Merge-tag email FluentCart {{wwu.recesso_url}}. Inserisci il link di recesso del singolo ordine dentro le email transazionali native di FluentCart (es. ricevuta d'ordine). Il team FluentCart ha confermato il contratto dell'hook; il tag è registrato nel selettore dell'editor email e si risolve in sicurezza (vuoto se nel contesto non c'è un ordine). Da testare su FluentCart reale. Nota: FluentCart ha annunciato una funzione di recesso UE nativa in arrivo.
1.0.0-alpha.36 2026-06-15
  • Audit di sicurezza completo dell'intero plugin — 0 critical, 0 high. SQLi, XSS, CSRF, controllo accessi/IDOR, file/deserializzazione, crittografia/integrità delle prove e dipendenza Dompdf tutti puliti. Fix: guard SSRF sull'endpoint RFC 3161 configurabile (blocca target interni / cloud-metadata / IPv6-loopback / CGNAT), rate-limit sugli endpoint di recesso, cap di lunghezza sugli input, mascheramento debug più stretto, pulizia cron alla disinstallazione. Nessun cambiamento per il cliente.
1.0.0-alpha.35 2026-06-15
  • EDD: il pulsante di recesso compare ora sulle pagine del cliente. Su Easy Digital Downloads il pulsante appare sulla ricevuta d'acquisto e in ogni riga della cronologia acquisti, e il link è aggiunto all'email di ricevuta EDD — parità piena con WooCommerce e FluentCart (prima EDD usava solo la pagina pubblica). Costruito su hook EDD 3.x verificati sulla sorgente ufficiale. Da testare su store EDD reale.
1.0.0-alpha.34 2026-06-15
  • Miglioramenti FluentCart verificati col team. La casella di consenso compare ora su before_payment_methods (copre checkout standard, modale e a blocchi); le esenzioni FluentCart sono per categoria (tassonomia product-categories, come WooCommerce ed EDD); le note di recesso/rimborso compaiono nella timeline attività dell'ordine FluentCart.
1.0.0-alpha.33 2026-06-15
  • Easy Digital Downloads (EDD 3.0+) supportato. Terza piattaforma dopo WooCommerce e FluentCart: pulsante di recesso, flusso prova ed esenzioni con cattura del consenso funzionano sugli store EDD, con esenzioni per categoria (download_category). Da testare su uno store EDD reale.
1.0.0-alpha.32 2026-06-15
  • Cattura del consenso anche sul Checkout a blocchi di WooCommerce (via la Additional Checkout Fields API ufficiale, WooCommerce 9.9+), parità con il checkout classico e con FluentCart. PHP puro, nessun build. + SPEC per la futura integrazione EDD.
1.0.0-alpha.31 2026-06-15
  • Impostazioni esenzioni ridisegnate (WWU UI Kit): motivi raggruppati (condizionati / incondizionati / sigillo) con tooltip, esempi, helper «Cosa vendi?», anteprima di cosa vede il cliente (casella + email) e pannello di stato. Completate le traduzioni IT/FR/ES/DE, incluse le etichette delle esenzioni che prima comparivano in inglese.
1.0.0-alpha.30 2026-06-14
  • Cattura del consenso su FluentCart. Le esenzioni condizionate (digitale immediato / servizio eseguito) ora raccolgono il consenso anche al checkout FluentCart, con email di conferma su supporto durevole — costruito su hook verificati sui doc ufficiali. Link «apri ordine» admin via l'URL nativo FluentCart.
1.0.0-alpha.29 2026-06-14
  • Esenzioni (Art. 59) — conferma su supporto durevole + prova, conservazione, GDPR. Per i casi condizionati il plugin invia ora al cliente un'email di conferma su supporto durevole che riproduce il testo del consenso accettato (costitutiva per il digitale, art. 59(1)(o)) e ne registra l'invio separatamente. I consensi conservati hanno una retention configurabile (default 10 anni) con una routine giornaliera che poi anonimizza l'IP; l'IP è configurabile e non finisce mai nel log immodificabile. Aggiunte una clausola privacy GDPR pronta (legittimo interesse) e una pagina "Consent records" con export CSV. Copy più chiara ovunque: i prodotti fisici non richiedono mai il consenso; il pulsante si nasconde solo dopo la cattura (fail-safe).
1.0.0-alpha.28 2026-06-14
  • Esenzioni (Art. 59) — cattura del consenso al checkout. Per i due casi condizionati (contenuto digitale ad accesso immediato; servizio già eseguito), il checkout WooCommerce mostra una casella di presa d'atto obbligatoria e salva il testo accettato (con hash SHA-256, data/ora e IP) sull'ordine come prova: il pulsante viene nascosto per quegli articoli solo dopo il consenso legittimo. Testo personalizzabile via wwu_wb_consent_text. Checkout classico WooCommerce; checkout a blocchi e FluentCart in arrivo.
1.0.0-alpha.27 2026-06-14
  • Esenzioni (Art. 59) — tagging per motivo. Marca prodotti o categorie come esenti per uno specifico motivo statutario (su misura, deperibile, sigillato igienico, servizi a data fissa, digitale immediato, servizio eseguito…), ciascuno con riferimento di legge e guida in linguaggio semplice. Il diritto di recesso resta il default — inclusi i prodotti digitali — e i motivi condizionati mantengono il pulsante finché non viene catturato il consenso.
1.0.0-alpha.19 2026-06-14
  • Portale cliente FluentCart funzionante: pagina «Diritto di recesso» nell'account, voce nel menu laterale, pulsante nel singolo ordine e banner. Ogni hook è stato corretto sul contratto ufficiale FluentCart (verificato su dev.fluentcart.com) e la lista ordini legge i dati tramite le relazioni corrette (cliente, indirizzo). Risolve la pagina bianca e il pulsante mancante visti nei test dal vivo.
1.0.0-alpha.18 2026-06-14
  • Prima integrazione del portale cliente FluentCart + lista ordini idonei valida sia per WooCommerce che per FluentCart.
1.0.0-alpha.17 2026-06-14
  • Guida al consumatore (passo-passo, ovunque) + riferimento provider di marca temporale nei settings.
1.0.0-alpha.16 2026-06-14
  • Provider marca temporale RFC 3161 / eIDAS (Sectigo gratis qualificato + QTSP nazionali).
1.0.0-alpha.15 2026-06-14
  • Rimborso registrato nel log come prova; guida «cosa fare dopo una richiesta».
1.0.0-alpha.14 2026-06-14
  • Workflow di gestione richieste (stato, mark processed, resend, refund) + fix CSS lista.
1.0.0-alpha.13 2026-06-14
  • Lista ordini idonei, pagina di verifica leggibile, anteprima email, blocco Gutenberg.
1.0.0-alpha.10–.12 2026-06-13/14
  • Cruscotto onboarding, integrazione email WooCommerce, diagnostica consegna email, fix bug rendering.
1.0.0-alpha.1–.9 2026-06-13
  • MVP: pulsante statutario, modulo due-passaggi, ricevuta durevole, log immodificabile + OpenTimestamps, applicabilità per paese, multilingua IT/EN/DE/FR/ES, documenti legali, CSS personalizzabile.