Il checkout è l’unico punto del sito dove un errore si traduce in soldi persi all’istante. Quando un cliente arriva al pagamento e becca una schermata bianca, un 500 o un “la pagina è scaduta”, non riprova tre volte: se ne va. Per questo gli errori al checkout di WooCommerce vanno capiti in fretta e per categoria, non a tentativi.
Vediamo i tre più comuni — il 500, il 503 e l’errore di nonce — cosa li causa e come risolverli davvero.
Errore 500 al checkout
Il 500 è l’errore generico del server: qualcosa è esploso lato PHP. Le cause tipiche al checkout sono un conflitto tra plugin (spesso un gateway di pagamento o un plugin di spedizioni), memoria PHP esaurita, o un errore fatale nel codice del tema. La prima mossa è sempre la stessa: attiva WP_DEBUG_LOG e vai a leggere wp-content/debug.log, che ti dice il file e la riga esatti. Da lì disattivi il plugin colpevole o alzi il memory_limit.

Errore 503 al checkout
Il 503 “Service Unavailable” vuol dire che il server non ce la fa a rispondere: PHP-FPM saturo, timeout, o un gateway esterno che non risponde e blocca la richiesta. Sotto campagne o picchi di traffico è il classico. Qui si lavora lato server (worker PHP, timeout, risorse) e si controlla che le chiamate ai gateway abbiano un timeout sensato, così una risposta lenta di Stripe o PayPal non manda giù tutto il checkout.
“La pagina è scaduta”: errore di nonce
Questo è il più insidioso perché spesso non è un vero bug. Il nonce è il token di sicurezza che WooCommerce usa per validare la richiesta; quando scade, l’utente vede “la pagina è scaduta, riprova”. La causa numero uno è una cache messa male: se il checkout finisce in page cache, servi a tutti un nonce vecchio e ognuno se lo trova scaduto. La soluzione è escludere carrello, checkout e account dalla cache — il tema di sempre, che ho trattato nella guida per velocizzare WooCommerce senza romperlo.
Come procedo in emergenza
Ordine fisso: leggo il debug.log per capire di che errore si tratta; se è un 500 isolo il plugin in conflitto; se è un 503 guardo risorse e timeout dei gateway; se è un nonce controllo subito le esclusioni di cache. Non tocco mai il checkout in produzione senza un backup fresco, perché peggiorare le cose mentre stai perdendo ordini è la cosa più facile del mondo.
Domande frequenti
Perché il checkout dà errore solo ad alcuni utenti ?
Spesso è cache o sessione: chi becca una pagina cachata con un nonce vecchio vede l’errore, chi arriva su una versione fresca no. Anche browser con estensioni aggressive o cookie bloccati possono dare problemi mirati.
Ho un 500 ma il debug.log è vuoto, che faccio ?
Assicurati di aver attivato sia WP_DEBUG sia WP_DEBUG_LOG nel wp-config.php. Se resta vuoto, l’errore può essere a livello di server (log di PHP-FPM o del web server): lì trovi la traccia.
La cache può davvero rompere il checkout ?
Sì, è una delle cause più frequenti dell’errore “pagina scaduta” e di carrelli sballati. Carrello, checkout e area utente non vanno mai messi in page cache.
Se il tuo checkout sta dando errori adesso e ogni minuto è un ordine perso, posso intervenire d’urgenza: leggo i log, isolo la causa e lo rimetto in piedi senza fare danni.