Come scrivere i messaggi di errore di validazione dei moduli
Una persona inserisce l’email, passa al campo successivo e vede una correzione utile. Un’altra legge quasi la stessa frase mentre scrive e si chiede cosa abbia sbagliato. Parole uguali, esperienza diversa.
È questo a rendere sorprendentemente difficile progettare i messaggi di errore dei moduli. Una frase più cordiale non salva un’attivazione impaziente, e una spiegazione precisa non aiuta se indica la risposta sbagliata. Il lavoro consiste nel decidere cosa sa il sistema, quando dovrebbe parlare e cosa può fare dopo la persona.
Ci sono buone prove da cui imparare, ma non indicano tutte un unico pattern universale. Ricerca ecommerce, indicazioni per servizi pubblici ed esperimenti sui moduli di registrazione attribuiscono pesi diversi all’interruzione e al feedback anticipato. Capire la differenza è più utile che raccogliere messaggi di errore presunti perfetti.
Cosa mostrano gli utenti reali
Nel rapporto di Edward Scott del gennaio 2024 sui test Baymard della validazione inline, una partecipante su L.L.Bean omise il segno @ nell’indirizzo email. Il feedback apparve dopo il passaggio al campo successivo e lei corresse in pochi secondi. Su Etsy un altro partecipante ricevette un errore entrando in un campo indirizzo ancora intatto e sentì di essere rimproverato prima di rispondere. REI offrì un diverso esempio di recupero: l’errore sul codice di sicurezza della carta scomparve aggiungendo la terza cifra mancante.
Queste osservazioni storiche spiegano perché «usa validazione inline» sia una descrizione incompleta. Il momento in cui un messaggio appare e quello in cui scompare possono contare quanto la sua formulazione.
Per le nostre revisioni trasformerei queste osservazioni in una domanda: il messaggio risponde a un’azione che la persona ritiene conclusa? Fare clic su Continua esprime chiaramente quell’intenzione. Uscire da un campo a volte la esprime. Posizionare il cursore in un campo vuoto di solito no. L’interfaccia ha bisogno di una ragione per interrompere, non soltanto di un valore che in quel momento non rispetta una regola.
Un controesempio utile viene dallo studio del 2009 sui moduli di registrazione di Luke Wroblewski ed Etre. Ventidue partecipanti provarono sei varianti. Rispetto al controllo, la migliore versione con validazione inline riportò un aumento del 22% nei tassi di successo e una riduzione del 42% nel tempo di completamento. Un partecipante disse, in sostanza: «Preferisci conoscere gli errori man mano che procedi». Però le spunte verdi accanto a risposte familiari crearono confusione su cosa il sistema avesse realmente verificato.
La lezione più utile riguarda l’incertezza: chi sceglie uno username disponibile ha bisogno di informazioni possedute dal sistema; chi scrive il proprio nome potrebbe non aver bisogno della sua rassicurazione. Darei priorità al feedback che risolve un’incognita, anziché distribuire uniformemente simboli di approvazione nel modulo.
Perché GOV.UK sceglie un altro momento
Il pattern di validazione GOV.UK raccomanda di aspettare il tentativo di continuare o inviare, anziché validare quando si lascia un campo. Consiglia anche di conservare le risposte inserite, collocare una sintesi degli errori in alto, spostarvi il focus e identificare gli errori accanto ai campi pertinenti. Una validazione anticipata richiede ricerca utenti a sostegno.
Vale la pena mantenere visibile la differenza rispetto agli esempi ecommerce. Un passo breve con una sola domanda rende la correzione dopo l’invio relativamente locale: la risposta è ancora davanti alla persona. In un checkout lungo, al momento dell’invio il campo errato può essere ormai molto indietro.
Se stessi rivedendo un flusso di prenotazione workshop, partirei dalla forma del compito. In una pagina con una sola domanda sulla data, Continua è un punto ragionevole per spiegare una scelta non disponibile. In una pagina con contatti, necessità di accessibilità, numero di posti e fatturazione, aspettare il fondo può costringere a una ricerca più lunga indietro nel modulo. Non giustifica automaticamente validazione live ovunque: rende utile testare feedback anticipati selettivi.
Esiste anche una differenza tra guida ed errore. Una checklist password può spiegare i requisiti mentre si scrive senza trattare ogni requisito incompleto come un fallimento. Un suggerimento sulla data può chiarire la finestra di prenotazione prima che esista un valore. L’aiuto utile non deve aspettare l’invio e quello anticipato non deve sembrare un avviso rosso.
| Situazione | Proposta iniziale | Cosa osservare |
|---|---|---|
| Una domanda per passo | Validare su Continua | Si trova e corregge subito la risposta? |
| Pagina lunga con errori di formato prevedibili | Testare feedback selettivo dopo la risposta finita | Uscire significa finire o fare pausa? |
| Scegliere uno username libero | Controllare dopo un inserimento significativo | Caricamento e risultati vecchi si distinguono? |
| Correggere un errore esistente | Ricontrollare la regola interessata | L'avviso sparisce quando la causa è risolta? |
Annota quali campi usano quali eventi di attivazione. Altrimenti «validiamo inline» può nascondere tre comportamenti diversi implementati da tre persone diverse.
Scrivi la correzione che il sistema può giustificare
«Inserisci un indirizzo email valido» è spesso la fine del discorso quando dovrebbe esserne l’inizio. Cosa significa valido qui? Mancante, malformato, non disponibile e non verificato sono stati diversi. Trattarli da sinonimi produce messaggi sicuri di sé che non spiegano l’azione successiva.
Nel modulo fittizio del workshop, un campo contatto vuoto potrebbe dire «Inserisci un indirizzo email per la conferma della prenotazione». Se manca @, «Inserisci un indirizzo email con il segno @» descrive un problema osservabile. Nessuna delle due frasi stabilisce che la casella esista o appartenga alla persona: servirebbe un passaggio di verifica separato.
La tentazione è scrivere un messaggio estremamente preciso per ogni possibile refuso. Resisterei, a meno che la logica di validazione non sappia distinguerli in modo affidabile. Dire che il dominio è scritto male non aiuta chi usa un dominio sconosciuto ma legittimo. Quando il sistema è incerto, un suggerimento facoltativo può essere migliore di un rifiuto rigido. Il team deve concordare la differenza prima dell’approvazione del testo.
Questo è un piccolo inventario di messaggi per il workshop. Ogni riga comincia da una condizione, perché lo stesso campo può richiedere messaggi diversi.
| Condizione nota | Messaggio proposto | Recupero |
|---|---|---|
| Email obbligatoria vuota | Inserisci un'email per la conferma della prenotazione. | Aggiungere la risposta. |
| Email senza @ | Inserisci un indirizzo email con @. | Correggere il formato. |
| Quattro posti richiesti, due rimasti | Sono disponibili solo 2 posti. Scegline fino a 2 o un'altra data. | Cambiare quantità o sessione. |
| Esito non confermabile | Non possiamo confermare la prenotazione. Controlla lo stato prima di riprovare. | Usare un vero percorso di controllo. |
L’ultima riga chiede deliberatamente al prodotto più di una frase. L’invito a controllare lo stato è appropriato solo se il servizio offre un modo usabile per farlo. In caso contrario serve un altro percorso di recupero concordato con sviluppo e supporto. Il testo dovrebbe esporre la decisione mancante, non mascherarla con «Riprova».
Rendi navigabile un modulo lungo dopo l’errore
Immagina di premere Continua in fondo alla pagina di prenotazione. Due campi in alto ora hanno errori, ma il viewport mostra ancora il pulsante. Un bordo rosso fuori schermo non basta. La persona deve scoprire che l’azione non è riuscita e tornare alle risposte che richiedono attenzione.
Nel workshop, una sintesi può nominare i problemi di posti e data, collegando ogni voce al proprio campo. Il testo inline rimane poi accanto alla risposta durante la correzione. La ripetizione ha uno scopo: la sintesi aiuta a spostarsi, il messaggio locale aiuta a modificare. Usare parole diverse nei due punti aggiunge un’inutile operazione di interpretazione.
La sintesi dovrebbe essere selettiva. Un’email che ha superato i controlli pertinenti non appartiene agli errori. Non si dovrebbe nemmeno svuotare l’intero modulo per ottenere un reset ordinato. Vedere la risposta precedente aiuta a capire l’accaduto e cambiare solo il necessario. Per dati sensibili, la conservazione richiede una decisione specifica di prodotto e sicurezza: non promettere che ogni campo sarà sempre memorizzato.
Qui la revisione statica deve diventare una revisione dell’interazione. Segui un link della sintesi usando la tastiera. Controlla dove arriva il focus, se l’etichetta resta visibile sotto un header fisso e se la spiegazione è disponibile quando raggiungi il campo. Correggi e invia ancora. Uno screenshot mostra un riquadro rosso, ma non prova che il percorso nella pagina funzioni.
Su mobile ripeti la stessa sequenza con la tastiera aperta. Un messaggio perfetto nel frame desktop può trovarsi sotto la tastiera del telefono. Gli errori lunghi dovrebbero andare a capo, non diventare illeggibilmente piccoli. Preferirei una riga in più per la correzione anziché costringere a ingrandire l’istruzione necessaria per finire.
Il messaggio cambia con i fatti
Un errore comune è approvare soltanto due schermate: normale ed errore. Il problema spesso sta fra loro: la persona modifica una risposta, la causa scompare e il testo rosso rimane. Dal suo punto di vista, la correzione potrebbe non essere riuscita.
Supponi che siano richiesti quattro posti e ne restino due. Cambiare la quantità a due dovrebbe attivare un nuovo controllo della regola pertinente. Cambiare la data è diverso: modifica l’inventario da cui dipende la regola. Un avviso sulla sessione precedente non può restare semplicemente associato alla nuova. Questa relazione conta più dell’aspetto del bordo rosso.
Chiederei tre stati aggiuntivi nella consegna: controllo in corso, accettato per questo passo e impossibile controllare. «Controllo disponibilità…» non equivale a «Due posti disponibili» e nessuno dei due è una conferma di prenotazione. Le distinzioni mantengono onesta l’interfaccia se la richiesta tarda più del previsto o una sessione si esaurisce fra due controlli.
C’è anche un caso limite meno visibile: la persona cambia data due volte e la prima richiesta di disponibilità finisce dopo la seconda. Se la risposta vecchia sovrascrive la nuova, l’interfaccia può offrire una risposta perfettamente leggibile alla domanda sbagliata. Le note di design dovrebbero richiedere che i risultati corrispondano alla scelta corrente; lo sviluppo sceglierà come garantirlo.
Quando valuti animazioni e caricamento, conserva questa distinzione di stato. L’obiettivo non è far apparire impegnata la transizione, ma evitare che un risultato vecchio sembri nuovo. Se non si può controllare adesso, una spiegazione neutra è più accurata di una risposta segnata come invalida.
Un guasto non è una risposta sbagliata
L’errore di formulazione più costoso in una prenotazione può essere chiedere di correggere una risposta mai sbagliata. Una richiesta fallita può indicare input rifiutato, server non disponibile o esito sconosciuto. Queste possibilità richiedono passi successivi diversi.
Considera un timeout dopo Prenota. La richiesta potrebbe non aver raggiunto il servizio, oppure essere stata completata con risposta persa. Senza sapere quale caso sia, «La prenotazione è fallita» è troppo certo. Un secondo invio immediato potrebbe essere innocuo o creare un duplicato. Serve una decisione esplicita del prodotto su questa incertezza.
Nel nostro esempio esaminerei il recupero con un ingegnere prima di rifinire il messaggio. Il servizio può recuperare l’esito tramite un riferimento della richiesta? Un nuovo invio restituisce in sicurezza il risultato originale? Il supporto trova il tentativo? Quali risposte rimangono nella pagina? Queste domande decidono se il passo giusto sia controllare lo stato, riprovare in sicurezza o contattare assistenza con un riferimento.
Questo non giustifica inserire dettagli tecnici interni nell’errore. Il lettore non ha bisogno di una lezione sui guasti di rete. Gli servono una dichiarazione onesta di ciò che si sa e un passo funzionante. Il riferimento è utile se il supporto può usarlo; un codice inspiegato aggiunge soltanto un altro problema da interpretare.
Le buone pratiche comprendono il recupero
In OpenDesign, un’anteprima HTML supportata aiuta a confrontare campo normale, errore e correzione. Usa valori realistici e un messaggio lungo, verifica un viewport stretto e commenta l’elemento preciso da cambiare. Poi testa la stessa sequenza con backend funzionante, flusso da tastiera e annunci dello screen reader.
Una piccola sessione di revisione può mostrare più di un altro giro di aggettivi. Assegna un compito concreto, come prenotare quattro posti, e lascia incontrare il conflitto di capienza. Chiedi cosa si pensa sia successo e cosa si farebbe dopo. Non spiegare prima il significato: elimineresti proprio l’ambiguità che vuoi scoprire.
Osserva le azioni dopo la correzione con la stessa attenzione delle opinioni sul testo. Se si rilegge spesso l’avviso, forse non è sparito. Se si cambia un’email valida dopo un timeout, l’interfaccia potrebbe attribuire la responsabilità nel posto sbagliato. Se si ricomincia tutto, il recupero potrebbe essere meno trovabile del compito originale.
In un servizio attivo, invii ripetuti e cicli di correzione aiutano a individuare dove indagare, non spiegano automaticamente la causa. Molti errori possono dipendere da istruzioni confuse, regole troppo restrittive, posti non disponibili o difetti implementativi. Combina la sequenza degli eventi con il comportamento osservato ed evita di raccogliere risposte personali grezze solo per diagnosticare il modulo.
Prima di approvare l’esempio, percorrerei questa breve sequenza:
- Inserire una risposta incompleta e osservare quando appare il feedback.
- Inviare con due errori e raggiungere entrambi i campi dalla sintesi.
- Correggere una risposta e confermare che i valori non correlati rimangano.
- Cambiare una risposta dipendente, come la data del workshop, e controllare il nuovo risultato.
- Incontrare un servizio non disponibile e seguirne il recupero.
L’ultima verifica è il risultato riuscito. La conferma mostra data e quantità corrette? La persona capisce se esiste una prenotazione? Il modulo non ha recuperato soltanto perché il testo rosso è scomparso.
Buoni messaggi di validazione lasciano meno lavoro da interpretare. Gli esempi di settore sono utili perché rivelano dove si rompe la comprensione: prima che una risposta sia finita, dopo una correzione o quando l’interfaccia pretende di sapere più di quanto sappia. Riprendi il ragionamento, testalo nel tuo compito e fai seguire la frase al comportamento che puoi realmente offrire.