The hidden problem of unreliable email from your website
This short article is about ensuring the form fills and notification from your website reach your inbox.
Most of us have a form on our website. Our own website has nearly 100 forms as we've built up landing pages for various ad campaigns over the years. When a form is submitted it's a real person wanting to engage with you. These are not enquiries you can afford to lose or ignore.
As well as forms you might have plugins installed to send you notifications of updates or other activities.
Most WordPress hosting service are configured to use PHP mail() function which is a very simply mail server which can be reliable but only if you have told your DNS about it.
In the last 18 months email services have got a lot more aggressive in their filtering so we are recommending these actions to better ensure your website emails are s=delivered to your inbox and not lost.
This is the hidden issue. How do you know if your form fill emails are getting to you? If you use a form that retains a list of it's entries on your site you can check there. Other than that you don't know. If your users have email address on free services like Yahoo and Hotmail, even Gmail, then it's likely many of these are being marked as spam so they are not making it into your inbox.
The First Part of the Solution
Add an SPF (Sender Policy Framework) record as a TXT record to your DNS.
In reality it's likely you already have one of these setup, if not then you should do it ASAP. The content of the SPF record will depend on who you are using for your email services.
SPF RECORD EXAMPLES:
- Google Suite SPF record "v=spf1 include:_spf.google.com ~all"
- An Office 365 SPF record "v=spf1 include:spf.protection.outlook.com -all"
Adding your website servers IP address
So assuming your SPF record is like the ones above you need to find the IP address of your website server. There are lots of tools to do this, my favourite is MXToolBox. Go to https://mxtoolbox.com/DNSLookup.aspx and put in your domain and your website IP address will be shown. Alternatively you can ask your hosting company. This IP address will usually be static but on rare occasions when a server is replaced it might change. Hopefully your hosting company will make you aware of this.
In our case the IP address of our server is 18.104.22.168 Once we know this we then need to tell other email services that we want emails coming from our websites IP address to be treated the same way as emails coming from our own email accounts. To do this we add the IP address into the SPF record. For example "v=spf1 ip4:22.214.171.124 include:_spf.google.com ~all"
The Second Part of the Solutions - Using an SMTP Server on your website
Even though you now have your IP address in your SPF record the PHP mail server mail option is not ideal. As we are a WordPress house we recommend one of 2 options for better email delivery.
- Setup a new email account or use your current email account settings. This should be from the same domain your website.
- Install the POST SMTP plugin
- Setup the plugin with your account SMTP details
- This usually works fine.
- Also make sure you have SPF and DKIM records setup in your DNS
It’s about 20 mins work and you can do this yourself, it’s pretty simple. POST SMTP is my favourite as it has error logs, but EASY SMTP often works where others don’t so it’s a good backup position. Both plugins are free.
This is a little more complex as it involves DNS changes but it more robust. We use Mailgun, https://www.mailgun.com/ for this which is a free email delivery service for volumes of under 10,000 emails per month.
- Setup a MAILGUN account and add a payment option.
- Depending on your current email setup you’ll need a new CNAME in your DNS and MAILGUN will need to verify it. This will require some expertise to setup and test so you'll probably need your web guy or IT company to do this for you.
- Verify your changes in your mailgun account.
- Add the MAILGUN plugin to your WordPress website.
- Setup the plugin with the MAILGUN API keys.
We know this is not a simple task and we allocate 2 hours for completing this job.