How to set up SMTP for WordPress contact forms
Which SMTP plugin and sending service to use for WordPress contact form emails, how to set them up step by step, and how to test that enquiries arrive.
- Updated
Short answer
To set up SMTP for WordPress contact forms, install one SMTP plugin, such as WP Mail SMTP, FluentSMTP or Post SMTP, and connect it to a proper sending service: your Google Workspace or Microsoft 365 mailbox, or a service such as Brevo or Mailgun. Then set the From address to one on your own domain, put the visitor's address in Reply-To, add the SPF and DKIM records the service gives you, and send a test.
Key takeaways
- WordPress sends email through your web server by default, which many mail providers don't trust.
- An SMTP plugin hands every email your site sends, not only form emails, to a proper sending service.
- FluentSMTP is free in full, while WP Mail SMTP and Post SMTP keep some features for their paid versions.
- Use a From address on your own domain and put the visitor's address in Reply-To.
- Add the SPF and DKIM records your sending service gives you, or some enquiries may still go to spam.
What is SMTP?
SMTP (Simple Mail Transfer Protocol) is the standard way email is passed from one mail server to another. An SMTP plugin makes WordPress sign in to a proper mail service and send through it, instead of using the web server's own mail function.
On this page
Why do WordPress contact forms need SMTP?
WordPress contact forms need SMTP because, out of the box, WordPress sends email through your web server's own mail function, and receiving mail servers have little reason to trust it. Contact Form 7, WPForms, Gravity Forms and the rest all hand their emails to WordPress's wp_mail() function, so they share the same weakness.
Two things go wrong. Some hosts limit or switch off the server's mail function, so the email is never sent at all. More often it is sent, but Gmail or Outlook can't tell that your server is allowed to send for your domain, and the enquiry lands in spam or disappears. Our post on why WordPress form emails go to spam explains that second problem in more detail.
An SMTP plugin deals with both. It replaces the server's mail function, so every email your site sends, password resets and shop orders included, goes out through a mail service that signs in, is trusted by other providers and reports errors you can read.
Which SMTP plugin should you use?
For most small sites, FluentSMTP or WP Mail SMTP will do the job, and the choice comes down to which features you want without paying. The three popular plugins are all free to install from the WordPress plugin directory, and all three can send a test email. At the time of writing, their free versions compared like this [CHECK]:
| Plugin | Price | Email log | Backup connection | Worth knowing |
|---|---|---|---|---|
| WP Mail SMTP | Free, with a paid Pro version | Pro only | Pro only | The Microsoft 365, Amazon SES and Zoho mailers are Pro only |
| FluentSMTP | Free, with no paid version | Free | Free | Can tell you on Telegram, Slack, Discord or Pushover when an email fails |
| Post SMTP | Free, with a paid Pro version | Free | Free | Emails you when sending fails; one-click Google and Microsoft set-up is Pro |
WP Mail SMTP is the best known, and its set-up wizard is easy to follow. Its directory listing is "WP Mail SMTP by WPForms", so it comes from the team behind the WPForms form plugin. FluentSMTP is the one to choose if you want an email log and a backup connection for nothing. If you use Gravity Forms, its makers sell their own Gravity SMTP plugin, and have add-ons for Mailgun, Postmark and SendGrid that send form notifications only.
Install one SMTP plugin, not two. They all take over the same part of WordPress, and two of them can get in each other's way.
Which sending service should you connect it to?
If your business email is already on Google Workspace or Microsoft 365, start there: you already pay for it, and your domain is set up for it. Otherwise, a transactional email service such as Brevo or Mailgun is built for this job, and a contact form sends so few emails that a free plan usually covers it. These were the allowances at the time of writing [CHECK]:
| Service | Free allowance | Good to know |
|---|---|---|
| Google Workspace | Included in your subscription | Google's Gmail SMTP server allows 2,000 messages a day. Connect with the plugin's Google sign-in or an app password |
| Microsoft 365 | Included in your subscription | Use a plugin that signs in with Microsoft, because password-only SMTP sign-in is being retired |
| Brevo | 300 emails a day on the Free plan | Brevo approves new accounts before they can send |
| Mailgun | 100 emails a day on the Free plan | One custom sending domain |
| SendGrid | A free trial, then paid plans | Check the current plans before you rely on it |
| Amazon SES | Charged per email, with AWS Free Tier credits for new customers | Cheap at volume, but the most technical to set up |
If you use Microsoft 365, note that Microsoft is retiring Basic authentication (a plain username and password) for SMTP in Exchange Online, and at the time of writing plans to turn it off by default for existing tenants at the end of December 2026 [CHECK]. A plugin that connects with Microsoft's own sign-in avoids the problem, and FluentSMTP includes one free.
Avoid sending through a personal Gmail or Outlook.com account. The email then comes from that account rather than your domain, which brings back the problem you set out to fix.
How to set up SMTP in WordPress
Setting up SMTP takes six short steps once you've chosen a plugin and a service, and the plugin's wizard walks you through most of them. The steps below suit a sending service such as Brevo or Mailgun. With Google Workspace or Microsoft 365, you skip the first two and sign in with that account instead of pasting a key.
-
Create the sending account
Sign up with the sending service and add your domain, such as acmeplumbing.co.uk. It gives you DNS records to add and an SMTP password or API key.
-
Add the DNS records
Add the SPF and DKIM records it gives you wherever your domain's DNS is managed, then wait until the service shows the domain as verified.
-
Install one SMTP plugin
In WordPress, go to Plugins → Add New Plugin, search for WP Mail SMTP, FluentSMTP or Post SMTP, then install and activate it.
-
Connect the service
Run the plugin's set-up wizard, choose your service as the mailer and paste the key, or sign in with Google or Microsoft. Use Other SMTP only when your service has no mailer of its own.
-
Set the From address
Enter a From address on your own domain, such as [email protected], and your business name as the From name.
-
Send a test email
Use the plugin's test page to send a message to an inbox you check, and fix any error it reports before you go further.
Do the DNS step even if the test email arrives without it. Without SPF and DKIM, the service is sending on your behalf with nothing to prove it may, and some of your enquiries may still end up in spam.
What should the From and Reply-To addresses be?
The From address should be on your own domain, and the visitor's address should go in Reply-To. The email is then honestly from your website, and pressing Reply still writes to the person who filled in the form.
Many forms are set up the other way round, with the visitor's address in From. Your server then sends a message claiming to come from someone's Gmail or Yahoo account, which is what forged email looks like. Gravity Forms' documentation warns against it and names Yahoo, AOL and Gmail among the providers with policies that catch it. WPForms shows "The current From Email does not match your website domain name" under the field when the domain is wrong.
Check the setting in two places. The SMTP plugin has a From address, and most can force it on every email the site sends. The form plugin has its own, in the form's notification or mail settings (the Mail tab in Contact Form 7). Set the form's Reply-To to its email field, using the tag the form plugin gives that field.
How do you check SMTP is working?
Send a real enquiry through your own form and check it lands in the inbox rather than spam. The plugin's test email proves the connection works; only a real submission proves the form's own settings are right too.
Fill in the form with an email address that isn't the one it sends to, and look in both the inbox and the spam folder.
Open the plugin's email log, if it has one, and confirm the email shows as sent.
Check the sending service's own log, which shows whether the receiving server accepted it.
Open the email, view its headers ("Show original" in Gmail) and look for a pass for SPF and DKIM.
If SPF or DKIM fail, the DNS records aren't right yet. Our guide to SPF, DKIM and DMARC explains what each record does and how to check them. For Contact Form 7's own settings, work through the Contact Form 7 not sending email checklist.
Is SMTP enough on its own?
SMTP makes form emails far more reliable, but every enquiry still depends on one email reaching one inbox. A full mailbox, a changed password on the sending account or a new filter can still lose a message without anyone noticing.
Two safeguards cost nothing. Keep a copy of every submission on the site: Gravity Forms stores entries, Contact Form 7 needs the Flamingo add-on, and WPForms Lite doesn't keep entries. And switch on your SMTP plugin's failure alerts if it has them, so a broken connection doesn't go unnoticed for weeks.
Formcrier is one more option. It sends each submission to your phone on WhatsApp, a text, Telegram, Slack or Microsoft Teams within seconds, without going through your site's email, using its WordPress plugin or a script tag. It's free for 10 alerts a month.
Frequently asked questions
It covers everything sent through WordPress's wp_mail() function, which includes form notifications, password resets and most shop emails. A plugin that sends email its own way, outside wp_mail(), isn't covered.
Yes. Choose Other SMTP in the plugin and enter the host's mail server, port, username and password. It works, but the email then depends on your host's mail server, so add the SPF and DKIM records your host gives you as well.
Port 587 with TLS is the usual choice, or 465 with SSL, and Google lists both for its Gmail SMTP server. If your host blocks outgoing SMTP ports, use your service's own mailer in the plugin, which sends over the web instead.
Yes, for everything else your site sends, such as confirmation emails to visitors and password resets. A phone alert service such as Formcrier doesn't use your site's email, so its alerts arrive whether SMTP works or not.
Sources and method
Plugin features were checked on each plugin's WordPress.org page, and free allowances on each service's own pricing page, on 1 Oct 2026. Plans and allowances change, so check them before relying on them.
- WordPress.org, WP Mail SMTP by WPForms plugin page, accessed 1 Oct 2026
- WordPress.org, FluentSMTP plugin page, accessed 1 Oct 2026
- WordPress.org, Post SMTP plugin page, accessed 1 Oct 2026
- Google Workspace Admin Help, Send email from a printer, scanner, or app, accessed 1 Oct 2026
- Microsoft Exchange Team Blog, Updated Exchange Online SMTP AUTH Basic Authentication Deprecation Timeline, accessed 1 Oct 2026
- Microsoft Learn, Deprecation of Basic authentication in Exchange Online, accessed 1 Oct 2026
- Brevo, Pricing, accessed 1 Oct 2026
- Mailgun, Pricing, accessed 1 Oct 2026
- Twilio SendGrid, Pricing, accessed 1 Oct 2026
- Amazon Web Services, Amazon SES pricing, accessed 1 Oct 2026
- Gravity Forms Documentation, Troubleshooting Notifications, accessed 1 Oct 2026
- WPForms, How to Set Up Form Notification Emails in WPForms, accessed 1 Oct 2026
Tim builds websites for UK service businesses and made Formcrier after clients kept missing enquiries sent by email.