Checkout WooCommerce: i 7 punti di caduta più frequenti e come verificarli

Il checkout è dove si vince o si perde. 7 punti critici: calcolo spedizioni, gateway di pagamento, campi obbligatori, email transazionali, redirect HTTPS, sessioni e cache. Come testare ognuno.
Il checkout è il momento in cui un visitatore diventa cliente — o in cui il carrello viene abbandonato. In WooCommerce, il checkout è composto da molti componenti che devono funzionare insieme: calcolo delle spedizioni, gateway di pagamento, validazione dei campi, invio delle email di conferma, redirect HTTPS. Quando uno di questi punti fallisce, la conversione crolla e spesso non te ne accorgi finché non vedi i carrelli abbandonati nei report.
La verifica del checkout non è un lavoro da fare una volta: ogni aggiornamento di WooCommerce, ogni nuovo plugin, ogni cambio di gateway può rompere un punto critico. Ecco i 7 punti più frequenti di caduta e come testarli.
1. Calcolo delle spedizioni errato o assente
Il primo punto di caduta è il calcolo delle spedizioni. Se il cliente seleziona una zona non coperta, o se il calcolatore non riconosce un CAP, il checkout si blocca senza un messaggio chiaro. Verifica ogni zona di spedizione con un prodotto reale:
// Log di debug per i calcoli di spedizione (temporaneo)
add_action( 'woocommerce_after_calculate_shipping', function() {
$packages = WC()->shipping->get_packages();
foreach ( $packages as $i => $package ) {
error_log( sprintf(
'[Woo] Pacchetto %d: destinazione=%s, metodi=%s',
$i,
wp_json_encode( $package['destination'] ),
wp_json_encode( array_column( $package['rates'], 'label' ) )
));
}
});2. Gateway di pagamento non configurato o scaduto
Il gateway di pagamento è il punto più delicato. Una chiave API scaduta, un certificato SSL non rinnovato sul webhook, una valuta non supportata: ognuno blocca il pagamento silenziosamente. Testa il gateway con una transazione di prova (sandbox) a ogni aggiornamento.
3. Campi obbligatori non validati lato client
Se un campo obbligatorio non viene validato prima del submit, il cliente riceve un errore generico dopo l'invio e abbandona. Verifica che ogni campo abbia una validazione lato client e un messaggio di errore specifico:
// Forza validazione lato client sui campi del checkout
add_filter( 'woocommerce_checkout_fields', function( $fields ) {
$fields['billing']['billing_email']['required'] = true;
$fields['billing']['billing_email']['validate'] = true;
$fields['billing']['billing_phone']['required'] = true;
// Aggiungi pattern di validazione
$fields['billing']['billing_postcode']['pattern'] = '^[0-9]{5}$';
return $fields;
});4. Email transazionali non recapitate
La quarta caduta è silenziosa: l'ordine va a buon fine, ma la conferma non arriva al cliente. Le email transazionali WooCommerce usano wp_mail, che su hosting condivisi viene spesso bloccato o finisce in spam. Verifica con un ordine di prova e controlla i log:
// Log ogni email inviata da WooCommerce
add_action( 'woocommerce_email', function( $emails ) {
foreach ( $emails as $email ) {
error_log( sprintf(
'[Woo Email] Tipo=%s Destinatario=%s Oggetto=%s',
$email->id,
implode(',', (array) $email->get_recipient() ),
$email->get_subject()
));
}
});5. Redirect HTTPS e mixed content
Se il checkout carica una risorsa HTTP su una pagina HTTPS, il browser la blocca e il pagamento fallisce. Forza HTTPS su tutto il checkout:
// Forza HTTPS su WooCommerce
add_action( 'template_redirect', function() {
if ( ! is_ssl() && ( is_checkout() || is_cart() || is_account_page() ) ) {
wp_safe_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
exit;
}
});6. Sessioni e carrelli persi
Il sesto punto riguarda le sessioni. WooCommerce salva i carrelli nella tabella wp_woocommerce_sessions. Se le sessioni vengono pulite troppo spesso (plugin di cache, cron, hosting), il cliente torna e il carrello è vuoto. Verifica la persistenza delle sessioni e imposta la scadenza a un valore adeguato:
// Estendi la durata delle sessioni WooCommerce (default 48 ore)
add_filter( 'woocommerce_session_expiration', function() {
return 7 * DAY_IN_SECONDS; // 7 giorni
});
// Salva il carrello dopo ogni modifica
add_action( 'woocommerce_cart_updated', function() {
if ( WC()->cart ) {
WC()->cart->set_session( 'cart', WC()->cart->get_cart() );
}
});7. Cache che blocca il checkout dinamico
L'ultimo punto è la cache. Se il checkout viene messo in cache da un plugin o dalla CDN, il cliente vede una versione statica con calcoli errati. Escludi sempre il checkout dalla cache:
// Escludi il checkout dalla cache di WooCommerce
add_filter( 'woocommerce_is_cache', '__return_false' );
// Escludi dalla cache di pagina (compatibile con WP Rocket/LiteSpeed)
add_filter( 'rocket_cache_reject_uri', function( $uri ) {
$uri[] = '/checkout';
$uri[] = '/carrello';
return $uri;
});Un checkout verificato punto per punto riduce gli abbandoni e aumenta il fatturato. Un check-up WooCommerce dedicato testa ognuno di questi 7 punti con ordini reali e ti restituisce un report con cosa correggere e in quale ordine di priorità.
Checkout, pagamenti e prestazioni del tuo e-commerce sotto controllo.
Verifica tecnica del tuo store WooCommerce: aggiornamenti controllati, sicurezza e ottimizzazione delle prestazioni.


