WordPress

SparkPost, Postmark or Resend for WordPress: how to set up each one for SMTP

SMTP host, port, username and password for SparkPost, Postmark and Resend, the domain each needs verified, how to connect them to WordPress and what to check.

October 29, 2026 · 10 min read

Want it fixed today? Free for 5,000 emails a month. No card.

To send WordPress email through SparkPost, Postmark or Resend, open an SMTP plugin such as WP Mail SMTP, choose Other SMTP and enter the host, port, username and password for the service. SparkPost uses smtp.sparkpostmail.com on port 587, the username SMTP_Injection and an API key as the password. Postmark uses smtp.postmarkapp.com on port 587, with a Server API token as both username and password. Resend uses smtp.resend.com on port 465, the username resend and an API key as the password.

None of them will send for you until the address you send from is verified, which usually means adding DNS records for your domain. This article gives the settings, the verification each service asks for, the WordPress steps and the checks to run when it fails. The details come from each service’s own documentation, read in October 2026. If a value here does not match your dashboard, trust the dashboard.

Already connected and getting an error? Start with WP Mail SMTP not working? Common errors and how to fix them.

Before you start

  • Run only one SMTP or mail-logging plugin. Two plugins fight over WordPress’s mail function.
  • You need access to your domain’s DNS (at your registrar, your host or Cloudflare) to add the verification records.
  • Pick the From address now, on the domain you will verify, for example [email protected]. Form plugins that send “From” the visitor break this; see why the From address must be your own.
  • If WordPress could not send any email before you started, read how to fix WordPress not sending email first, because some hosts block outgoing SMTP ports.

SMTP settings or the plugin’s own mailer

WP Mail SMTP lists SparkPost, Postmark and Resend as separate mailers, and its WordPress.org page does not mark any of them as Pro. A provider mailer asks for an API key (for Postmark, the Server API token) and sends over HTTPS. The plugin’s description says this works even when your host blocks SMTP ports. Other SMTP uses the host, port and login in the tables below, and the same values work in any plugin or app with a custom SMTP option. If you can reach the SMTP port, either route works. If every SMTP test times out, use the mailer.

An API key or token is a password. Do not paste it into a support forum or a screenshot. If one leaks, create a new key in the service and delete the old one.

SparkPost (now part of Bird)

SparkPost is now sold under the Bird name: sparkpost.com redirects to bird.com, and SparkPost’s older help pages redirect to Bird’s documentation. The SMTP details below are from SparkPost’s developer documentation. If your account uses Bird’s newer dashboard, screens and labels may differ, so check what your account shows.

SMTP settings

WP Mail SMTP fieldValue
SMTP Hostsmtp.sparkpostmail.com (EU accounts: smtp.eu.sparkpostmail.com)
EncryptionTLS
SMTP Port587 (2525 if 587 is blocked)
Auto TLSOn
AuthenticationOn
SMTP UsernameSMTP_Injection
SMTP PasswordAn API key that has the “Send via SMTP” permission

Create the key in the SparkPost dashboard under API Keys → Create API Key, give it the “Send via SMTP” permission and copy it before you leave the page. SparkPost’s SMTP page says the encryption is STARTTLS. EU accounts use the EU host and manage their keys in the EU dashboard at app.eu.sparkpost.com.

Verify your sending domain

In the dashboard, choose Add Sending Domain and enter a subdomain such as mail.yourdomain.com. WP Mail SMTP’s guide recommends a subdomain over the root domain. SparkPost then shows the DNS records to add: a TXT record for DKIM and a CNAME record for bounces. Add them at your DNS provider, tick the confirmation box and click Verify Domain. The domain should then show Sending, Bounce and DKIM Signing. The guide says checks can take up to 24 hours and DNS changes up to 48. Your From address must be on this domain.

Connect it in WordPress

  1. Install and activate WP Mail SMTP, then open WP Mail SMTP → Settings → General.
  2. Enter From Email (on the verified domain) and From Name, and turn on Force From Email.
  3. Set Mailer to Other SMTP and enter the values above. Or set it to SparkPost, paste the API key and pick US or EU to match your account. WP Mail SMTP’s guide for that mailer uses a key with API permissions set to All.
  4. Click Save Settings.
  5. Open WP Mail SMTP → Tools → Email Test, send a test to an address you can check, and read the result.

SparkPost used to have its own WordPress plugin. The WordPress.org directory now lists it as closed and not available for download, so use an SMTP plugin. If the old plugin is still installed on your site, switch to WP Mail SMTP and remove it.

If it fails

  • Authentication failure. Check that the username is exactly SMTP_Injection and that the key has the “Send via SMTP” permission. Re-copy the key with no spaces.
  • 550 5.7.1 Unconfigured Sending Domain. The From address is not on a sending domain in your account. Use an address on the verified domain, or add the domain.
  • Domain not verified yet. WP Mail SMTP’s guide says test emails will not send until the domain shows DKIM Signing. Wait, or look at the DNS records again.
  • Timeout. Your host may block port 587. Try 2525, or switch to the SparkPost mailer.
  • Wrong region. Use the host for your account’s region. If you use the SparkPost mailer, the region you pick in WP Mail SMTP must match your account.

