Order confirmation emails not received on PrestaShop
An order is properly recorded in PrestaShop, but no confirmation email ever reaches the customer: the cause almost always sits in the delivery chain that follows the order, rarely in PrestaShop itself.
The email never leaves
By default, PrestaShop sends its transactional emails through the PHP mail() function, without going through a properly authenticated SMTP server. Many shared hosts throttle or block this function without any visible error in the back office: the order is validated, PrestaShop believes the email was sent, but the host silently rejected it.
The native fix is configuring an external SMTP server under Advanced Parameters > Email, with its authentication credentials. That’s the first thing I check, and in most cases it’s enough to restore delivery.
Another possible cause: the ps_emailalerts module disabled by mistake, or a custom email template in the mails/ folder with a Smarty syntax error after an edit, which blocks the message from being generated at all.
The email leaves, but never arrives
A trickier case: sending succeeds on PrestaShop’s side, but the message lands in spam or never reaches the customer’s provider at all. This is usually a sender domain authentication issue: without properly configured SPF and DKIM records, major mail providers flag the email as suspicious, especially if it’s sent from an address that doesn’t genuinely belong to the site’s domain.
This is set at the domain’s DNS level, not inside PrestaShop: I check first whether SPF and DKIM exist, then fix or set them up as needed.
Related pages
-
Contact form broken or flooded with spam
The same email delivery mechanism is at fault: a separate diagnosis for a silent or spam-flooded form.
-
Order statuses and automatic emails
Every status change can trigger its own email, with its own template and its own failure points.
-
Custom module development
Adding a field or logic to a transactional email means touching both the template and the controller.
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.