Running a membership site on WordPress is one of the best ways to build recurring revenue—whether you’re using MemberPress, Paid Memberships Pro, Restrict Content Pro, Ultimate Member, or even a custom script built on WooCommerce Subscriptions. These platforms handle everything from user registrations and payments to drip content and renewals. But one critical feature ties it all together: email notifications.
Welcome emails, payment receipts, membership expiration warnings, password resets, upgrade prompts, admin alerts—these emails keep members engaged, reduce churn, and maintain trust. When they stop sending, your entire business can suffer: members think their payment failed, forget to renew, or feel ignored, leading to higher support tickets and lost income.
If your membership site suddenly (or gradually) stops sending emails, you’re not alone. This is one of the most reported issues in membership plugin support forums, especially in 2026 when email deliverability rules have tightened further due to stricter spam filters from Gmail, Outlook, Yahoo, and others. The good news? Most cases are fixable with systematic troubleshooting.
In this in-depth guide, we’ll cover the most common reasons your membership site script isn’t sending emails, explain why they happen specifically in membership contexts, and walk you through detailed, step-by-step fixes. We’ll focus on WordPress-based membership sites (the vast majority), but the principles apply to custom PHP scripts too. Let’s get your notifications flowing again.
1. The Default PHP mail() Function Is Blocked or Unreliable (The #1 Culprit)
WordPress (and most membership plugins) uses the core wp_mail() function to send emails. By default, wp_mail() relies on your server’s built-in PHP mail() function. This worked fine years ago, but in 2026 it’s the leading cause of email failures on membership sites.
Why This Breaks Membership Emails
- Many shared hosting providers (Bluehost, HostGator, SiteGround on basic plans, etc.) disable or severely restrict PHP mail() to prevent spam abuse from hacked sites.
- Even when it “works,” emails lack proper authentication (SPF, DKIM, DMARC), so Gmail/Outlook flags them as spam or rejects them outright.
- Membership plugins trigger dozens of emails per day (new signups, renewals, expirations), amplifying any deliverability issues—admin might get some, but members get none.
Step-by-Step Fix: Switch to SMTP with WP Mail SMTP
The universal solution is to bypass PHP mail() and route emails through a real SMTP service (like Gmail, SendGrid, Brevo, Mailgun, or Amazon SES).
- Install WP Mail SMTP (free version works for most sites; Pro for advanced logging).
- Go to Plugins > Add New > Search “WP Mail SMTP” > Install & Activate.
- Launch the Setup Wizard (it runs automatically or find it under WP Mail SMTP > Settings).
- Choose Your Mailer:
- Recommended for beginners: Brevo (formerly Sendinblue) – free tier up to 300 emails/day.
- Other great options: Gmail (if you have a Google Workspace account), SendLayer (by MemberPress team), Postmark, or Amazon SES for high volume.
- Avoid “Other SMTP” unless you have your own SMTP server credentials.
- Enter Credentials:
- For Brevo: Create free account at brevo.com → Get SMTP key → Paste into plugin.
- For Gmail: Enable “Less secure app access” or use App Password if 2FA is on (better to use Google Workspace for business).
- Configure Sender Settings:
- Set “From Email” to a real address on your domain (e.g., hello@yourmembershipsite.com).
- Force From Email and From Name to prevent plugins from overriding.
- Enable “Return Path” if available.
- Send a Test Email from the plugin settings. Success? Great!
- Membership Plugin-Specific Tweaks:
- MemberPress: Go to MemberPress > Settings > Emails → Ensure From/To addresses differ. Test individual email types.
- Paid Memberships Pro: Memberships > Settings > Emails → Check deliverability section; some versions integrate SendWP.
- Ultimate Member / Others: Most respect WP Mail SMTP overrides.
Prevention Tip: Always use a branded domain email as From address. Update SPF record to include your SMTP provider (e.g., include:_spf.brevo.com).
2. Emails Are Sending But Landing in Spam or Never Arriving
You see no bounce errors, test emails work, but members complain they never got their welcome email or receipt.
Common Causes
- Missing or incorrect SPF/DKIM/DMARC records on your domain.
- From address mismatch (e.g., wordpress@yourdomain.com instead of a real mailbox).
- High bounce/complaint rates from previous bad sends.
- Membership emails contain links or content that triggers spam filters (e.g., too many payment links).
How to Diagnose & Fix
- Check Spam Folders — Ask members to search spam/junk/promotions.
- Use Email Logging Plugin — Install “Email Log” or WP Mail SMTP’s built-in log (Pro). See if emails are queued/sent.
- Verify Domain Authentication:
- Use MX Toolbox or Google’s Postmaster Tools to check SPF/DKIM.
- Add records via your domain registrar (e.g., include:spf.protection.outlook.com for Microsoft, or Brevo’s include).
- Clean Up Email List — Remove hard bounces in your membership plugin.
- Improve Email Content — Use plain text versions, avoid ALL CAPS subjects, include unsubscribe links.
3. Cron Job / Scheduled Emails Not Triggering
Membership sites rely on WP-Cron for timed emails (expiration reminders, renewal notices). If WP-Cron fails, these never send.
Why It Happens
- Low site traffic (cron runs on page loads).
- Server restrictions on cron.
- Plugin conflicts disabling cron.
Fixes
- Disable WP-Cron & Use Real Cron:
- Add to wp-config.php: define(‘DISABLE_WP_CRON’, true);
- Set up server cron job (cPanel > Cron Jobs): wget -q -O – https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 every 15 minutes.
- Use Better Cron Plugins — WP Crontrol or WP Missed Schedule.
- Test: In Paid Memberships Pro or MemberPress, manually trigger a test expiration email.
4. Plugin-Specific Configuration Errors
Each membership plugin has quirks:
- MemberPress — From/To same email blocks sends; incomplete transactions skip emails.
- Paid Memberships Pro — Email deliverability settings; old versions had cron bugs.
- Restrict Content Pro — Check RCP > Settings > Emails.
- Ultimate Member — JS errors in browser console can block AJAX email triggers.
Always check plugin docs > Troubleshooting > Emails section first.
5. Hosting/Server Restrictions & Other Edge Cases
- Shared hosting blocks outbound ports (25, 465, 587) — switch to managed WordPress host (Kinsta, WP Engine) or use API-based mailers (SendGrid API).
- Security plugins (Wordfence, Sucuri) block wp_mail().
- Localhost/dev environments never send real emails.
- PHP version too old (use 8.1+).
Final Checklist & Prevention
- Install WP Mail SMTP + reliable mailer → Test immediately.
- Set proper From email & domain authentication.
- Enable email logging.
- Monitor spam folder reports.
- Schedule real cron for timed emails.
- Keep plugins & WordPress updated (6.4+ in 2026).
- Test new member signup end-to-end monthly.
Fixing email delivery transforms your membership site from “buggy” to “professional.” Members stay happy, renewals increase, and support drops. If you’re still stuck after these steps, share your setup (plugin, host, error logs) in the comments or plugin support—forums are very active.
Your members are waiting for that welcome email—let’s make sure they get it!
