If WordPress emails are not showing up on Bluehost or GoDaddy, the cause is almost always the same: shared hosting restricts the PHP mail() function that WordPress uses by default, and even when a message does go out, it fails SPF and DKIM checks and lands in spam or gets silently dropped. The fix is to stop using PHP mail() entirely and send through an authenticated SMTP connection instead. Below is exactly how to diagnose the problem and set it up correctly on both hosts.
Why Bluehost and GoDaddy Block or Lose WordPress Emails
Both hosts run thousands of WordPress sites on shared servers, and mail sent through the default PHP function is one of the most common sources of spam abuse. To protect their IP reputation, they throttle it, block outbound port 25, or simply do not deliver the message if it does not carry proper authentication headers. Your site never sees an error because WordPress reports “message sent” as soon as PHP hands it off, whether or not it actually arrives.
On Bluehost, this usually shows up as WooCommerce order confirmations, password resets, or contact form submissions that never reach the inbox. On GoDaddy, the same symptoms appear, and they get worse if the domain also has GoDaddy Email or Microsoft 365 mailboxes attached, because the sending domain then has conflicting mail records.
Step 1: Confirm It Is Actually a Delivery Problem
Before changing anything, verify the emails are truly not arriving rather than landing in a spam folder or being filtered by a form plugin setting.
- Submit a real test through your contact form and WooCommerce checkout, then check spam and promotions folders on the receiving end.
- Try a second, different receiving email address such as a personal Gmail account, since some corporate inboxes silently reject unauthenticated mail.
- Check whether the emails appear in your host’s mail log if cPanel access includes one, since a missing log entry usually points to a server-level block rather than a filtering issue.
If nothing arrives anywhere, the site is relying on PHP mail() and needs SMTP.
Step 2: Understand the Port and Authentication Requirement
SMTP fixes the problem by having WordPress log in to a real mail account and send through it, the same way an email client does, instead of handing raw messages to the server’s mail transfer agent. This requires three pieces of information from whichever mailbox or service you send through:
- The SMTP host address, such as smtp.gmail.com or the address given by your transactional email provider
- The port, almost always 587 with TLS, or 465 with SSL
- A username and password, or in Gmail’s case an app password rather than your normal login
Port 25 should be avoided. It is the port spammers abuse most, and Bluehost and GoDaddy both restrict or block it on shared plans, so trying to force a connection over port 25 is a common reason SMTP setups still fail after switching from PHP mail().
Step 3: Fix DNS Records So Mail Is Trusted
Even correctly configured SMTP will end up in spam if the sending domain lacks proper authentication records. In your domain’s DNS zone, add or confirm:
- SPF record listing the mail service you are sending through as an authorized sender
- DKIM record, usually provided by the SMTP service as a TXT record you paste in
- DMARC record, even a basic monitoring policy, which many receiving servers now check before accepting mail at all
On GoDaddy this is done through the DNS Management page for the domain. On Bluehost it is under Domains, then DNS. If the domain also has an active Google Workspace or Microsoft 365 mailbox, make sure the SPF record includes both that service and your SMTP sender in one line rather than two competing SPF records, since only one SPF record per domain is valid.
Step 4: Connect WordPress Through SMTP
This is where a plugin does the actual work of intercepting outgoing WordPress mail and routing it through the authenticated connection instead of PHP mail(). ReadyGo Tools SMTP is a free option built for exactly this: it lets you enter the host, port, and login details from your provider, send a test email from inside the admin screen, and confirm delivery before touching anything else on the site. It is a straightforward way to get email working on Bluehost or GoDaddy without paying for a plugin just to send transactional mail. You can grab it here: ReadyGo Tools SMTP.
Whichever plugin you use, the setup steps are the same:
- Install and activate the SMTP plugin from the WordPress admin
- Enter the SMTP host, port 587 or 465, and encryption type matching your provider’s instructions
- Enter the sending email address and authentication credentials
- Save the settings and send a test email from the plugin’s built-in tester
- Check the receiving inbox, including spam, to confirm it arrived and that the From address matches your domain
Bluehost-Specific Notes
Bluehost accounts that also use Bluehost’s own email hosting sometimes have an internal mail routing setting that intercepts messages before they reach the SMTP plugin. If test emails still fail after SMTP is configured, check cPanel’s Email Deliverability tool, which flags missing or invalid SPF and DKIM records directly for the domain and tells you exactly what to fix.
GoDaddy-Specific Notes
GoDaddy’s managed WordPress plans sometimes run a security layer that rewrites the From address on outgoing mail. If test emails arrive but show the wrong sender name or a generic GoDaddy address instead of your domain, set the From Name and From Email fields explicitly inside the SMTP plugin rather than relying on WordPress defaults, and make sure that address matches the mailbox you authenticated with in Step 4.
Step 5: Recheck WooCommerce and Form Emails Specifically
Fixing SMTP does not automatically fix every plugin on the site. WooCommerce, contact form plugins, and membership plugins each have their own sender settings that can override the site-wide From address.
- In WooCommerce, go to Settings, then Emails, and confirm the From address matches your authenticated SMTP account
- In your form plugin, check for a separate “from email” field that may still point to a generic address like [email protected]
- Send one real test order and one real test form submission after saving, rather than trusting the plugin’s built-in test alone
When Emails Still Do Not Arrive
If everything above is configured and mail still fails, the most common remaining causes are an incorrect port left open from an old configuration, a typo in the DKIM TXT record, or a mailbox provider that requires an app-specific password instead of the account’s normal login. Recheck each value one at a time rather than changing several settings at once, since that makes it much faster to find which one is wrong.
Once SMTP is authenticated and DNS records are in place, WordPress mail on both Bluehost and GoDaddy becomes reliable, and there is no need to keep testing after every plugin update since the sending method no longer depends on the host’s restricted PHP mail() function.