Postmark

Postmark separates mail into servers and message streams. For a WordPress site, create one server and use its token.

SMTP settings

WP Mail SMTP fieldValue
SMTP Hostsmtp.postmarkapp.com
EncryptionTLS
SMTP Port587 (Postmark also lists 25 and 2525)
Auto TLSOn
AuthenticationOn
SMTP UsernameYour Server API token
SMTP PasswordThe same Server API token

Find the token under Servers → your server → API Tokens. Use the Server API token, not the Account API token: Postmark says account tokens do not work for SMTP. Postmark’s connection-errors page also says port 465 (implicit SSL) is not supported, so use 587 with TLS. SMTP access can be turned on or off per server in the server’s Settings, so check it is on.

By default Postmark sends through the server’s default transactional stream, which suits password resets and form notifications.

Verify your sending domain

Open Sender Signatures and choose Add Domain or Signature. A single sender signature only needs you to click a confirmation link Postmark emails to that address. Verifying the whole domain is the option WP Mail SMTP’s guide recommends. For a domain, Postmark shows two records on its DNS Settings page:

  • a TXT record for DKIM, using the host name and value shown;
  • a CNAME record for the Return-Path. The default host is pm_bounces and the value is pm.mtasv.net.

Postmark says both should show as verified within 48 hours, and the Verify button runs a manual check.

New Postmark accounts are reviewed by hand. Until yours is approved you can only send to addresses on domains you added and verified, and your test email to a Gmail address will fail. The account owner requests approval from the account; Postmark says reviews usually finish within 24 hours on weekdays. While you wait you can send to [email protected], which drops the mail but shows it in Activity.

Connect it in WordPress

  1. Open WP Mail SMTP → Settings → General and set the From Email and From Name.
  2. Set Mailer to Other SMTP and enter the values above. Or set it to Postmark, paste the Server API Token and leave Message Stream ID empty to use the default transactional stream.
  3. Save, then send a test from WP Mail SMTP → Tools → Email Test.

A Postmark plugin is also in the WordPress.org directory, listed as ActiveCampaign Postmark for WordPress. You enter your details under Settings → Postmark, send a test and tick Enable. It was last updated in November 2024, and the directory shows its notice that it has not been tested with the latest three major WordPress releases. Check the listing before you rely on it.

If it fails

These are the causes Postmark lists on its connection-errors page, plus the approval limit above.

  • Connection timed out. Many hosts block port 25. Use 587 or 2525.
  • Authentication failed. Wrong token type, a token from a different server, or stray spaces. Copy the Server API token from the server you want, with nothing before or after it.
  • SSL or TLS handshake failure. Use STARTTLS on a supported port, move from 465 to 587, and make sure the server supports TLS 1.2 or higher.
  • Sender Signature Not Found. The From address does not exactly match a verified signature or domain.
  • Mail to outside addresses is refused. The account is not approved yet.

Resend

Resend is built around its API, and it also accepts SMTP. You can reach it three ways: Resend’s own WordPress plugin (API), the Resend mailer in WP Mail SMTP (API), or Other SMTP. All three use the same Resend account, the same API key and the same verified domain.

SMTP settings

WP Mail SMTP fieldValue
SMTP Hostsmtp.resend.com
EncryptionSSL
SMTP Port465 (for TLS, Resend also lists 587, 25 and 2587; for SSL, 2465)
Auto TLSOn
AuthenticationOn
SMTP Usernameresend
SMTP PasswordYour Resend API key

Resend’s SMTP page lists ports 25, 465, 587, 2465 and 2587. Ports 465 and 2465 use implicit SSL/TLS; 25, 587 and 2587 use STARTTLS. If you are unsure, Resend’s changelog recommends port 465, and its own WordPress guide uses SSL with 465. If you choose 587, select TLS in WP Mail SMTP. Create the key under API Keys → Create API key. The SMTP page does not name a required permission. WP Mail SMTP’s guide for its Resend mailer uses Full access so the plugin can read delivery status.

Verify your sending domain

In Resend open Domains → Add domain, enter your domain and choose a region. Resend recommends sending from a subdomain such as updates.yourdomain.com. It then shows the DNS records to add:

  • a DKIM TXT record at resend._domainkey on your domain;
  • records on the send host for SPF and bounces. Older domains get a TXT and an MX record there; Resend says domains created after August 2026 may get CNAME records instead.

Add exactly the records shown in the domain’s Records tab, then click Verify DNS Records. If your DNS is on Cloudflare you can let Resend add them for you. Resend says verification often finishes within 15 minutes, DNS changes can take up to 72 hours, and a domain whose records are not found within 72 hours is marked failed. Your From address must be on the verified domain.

Connect it in WordPress

