Title: SendPaw Mail
Author: platkadigital
Published: <strong>August 15, 2026</strong>
Last modified: August 15, 2026

---

Search plugins

![](https://ps.w.org/sendpaw-mail/assets/banner-772x250.png?rev=3648224)

![](https://ps.w.org/sendpaw-mail/assets/icon-256x256.png?rev=3648249)

# SendPaw Mail

 By [platkadigital](https://profiles.wordpress.org/platkadigital/)

[Download](https://downloads.wordpress.org/plugin/sendpaw-mail.1.1.7.zip)

 * [Details](https://wordpress.org/plugins/sendpaw-mail/#description)
 * [Reviews](https://wordpress.org/plugins/sendpaw-mail/#reviews)
 *  [Installation](https://wordpress.org/plugins/sendpaw-mail/#installation)
 * [Development](https://wordpress.org/plugins/sendpaw-mail/#developers)

 [Support](https://wordpress.org/support/plugin/sendpaw-mail/)

## Description

**SendPaw Mail** makes WordPress email actually arrive. It replaces WordPress’s 
default
 mail sending (`wp_mail()`) with delivery through SendPaw, so your transactional
email — order confirmations, user registrations, password resets, contact-form notifications—
reaches the inbox instead of the spam folder.

You can send using either of two independent methods, whichever suits your host:

 * **HTTP API** — a Bearer token calls SendPaw’s REST endpoint directly. Fastest,
   and less
    likely to be blocked by hosting firewalls.
 * **SMTP** — a real username and password over the standard SMTP protocol.

The HTTP API and SMTP are two different protocols with their own separate credentials—

pick either one as your primary sending method, with optional automatic fallback
from API to SMTP if the API call fails.

Features:

 * Two independent sending methods: HTTP API (Bearer token) or SMTP (username + 
   password).
 * SMTP credentials work like any standard SMTP server — they aren’t tied to the
   API key,
    so the SMTP settings also work with SMTP providers other than SendPaw.
 * Optional automatic fallback to SMTP if the API call fails.
 * Every send is capped at 10 seconds total (across the API attempt and the
    SMTP
   fallback combined), so a slow or unreachable mail server can only add a few seconds
   to the page that triggered the email, never minutes — this is what prevents 504
   Gateway Timeout errors on checkout, registration, contact forms, etc.
 * Automatically overrides the “From” address for all WordPress emails.
 * Send a test email directly from the settings page.

Note: SendPaw is a self-hosted service, so you’ll need to enter the hostname of 
your own
 SendPaw instance (there is no single shared hostname for all users).

### External services

This plugin connects to SendPaw, an external transactional email service, to deliver
the
 email your WordPress site sends. Sending mail through SendPaw is the entire
purpose of the plugin, so it cannot work without contacting that service. Nothing
is sent until you have entered your own credentials on the Settings > SendPaw Mail
screen.

**1. SendPaw email API (`https://sendpaw.com/api/v1/email`)**

Used to deliver your WordPress email when the sending method is set to “HTTP API”.
Every
 time WordPress sends an email (order confirmation, user registration, password
reset, contact-form notification, or the test email you trigger from the settings
screen), the plugin makes one HTTPS request to this endpoint containing: your API
key (as a Bearer token), the sender name and address you configured, the recipient
addresses, the subject, the message body, and any attachments passed to `wp_mail()`.
No data is sent when no email is being sent.

**2. SendPaw SMTP server (the host you enter under “SMTP host”)**

Used to deliver your WordPress email when the sending method is set to “SMTP”, or
as the
 automatic fallback when an API send fails. The same message data listed 
above (sender, recipients, subject, body, attachments) is transmitted over an authenticated,
encrypted SMTP connection using the SMTP username and password you entered. These
SMTP settings are provider-agnostic: if you point them at a non-SendPaw SMTP server,
the mail goes to that server instead and SendPaw is not contacted.

**3. SendPaw account API (`https://sendpaw.com/api/v1/...`), optional**

Only used if you click “Connect to SendPaw” or after you have connected. The connect
flow
 opens SendPaw in your browser to authorise this site (protected by a one-time
state value plus PKCE) and, on approval, receives a send-only API key that is saved
in your settings. While connected, the settings screen requests your account summary(
remaining email credits and the list of your sending domains and their verification
status) so it can display them in the sidebar. Your site URL is sent as part of 
the connect request so the created key can be identified. This is not used at all
if you enter an API key manually.

Service provider: SendPaw (https://sendpaw.com).
 Terms of Service: https://sendpaw.
com/terms Privacy Policy: https://sendpaw.com/privacy

Note: SendPaw can also be self-hosted. If you define the `SENDPAW_API_HOST` constant
in
 wp-config.php, or point the SMTP host at your own server, the requests described
above go to that instance instead of sendpaw.com, and that operator’s terms apply.

## Screenshots

[⌊Settings page (placeholder — to be replaced with an actual screenshot).⌉⌊Settings
page (placeholder — to be replaced with an actual screenshot).⌉[

Settings page (placeholder — to be replaced with an actual screenshot).

[⌊Connect flow (placeholder — to be replaced with an actual screenshot).⌉⌊Connect
flow (placeholder — to be replaced with an actual screenshot).⌉[

Connect flow (placeholder — to be replaced with an actual screenshot).

## Installation

 1. Upload the `sendpaw-mail` folder to `/wp-content/plugins/`, or install it through
    the WordPress Plugins screen.
 2. Activate the plugin.
 3. Go to Settings > SendPaw Mail.
 4. Enter the API key from your SendPaw dashboard, or click “Connect to SendPaw” to
    have one created and filled in for you.
 5. Save, then send a test email to confirm your configuration works.

If you send over SMTP instead, the SMTP host is already filled in with SendPaw’s
server — you only need to add your SMTP username and password. Change the host if
you send through a different provider.

## FAQ

### Which PHP versions are supported?

PHP 7.4 is the minimum. The plugin is compatible with PHP 8.0 through 8.5, including
the
 stricter null-argument handling introduced in PHP 8.1: every value is cast 
to string before it reaches `trim()`, `preg_replace()` or similar, so a null coming
from `wp_mail()` headers or an unset settings field never triggers a deprecation
notice.

The plugin declares all class properties explicitly, so it is unaffected by the 
deprecation
 of dynamic properties (PHP 8.2) and will keep working when that becomes
an error in PHP 9. It uses no functions or extensions removed in PHP 8.5.

### Can I use a subdomain as my sending domain?

Yes. A subdomain such as `mail.example.com` or `news.example.com` is added and verified
as
 a domain in its own right, with its own SPF, DKIM and (optionally) tracking 
and bounce records published under that subdomain. Note that verifying `example.
com` does not automatically authorise its subdomains — add each sending subdomain
separately, and make sure the `From:` address on this settings screen matches a 
verified one.

### What’s the difference between API and SMTP in this plugin?

The API sends through SendPaw’s HTTP endpoint (faster, and less likely to be blocked
by
 hosting firewalls). SMTP sends using the standard SMTP protocol to SendPaw’s
ingress. The plugin can use the API as the primary method and automatically fall
back to SMTP if the API fails.

### Why do I need to enter the “Host” myself?

SendPaw can be self-hosted, so every instance has its own hostname — there is no
single
 hostname that works for every user.

### Are attachments supported?

Yes. Attachments passed to `wp_mail()` — WooCommerce invoices, form uploads, and
so on —
 are sent over both transports. On the API path the server validates each
file against an allowlist of types and the operator’s size/count limits, and rejects
the message if a file isn’t allowed rather than delivering it without the attachment.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“SendPaw Mail” is open source software. The following people have contributed to
this plugin.

Contributors

 *   [ platkadigital ](https://profiles.wordpress.org/platkadigital/)

[Translate “SendPaw Mail” into your language.](https://translate.wordpress.org/projects/wp-plugins/sendpaw-mail)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/sendpaw-mail/), check
out the [SVN repository](https://plugins.svn.wordpress.org/sendpaw-mail/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/sendpaw-mail/) by
[RSS](https://plugins.trac.wordpress.org/log/sendpaw-mail/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.7

 * The SMTP host now defaults to SendPaw’s SMTP server, so it no longer has to be
   typed in
    by hand. Existing installs that left it blank are filled in automatically;
   a host you set yourself is never overwritten.
 * Replaced the settings-page logo with the correct SendPaw mark.

#### 1.1.6

 * Verified compatibility with PHP 8.5; documented that the plugin uses no functions
   or
    extensions removed in that release and declares all class properties explicitly,
   so it is unaffected by the dynamic-property deprecation that becomes an error
   in PHP 9.

#### 1.1.5

 * Added a “Settings” link to the plugin’s row on the Plugins screen, so the configuration
   
   page can be reached directly after activation instead of via the Settings menu.
 * Added a “Documentation” link to the plugin row meta.

#### 1.1.4

 * Moved all admin CSS and JavaScript out of the page markup into properly enqueued
   asset
    files (`wp_enqueue_style()` / `wp_enqueue_script()`), loaded only on the
   plugin’s own settings screen.
 * Documented the external SendPaw services the plugin contacts, what data is sent
   and when,
    with links to the terms of service and privacy policy.
 * Load WordPress’s bundled PHPMailer classes with `require_once` instead of `require`.

#### 1.1.3

 * Verified compatibility with PHP 8.0 through 8.4.
 * Hardened string handling so a null value from `wp_mail()` (headers, recipients)
   or a
    settings field no longer triggers a PHP 8.1 deprecation notice.
 * Use `wp_safe_redirect()` for the Connect flow, whitelisting only the SendPaw 
   host.
 * Documented that query-string reads on the settings screen are display-only and
   the
    Connect callback is protected by a one-time state value plus PKCE.
 * Fixed the internal version constant not matching the plugin header.

#### 1.1.0

 * Send `wp_mail()` attachments over both the API and SMTP transports (previously
   dropped).
 * API sends now include the sender display name, matching SMTP sends.
 * Fixed the SMTP timeout not honouring the remaining send-time budget.

#### 1.0.0

 * Initial release: one-screen setup, sending via the API with SMTP fallback, test
   email feature.

## Meta

 *  Version **1.1.7**
 *  Last updated **23 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [deliverability](https://wordpress.org/plugins/tags/deliverability/)[email](https://wordpress.org/plugins/tags/email/)
   [mail](https://wordpress.org/plugins/tags/mail/)[smtp](https://wordpress.org/plugins/tags/smtp/)
   [transactional email](https://wordpress.org/plugins/tags/transactional-email/)
 *  [Advanced View](https://wordpress.org/plugins/sendpaw-mail/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/sendpaw-mail/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/sendpaw-mail/reviews/)

## Contributors

 *   [ platkadigital ](https://profiles.wordpress.org/platkadigital/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/sendpaw-mail/)