Salta al contenuto principale
Sistemi Attivi
WP Planet — WordPress Cloud & Managed Services
Torna al MagazineWooCommerce

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

14 Ott 2026 — 17:30 8 min di lettura
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:

wp-config.php
// 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' ) )
        ));
    }
});
Nota: Questo log scrive in wp-content/debug.log ogni calcolo di spedizione con la destinazione e i metodi trovati. Se una zona non restituisce metodi, saprai esattamente quale CAP o paese è scoperto.

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:

wp-config.php
// 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;
});
Nota: La validazione lato client con l'attributo pattern non sostituisce quella lato server, ma previene l'invio di dati errati e migliora l'esperienza.

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:

wp-config.php
// 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()
        ));
    }
});
Nota: Se le email non arrivano nemmeno nei log, il problema è wp_mail. Valuta un SMTP plugin dedicato o un servizio di email transazionali (es. Brevo, Postmark) per affidabilità.

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:

wp-config.php
// 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;
    }
});
Nota: Il redirect HTTPS sul checkout è essenziale: i gateway di pagamento rifiutano connessioni non sicure. Configura anche HSTS nel web server per renderlo permanente.

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:

wp-config.php
// 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() );
    }
});
Nota: Un carrello che sparisce al ritorno del cliente è una conversione persa. La persistenza del carrello è uno dei fattori che più incidono sul tasso di recupero.

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:

wp-config.php
// 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;
});
Nota: La cache sul checkout è un errore comune quando si ottimizza per la velocità. Il checkout deve sempre essere dinamico: la cache è per le pagine prodotto e il catalogo, non per il carrello.

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à.

Assistenza WooCommerce

Checkout, pagamenti e prestazioni del tuo e-commerce sotto controllo.

Verifica tecnica del tuo store WooCommerce: aggiornamenti controllati, sicurezza e ottimizzazione delle prestazioni.

Assistenza WooCommerce
Condividi