Title: SpeedyMessaging
Author: hthub247
Published: <strong>August 24, 2026</strong>
Last modified: August 24, 2026

---

Search plugins

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

![](https://ps.w.org/speedymessaging/assets/icon.svg?rev=3664326)

# SpeedyMessaging

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

[Download](https://downloads.wordpress.org/plugin/speedymessaging.1.0.0.zip)

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

 [Support](https://wordpress.org/support/plugin/speedymessaging/)

## Description

This is the official WordPress client for **SpeedyMessaging**, a paid transactional
email service. It is not a general SMTP configuration plugin: it does not connect
to arbitrary mail hosts, and it has no server/port/encryption fields. It speaks 
one service’s API, and it exists to make sending from that account correct rather
than merely possible.

Routes `wp_mail()` through the SpeedyMessaging API so every email your site sends—
WooCommerce receipts, Contact Form 7 submissions, password resets — goes out through
your own mailbox, without changing any of those plugins.

#### What this does that a mail-configuration plugin does not

Sending here costs money per message, and the account can run out. That makes the
hard problems different from “which host do I point at”, and it is where this plugin
does its work:

 * **You are never charged twice.** Every paid call carries an `Idempotency-Key`,
   so a plugin that fires `wp_mail()` twice, or two overlapping cron runs, produce
   one delivery and one charge — not two. Retrying a paid send is normally the thing
   you cannot safely do; here it is safe by construction.
 * **Attachments arrive openable, or not at all.** Every file is uploaded first 
   and sent by reference. Testing against the live API showed that passing a file
   inline is _accepted and then never stored_ — the recipient gets a message claiming
   an attachment nobody can open. This plugin never sends that way, and if a file
   cannot be uploaded it hands the message to your normal mail rather than delivering
   it gutted.
 * **Running out of credit holds mail, it does not lose it.** Queued messages wait,
   an admin notice appears, and they send once the account is topped up. Nothing
   is discarded.
 * **Consent is tracked and enforced.** A do-not-contact list is checked on every
   send, with signed one-click unsubscribe links that cannot be edited to suppress
   somebody else. Privacy exporters and erasers are registered, so a GDPR request
   covers what the plugin stores.
 * **It stays out of your way.** The plugin’s screen lives under Settings. The only
   notices raised elsewhere mean mail is not being delivered right now — they are
   dismissible, and they never appear while you are writing a post.

**Nothing is ever silently lost.** Email tries each configured transport in turn
and falls back to this site’s normal mail if none of them work, so a mistyped credential
degrades delivery rather than stopping it:

 1. `POST /v1/email/messages` — preferred: idempotent retries, uploads for attachments,
    mailbox-bound scope checks
 2. `POST /business-email/send` — fallback
 3. `POST /messages` — last resort
 4. This site’s normal `wp_mail()` / SMTP

#### Also included

 * A durable queue with claiming, exponential backoff and a per-minute rate budget
 * An SMS helper for theme and plugin code, `speedy_send_sms( $to, $body )`, for
   sites whose account also has SMS enabled — a secondary convenience in this release,
   not its focus
 * A do-not-contact list, checked on every send, with signed one-click unsubscribe
   links
 * Privacy exporters and erasers, so a data request covers what this plugin stores
 * Optional HMAC request signing
 * A delivery log with recipients masked at write time

### External service

This plugin sends your site’s email and SMS through **SpeedyMessaging**, a third-
party messaging service operated by Helloworld Technologies Limited. The plugin 
is not useful without it — an account and API credentials are required.

**What is sent, and when.** When your site sends an email or SMS through this plugin,
the following is transmitted to `https://api.speedymessaging.com`:

 * the recipient’s email address or phone number
 * the subject and body of the message
 * any attached files
 * your API credentials, for authentication

This happens at the moment a message is sent — that is, whenever WordPress would
otherwise have sent the email itself, or when your code calls one of this plugin’s
functions. Queued messages are sent on WP-Cron. The plugin makes no other outbound
requests: it does not phone home, report usage, or transmit anything on front-end
page views.

**What is not sent.** The plugin does not transmit visitor analytics, site content,
user accounts, or anything unrelated to a message you asked it to deliver.

Service terms and privacy policy:

 * Terms of Service: https://speedymessaging.com/legal/terms
 * Privacy Policy: https://speedymessaging.com/legal/privacy
 * Service homepage and API documentation: https://speedymessaging.com/docs

By configuring this plugin with your credentials you agree to that service’s terms.
Deactivating the plugin stops all transmission immediately.

## Screenshots

[⌊The settings screen, showing which transports are configured and which carried
recent messages.⌉⌊The settings screen, showing which transports are configured and
which carried recent messages.⌉[

The settings screen, showing which transports are configured and which carried recent
messages.

[⌊A test send, reporting the transport used and the provider's response.⌉⌊A test
send, reporting the transport used and the provider's response.⌉[

A test send, reporting the transport used and the provider’s response.

[⌊The queue, with per-message status, attempt counts and retry actions.⌉⌊The queue,
with per-message status, attempt counts and retry actions.⌉[

The queue, with per-message status, attempt counts and retry actions.

[⌊The delivery log, with recipients masked.⌉⌊The delivery log, with recipients masked
.⌉[

The delivery log, with recipients masked.

## Installation

 1. Upload the plugin and activate it. Activation creates two database tables, for 
    the send queue and the delivery log.
 2. Create an API key in the SpeedyMessaging dashboard under **Developer  API keys**,
    scoped `business_email` and **bound to your mailbox** (add `messaging:sms` for 
    SMS). Start with an `sk_test_` key, which never debits credits.
 3. Enter your credentials under **Settings  SpeedyMessaging**, or — preferred — define
    them in `wp-config.php` so they stay out of the database:
 4. define( ‘SPEEDY_API_KEY’, ‘sk_live_…’ ); define( ‘SPEEDY_MAILBOX_EMAIL’, ‘noreply@
    yourdomain.com’ ); define( ‘SPEEDY_MAILBOX_APP_PASSWORD’, ‘…’ );
 5. Check the status badges and use **Send a test** to confirm delivery. Then swap 
    the test key for a live one.
 6. If your site sends in volume, disable traffic-driven cron so the queue drains on
    time:
 7. define( ‘DISABLE_WP_CRON’, true );

and add a system cron entry running `wp cron event run --due-now` every minute.

## FAQ

### Do I need a SpeedyMessaging account?

Yes. This plugin is a client for that service and does nothing without credentials
for it. See the “External service” section above for exactly what is transmitted.

### I already use an SMTP plugin. What happens?

Whichever plugin hooks `wp_mail()` first handles a given message. The settings screen
names any other mail plugin it detects and tells you which one is in charge. Running
one at a time makes delivery predictable.

### Why did some emails not go through SpeedyMessaging?

The settings screen counts them by reason. Messages with CC/BCC or a Reply-To header,
and messages whose attachment fails the size or type check, are handed to your site’s
normal mail. They are still delivered — just not by this plugin.

### What happens when the account runs out of credit?

Queued messages are held, not failed, and an admin notice appears. They send once
the account is topped up. Nothing is discarded.

### Does the plugin slow down my site?

Front-end page views do no work at all. Sending happens when WordPress sends mail,
and bulk sending happens on cron.

### Is any customer data stored?

The queue stores recipients and message bodies until delivery, then drops the bodies
after 30 days. The delivery log masks recipients at write time and never stores 
message content. Privacy exporters and erasers are registered so a data request 
covers all of it.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

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

[Translate “SpeedyMessaging” into your language.](https://translate.wordpress.org/projects/wp-plugins/speedymessaging)

### Interested in development?

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

## Changelog

#### 1.0.0

 * Initial release.
 * Email transport ladder with fallback to the site’s normal mail.
 * `wp_mail()` takeover, including attachments.
 * SMS with E.164 normalisation and GSM-7 segment counting.
 * Durable queue with claiming, backoff, rate budget and idempotency.
 * Do-not-contact list, one-click unsubscribe, privacy exporters and erasers.
 * Optional HMAC request signing; delivery-receipt webhook endpoint.

## Meta

 *  Version **1.0.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.7 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [email](https://wordpress.org/plugins/tags/email/)[email delivery](https://wordpress.org/plugins/tags/email-delivery/)
   [email log](https://wordpress.org/plugins/tags/email-log/)[transactional email](https://wordpress.org/plugins/tags/transactional-email/)
   [unsubscribe](https://wordpress.org/plugins/tags/unsubscribe/)
 *  [Advanced View](https://wordpress.org/plugins/speedymessaging/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/speedymessaging/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/speedymessaging/)