Email transazionali WooCommerce: perché l'ordine arriva e la conferma al cliente no

Il cliente paga, l'ordine è in admin, ma la conferma non arriva nella sua casella. È il problema più silenzioso dell'e-commerce: wp_mail non è fatto per inviare email, e gli hosting lo bloccano. Diagnosi, SMTP dedicato e servizi transazionali.
È il problema più silenzioso che incontriamo negli e-commerce WooCommerce. Il cliente completa l'ordine, il pagamento va a buon fine, l'ordine appare correttamente nel pannello admin — ma la conferma non arriva nella casella del cliente. Lui pensa che l'ordine sia fallito, scrive al supporto, o peggio fa un secondo ordine. Il commerciante scopre il problema giorni dopo, quando i reclami si accumulano.
La causa è quasi sempre la stessa: WordPress usa la funzione wp_mail di PHP per inviare le email, e wp_mail non è progettato per recapitare email transazionali in modo affidabile. Funziona su alcuni hosting, fallisce silenziosamente su molti altri. E quando fallisce, non dà errore: l'email semplicemente non parte, o parte e finisce nello spam, o viene bloccata dal server di destinazione.
Perché wp_mail fallisce (e non te lo dice)
wp_mail delega alla funzione mail() di PHP, che a sua volta usa il mail server locale dell'hosting (sendmail, Postfix). Su hosting condivisi questo server è configurato per inviare poche email, spesso con un IP che non ha reputazione come mittente. I provider di posta (Gmail, Outlook, Apple) ricevono email da quell'IP, non lo riconoscono come mittente legittimo, e le scartano silenziosamente — niente bounce, niente errore, l'email sparisce.
Il primo passo è capire se l'email parte davvero. WooCommerce non logga gli invii di default, ma puoi aggiungerlo:
// Log di ogni email WooCommerce (MU-plugin o functions.php)
add_action( 'woocommerce_email', function( $emails ) {
foreach ( $emails as $email ) {
$log = sprintf(
'[Woo Email] %s | to: %s | subject: %s | status: queued',
$email->id,
implode( ', ', (array) $email->get_recipient() ),
$email->get_subject()
);
error_log( $log );
}
});
// Log anche il risultato dell'invio effettivo
add_action( 'wp_mail_failed', function( $error ) {
error_log( '[Woo Email] INVIO FALLITO: ' . $error->get_error_message() );
});SMTP dedicato: la prima soluzione reale
La soluzione più comune è configurare WordPress per inviare tramite un server SMTP dedicato invece del mail server locale. Un account SMTP professionale (Brevo, SendGrid, Mailgun, Amazon SES) ha IP con reputazione, gestisce i bounce e fornisce statistiche di recapito. La configurazione si fa con un plugin o via codice:
// Configura SMTP dedicato via codice (functions.php o MU-plugin)
add_action( 'phpmailer_init', function( $phpmailer ) {
$phpmailer->Host = 'smtp.provider.com';
$phpmailer->Port = 587;
$phpmailer->SMTPAuth = true;
$phpmailer->Username = 'apikey'; // o l'utente SMTP
$phpmailer->Password = 'SMTP_PASSWORD'; // chiave API o password
$phpmailer->SMTPSecure = 'tls';
$phpmailer->isSMTP();
$phpmailer->From = 'ordini@iltuostore.it';
$phpmailer->FromName = 'Il Tuo Store';
$phpmailer->Sender = 'ordini@iltuostore.it';
});I record di autenticazione: SPF, DKIM, DMARC
Anche con SMTP dedicato, se i record DNS di autenticazione non sono configurati, le email finiscono in spam. Tre record DNS fanno la differenza. SPF dice quali server sono autorizzati a inviare per il tuo dominio. DKIM firma crittograficamente le email per dimostrare che non sono state alterate. DMARC dice ai provider cosa fare se SPF o DKIM falliscono. Senza questi, anche il miglior SMTP viene filtrato.
# Verifica i record DNS di autenticazione email
# SPF — deve elencare il tuo provider SMTP
dig TXT iltuostore.it | grep spf
# Esempio atteso: "v=spf1 include:spf.provider.com ~all"
# DKIM — verifica la firma (il selettore dipende dal provider)
dig TXT default._domainkey.iltuostore.it
# Deve restituire la chiave pubblica DKIM
# DMARC — politica di gestione dei fallimenti
dig TXT _dmarc.iltuostore.it
# Esempio: "v=DMARC1; p=quarantine; rua=mailto:postmaster@iltuostore.it"Servizi transazionali: quando SMTP non basta
Per gli store con volume elevato, un servizio di email transazionali dedicato offre più di SMTP: webhook per i bounce, statistiche di recapito per email, gestione automatica delle disiscrizioni, e IP dedicati con reputazione esclusiva. L'integrazione con WooCommerce avviene via plugin o API, e il vantaggio è la visibilità: sai esattamente quante email sono state recapitate, quante finite in spam, quante rifiutate.
Il problema silenzioso delle email transazionali è tale perché nessuno lo segnala finché non è grave. Il cliente non ti dice «non ho ricevuto la conferma» — pensa che l'ordine sia fallito e agisce di conseguenza. Verificare la recapta delle email transazionali con un ordine di prova reale, su ogni provider di posta principale, è parte del check-up WooCommerce: costa pochi minuti e previene settimane di reclami silenziosi.
Checkout, pagamenti e prestazioni del tuo e-commerce sotto controllo.
Verifica tecnica del tuo store WooCommerce: aggiornamenti controllati, sicurezza e ottimizzazione delle prestazioni.
Articoli correlati

Checkout WooCommerce: i 7 punti di caduta più frequenti e come verificarli
Leggi
E-commerce verso gli USA: stop all'esenzione dazi sotto gli 800$ e cosa cambia
Leggi
