Tuesday Talks: Tackling deliverability in WordPress like a pro
Let’s set the scene.
You’ve set up your WordPress site. Your ticket sales, contact forms, and user registrations are running smoothly. You breathe easy knowing your event confirmations, order receipts, and password resets are getting sent.
Or… are they?
Because somewhere out there, in a dark spam folder or the void of a blackholed inbox, your carefully crafted emails may be disappearing without a trace. Not bounced. Not rejected. Just… ignored. Ghosted. Like a bad Tinder date.
This is what we call an email deliverability problem — and if your WordPress site sends any kind of transactional emails, you’ll want to pay attention.
Let’s break down what’s going on, and how you can fix it before your customers start asking why they never got their ticket, receipt, or password reset.
What even is “email deliverability”?
In short: it’s the likelihood that your email actually makes it to someone’s inbox. Not spam. Not promotions. Not completely gone. Just good, solid inbox delivery.
But WordPress doesn’t send email the same way Gmail or Outlook does. Out of the box, it uses the wp_mail() function, which relies on your server’s PHP mail capabilities. And while that may technically “send” an email… it doesn’t always “deliver” it.
Why?
Because email providers like Gmail, Yahoo, and Microsoft are running gatekeeping operations that would put Fort Knox to shame. They’re looking at your email and asking:
- Was it sent from an authorized mail server?
- Does the domain sending this message have proper credentials?
- Is this a weird robot trying to trick our user?
If your WordPress site isn’t set up properly, the answer to those questions might be: “We don’t know, probably?” — and your email will be tossed in the bin.
The usual suspects: why your emails aren’t being delivered
Let’s run through the greatest hits of bad email deliverability in WordPress:
1. You're using the default PHP mail function
This is the default setting in WordPress. It technically works, but let’s be honest — it’s the equivalent of sending your letter by tying it to a neighborhood cat and hoping it wanders in the right direction.
PHP mail is often blocked or deprioritized by email services because it lacks authentication. There's no handshake, no ID badge, no “Hey, I’m legit” signal.
2. You haven’t set up proper DNS records (SPF, DKIM, DMARC)
These are like the holy trinity of email authentication:
- SPF (Sender Policy Framework) says: “Only these servers are allowed to send mail from my domain.”
- DKIM (DomainKeys Identified Mail) says: “This email really came from me. See? It’s signed.”
- DMARC (Domain-based Message Authentication, Reporting, and Conformance) says: “If SPF or DKIM fails, here’s what to do. Also, send me a report.”
If you’re missing these, or if they’re not configured correctly, email servers don’t trust your site. And when they don’t trust you, you’re not going to their inbox party.
3. Your emails are getting marked as spam
This one’s a bit trickier. Even if your SPF/DKIM/DMARC is set up, if your email content looks shady — too many links, spammy words, no unsubscribe link (even for transactionals), or just inconsistent branding — spam filters might flag it.
Also: if you’re sending emails from info@yourdomain.com but the “reply-to” is something totally different? Spam filters notice.
How to fix email deliverability issues in WordPress
Let’s fix this — not just patch it, but actually make it bulletproof.
Step 1: Stop using PHP mail and install an SMTP plugin
SMTP stands for “Simple Mail Transfer Protocol,” and unlike the PHP mail function, it behaves like a real email service. SMTP makes your WordPress site talk to a proper mail server — one that can verify and authenticate your messages.
There are plenty of great SMTP plugins for WordPress. A few top choices:
- WP Mail SMTP – The most popular option, easy setup, supports popular providers (Gmail, SendGrid, Mailgun, etc.).
- Post SMTP Mailer/Email Log – Great logging and fallback features.
- Easy WP SMTP – Simple, lightweight option for direct SMTP credentials.
When configuring, you’ll usually need:
- Your mail server (e.g., smtp.gmail.com or smtp.mailgun.org)
- A port (usually 587 or 465)
- Authentication (username + password or API key)
Pro tip: If your site is transactional-heavy (tickets, order confirmations, etc.), use a dedicated provider like SendGrid, Mailgun, or Amazon SES. Gmail works, but it’s not really meant for bulk transactional mail.
Step 2: Add your SPF, DKIM, and DMARC records
This part sounds scary, but it’s mostly a copy-paste job into your DNS settings.
- Your email provider will tell you what SPF record to add (it starts with v=spf1)
- For DKIM, you’ll usually get a public key as a TXT record
- For DMARC, set a policy like: v=DMARC1; p=none; rua=mailto:your@email.com
This tells receiving servers how to handle failed messages and keeps you in the loop if things go sideways.
You can check your domain’s current records using tools like:
If that still feels overwhelming, your DNS provider’s support team can usually help plug these in if you give them the values.
Step 3: Customize your email “from” settings
Your WordPress site may be sending emails from wordpress@yourdomain.com — which isn’t ideal.
You want something human. Trustworthy. Recognizable. Like:
- events@yourdomain.com
- tickets@yourdomain.com
- noreply@yourdomain.com (use this sparingly — it says “don’t talk to me”)
Most SMTP plugins let you set the from name and email address. Match these to your brand and keep them consistent across all plugins and notifications.
Bonus points for email credibility
Add an email log plugin
You want to know what was sent and when — especially when someone says “I never got it.”
Many SMTP plugins include email logging, but if not, try:
These show you:
- Subject
- Recipient
- Status (sent or failed)
- Timestamp
It’s a debugging lifesaver.
Don’t forget the human touch
Yes, all this is technical — but at the end of the day, email is about trust.
A customer buys a ticket and expects confirmation. They want to know where to go, when to be there, and what to bring. If your email doesn’t show up, they don’t feel informed — they feel forgotten.
Use transactional messages as a moment of service. Keep the tone clear and professional. Add value where you can (“Here’s your digital ticket, plus parking info”). And test, test, test.
Wrapping up
Here’s the quick recap for your mental sticky note:
- WordPress’s default email setup is… let’s say “unreliable”
- Use an SMTP plugin to send emails properly
- Set up SPF, DKIM, and DMARC records to prove you’re legit
- Choose a solid “from” address
- Use logs to track your messages
- Don’t neglect your brand voice — even in transactional emails
Good email delivery isn’t magic — it’s configuration.
So go forth, brave WordPress user. Let your emails fly confidently into inboxes around the globe, not into the abyss of forgotten spam folders.
And remember: if a customer gets their ticket without asking twice, you’re already winning.