With WP Mail SMTP and Other SMTP (Resend’s own WordPress guide):

  1. Open WP Mail SMTP → Settings and set From Email (on the verified domain), From Name and Return Path.
  2. Set Mailer to Other SMTP and enter the values above.
  3. Save, then send a test from WP Mail SMTP → Tools.

With the Resend mailer: choose Resend as the mailer, paste the API key and set the From Email and From Name. With Resend’s plugin: install the plugin published by Resend, open Settings → Resend, enter the API key, sender name and sender email, and click Send Test Email. The directory lists version 1.0.0, updated in September 2026. Do not run it together with an SMTP plugin.

If it fails

These are the error texts from Resend’s error reference.

  • 403 “The domain.com domain is not verified. Please, add and verify your domain.” The From address is on a domain you have not verified. Fix the From address or finish verification.
  • 403 “You can only send testing emails to your own email address.” You have no verified domain yet. Verify one and send from it.
  • 401 “API key is invalid.” The key was deleted or is not active. Create a new one and paste it again.
  • Domain stuck on pending or failed. Check that the records are on the right host (the send subdomain, not the root), that values have no extra quotes or spaces, and that Cloudflare records are set to DNS only (grey cloud). Then click Restart verification.
  • No log to read. Resend’s SMTP page says it does not provide SMTP server logs. Use WP Mail SMTP’s test output and the emails list in the Resend dashboard, where SMTP emails also appear.

Verification and first send, side by side

The connection settings are in the tables above. Prices and free allowances change, so they are not listed. Check each service’s pricing page.

SparkPostPostmarkResend
Domain records to addTXT for DKIM, plus a CNAME for bouncesDKIM TXT and a Return-Path CNAMEDKIM TXT, plus the records Resend shows for the send host
Needed before the first real sendDomain shows DKIM SigningAccount approved, to send outside your verified domainA verified domain, to send to anyone but yourself
Error when the From domain is not verified550 5.7.1 Unconfigured Sending DomainSender Signature Not Found403 “domain is not verified”

If a message bounces, the code in the bounce is explained in email bounce codes explained.

Confirm it works

  1. The Email Test in WP Mail SMTP shows a success message.
  2. Trigger a real email from your site, such as a password reset or a form submission, to a Gmail or Outlook address.
  3. In Gmail open the message, then ⋮ → Show original. DKIM should say PASS for your own domain, not the service’s domain. SPF should pass too. If DKIM passes for another domain, the verification records are incomplete. SPF vs DKIM vs DMARC explains each line.
  4. Open the service’s own activity or emails page and check the message shows as delivered.

If you want a longer list of things that affect inbox placement, see the email deliverability checklist.

SecureSMTP as another option

SecureSMTP is our own service, so weigh that. Its WordPress plugin connects in a few minutes and routes wp_mail() and form emails through SecureSMTP, and SMTP on ports 587 and 465 and a REST API are also available. Mail goes out from your own domain with DKIM signing once you verify the domain with DNS records (until then, up to 10 test emails a day to your own address), and every email appears in the email log with its delivery status. The Free plan includes 5,000 emails a month, 1 site and 1 sending domain, and paid plans start at $7 a month. See SecureSMTP for WordPress, the WordPress plugin guide, or how to use it through WP Mail SMTP if you want to keep that plugin.

Frequently asked questions

Which port should I use, 587 or 465?

Use the one the service documents for the encryption you picked. SparkPost and Postmark document port 587 with STARTTLS (select TLS in WP Mail SMTP) and neither lists 465. Resend documents both: 465 with SSL/TLS, or 587 with STARTTLS. Do not mix them, for example SSL with port 587, because that fails with a timeout or a TLS error.

Should I use SMTP or the API?

If your host lets your site connect out on the SMTP port, either works. WP Mail SMTP’s plugin description says its provider mailers send through the provider’s API, which works even when the host blocks SMTP ports. If your test email times out on every SMTP port, switch to the mailer.

Do I need WP Mail SMTP Pro for these three?

No. The WordPress.org description of WP Mail SMTP lists SparkPost, Postmark, Resend and Other SMTP without a Pro label. Check the plugin’s page for the current list.

The test email arrives but my contact form emails do not. Why?

The form is probably setting its own From address, often the visitor’s address. That address is not on your verified domain, so the service refuses it. Turn on Force From Email in WP Mail SMTP, or set the form’s From address to your own domain. See why your contact form must not send From the visitor’s email.

The email is sent but lands in spam. What now?

The service accepted it, so the connection is fine. Check that the message is signed with DKIM for your own domain and that SPF or the return-path lines up with it. SPF vs DKIM vs DMARC explains what to look for in the message headers.

Related reading

Send WordPress email from your own domain with SecureSMTP →

Fix email delivery on your site

SecureSMTP sends WordPress, Shopify and app email through an authenticated mail service, DKIM-signed for your own domain, and shows the result of every email.

or sign up with email

Free plan: 5,000 emails a month. No card needed. Setup takes a few minutes, plus DNS time for your sending domain.