Title: Semasir SMS Portal
Author: semasirconnect
Published: <strong>November 2, 2026</strong>
Last modified: November 2, 2026

---

Search plugins

![](https://ps.w.org/semasir-sms-portal/assets/banner-772x250.png?rev=3779922)

![](https://ps.w.org/semasir-sms-portal/assets/icon-256x256.png?rev=3779922)

# Semasir SMS Portal

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

[Download](https://downloads.wordpress.org/plugin/semasir-sms-portal.3.11.0.zip)

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

 [Support](https://wordpress.org/support/plugin/semasir-sms-portal/)

## Description

Semasir SMS Portal turns a WordPress site into a bulk SMS business. Your customers
sign up, add money to their wallet, and send SMS from a clean portal on your site.
You connect the SMS service you already use, set your prices, and manage everything
from one admin area.

#### For your customers

 * Send SMS to many numbers at once, with the cost shown before sending.
 * Paste numbers separated by commas, semicolons or new lines, or pick a saved group.
 * Request a sender name and use it once it is approved.
 * See every message with its result: Successful, Sending or Failed, with the reason.
 * Add money to the wallet by card with Paystack, or by bank transfer with a payment
   proof.
 * See transactions, prices and a simple dashboard.
 * Use a revocable Bearer API key to send SMS from their own apps and websites.

#### For you, the site owner

 * One price list: set a price per country, per network, or per number prefix. The
   longest matching prefix sets the price.
 * Countries without a price are not sent and not charged.
 * Connect NewBulkSMS in one step, or any other SMS service that has a web API (
   GET, form POST or JSON).
 * Add as many SMS services as you like and choose which one sends standard, Do 
   Not Disturb and international messages.
 * Messages the service accepts count as Successful unless a failure is reported.
   Failed messages return the money to the customer’s wallet.
 * Review sender names, payments and customers from one place.
 * Reports for messages, payments and wallet changes, with CSV download.
 * Branding: your name, colours and support details on every page.
 * Optional Google reCAPTCHA on sign-in, sign-up and password reset.

#### Semasir SMS Portal Pro (optional)

Everything described above is free and complete, with no limits on customers, messages,
SMS services or money. Nothing in this plugin is locked or needs a licence key. 
For businesses that resell SMS there is a separate paid plugin, Semasir SMS Portal
Pro, sold on our website. It adds these extra tools, which are not part of this 
plugin:

 * A separate SMS service for a single customer.
 * Customer plans, per-customer features, limits and price changes, and reseller
   accounts.
 * Scheduled wallet top-ups and a regular news email to customers who ask for it.
 * Flutterwave and WooCommerce checkout, extra currencies and extra portal pages.

This plugin works fully without Pro.

#### Source code

Nothing in this plugin is minified or compiled. Every PHP, JavaScript and CSS file
is the readable source.

 * `assets/src/app/*.js` are the portal screens, one file per screen. `assets/portal-
   app.js` is these files joined together in name order, inside one wrapper function.
 * `assets/src/portal-ui.css` is the portal design system. `assets/portal-ui.css`
   is the same rules with `!important` added inside its layers, so themes cannot
   override the portal by accident.
 * All other files in `assets/` are hand-written and used as they are.

To rebuild the two joined files after changing a source file, run `node tools/build-
ui.js` from the plugin folder. The script is included, needs only Node.js, and installs
nothing.

#### Pages and shortcodes

On activation the plugin creates the pages it needs (portal, sign in, sign up, forgot
password, buy SMS, help, pricing and payment status). You can also place them yourself:

 * `[bsms_portal]` – the customer portal
 * `[bsms_login]`, `[bsms_register]`, `[bsms_forgot_password]` – account pages
 * `[bsms_public_buy_sms]`, `[bsms_public_pricing]` – public pricing and buying
 * `[bsms_help_centre]` – searchable help
 * `[bsms_payment_status]` – the page customers return to after paying

### External services

This plugin connects to the services below only when you set them up and switch 
them on. Nothing is sent to any of them by default.

#### NewBulkSMS

NewBulkSMS is a Nigerian SMS delivery service run by the author of this plugin. 
It is used only when you choose “Use NewBulkSMS” under SMS Services and save your
NewBulkSMS API key. Each message you or your customers send goes to NewBulkSMS (
https://newbulksms.com) with the phone number, the message text, the sender name
and your API key. The plugin also asks NewBulkSMS for your account balance (https://
newbulksms.com/api/balance) and for delivery results (https://newbulksms.com/api/
status), using the same API key. Messages are sent to https://newbulksms.com/api/
send. Terms: https://newbulksms.com/terms/ – Privacy: https://newbulksms.com/privacy-
policy/

#### Your SMS service

The SMS service you add under SMS Services receives each message you or your customers
send: the phone number, the message text and the sender name, along with the account
details you enter for that service. The plugin may also ask it for delivery results
and your account balance. Which company this is, and its terms and privacy policy,
depends on the service you choose.

#### Paystack

Paystack (paystack.com) is a card payment service. It is used only when you switch
on Paystack card payments and add your Paystack keys. When a customer adds money,
the plugin sends the amount, the customer’s email address, a payment reference, 
the customer’s account number on your site and the addresses to return to after 
paying to Paystack (https://api.paystack.co/transaction/initialize) to start the
payment. When the customer returns, or when Paystack sends a payment notice, the
plugin sends the payment reference to Paystack (https://api.paystack.co/transaction/
verify) to confirm the payment and its amount before adding money to the wallet.
Terms: https://paystack.com/terms – Privacy: https://paystack.com/privacy/merchant

#### Google reCAPTCHA

Used when you switch on reCAPTCHA. The sign-in, sign-up, password reset and comment
forms load the reCAPTCHA script from google.com, and the plugin sends the check 
result and the visitor’s IP address to Google to confirm the visitor is not a robot.
Terms: https://policies.google.com/terms – Privacy: https://policies.google.com/
privacy

## Screenshots

[⌊The customer dashboard with wallet balance and recent messages.⌉⌊The customer 
dashboard with wallet balance and recent messages.⌉[

The customer dashboard with wallet balance and recent messages.

[⌊Sending an SMS, with the cost shown before sending.⌉⌊Sending an SMS, with the 
cost shown before sending.⌉[

Sending an SMS, with the cost shown before sending.

[⌊Messages and their results.⌉⌊Messages and their results.⌉[

Messages and their results.

[⌊The price list for countries, networks and prefixes.⌉⌊The price list for countries,
networks and prefixes.⌉[

The price list for countries, networks and prefixes.

## Installation

 1. In WordPress, go to Plugins > Add New and search for “Semasir SMS Portal”, or upload
    the plugin ZIP file.
 2. Activate the plugin. A new “Bulk SMS” menu appears in the admin area.
 3. Open Bulk SMS > SMS Services and add the details of your SMS service.
 4. Open Bulk SMS > Pricing Manager and enter your prices.
 5. Open Bulk SMS > Platform Settings to add your brand name, support email and payment
    options.
 6. Visit the Portal page on your site and send a test message.

## FAQ

### Does the plugin send SMS by itself?

No. You connect your own SMS service (the company that delivers the messages). The
plugin sends each message to that service and records the result.

### How are customers charged?

Money paid into a wallet is credited in full, for example ₦1,000 paid adds ₦1,000.
Each message is charged at the price for the number it goes to. Long messages count
as more than one SMS, and the cost is always shown before sending.

### What happens to failed messages?

When the SMS service reports a failure, or the message never reaches the service,
the money for that message goes back to the customer’s wallet.

### Can customers send to other countries?

Yes, for any country you have priced, as long as your SMS service delivers there.
Numbers in countries without a price are skipped and not charged.

### Is my data removed when I delete the plugin?

Only if you switch on “Delete all data if the plugin is removed” in Platform Settings.
Otherwise your customers, wallets and messages stay in the database so you can reinstall
safely.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Semasir SMS Portal” is open source software. The following people have contributed
to this plugin.

Contributors

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

[Translate “Semasir SMS Portal” into your language.](https://translate.wordpress.org/projects/wp-plugins/semasir-sms-portal)

### Interested in development?

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

## Changelog

#### 3.11.0

 * Harden public registration: new accounts always receive an unprivileged portal
   role.
 * Require HTTPS for public API authentication by default, and disable legacy account-
   password API authentication by default. Use revocable Bearer API keys; legacy
   support can be enabled deliberately by a site developer using the `bsms_allow_legacy_password_api`
   filter.
 * Reject URL query-string account credentials and avoid exposing internal exception
   messages to API callers.
 * Preserve prepared report/export SQL queries and human-readable JavaScript/CSS
   build sources.

#### 3.10.1

 * The developer API checks each account’s permissions directly, without signing
   anyone in.
 * Sign-up uses WordPress’s own registration checks, so security plugins apply.
 * Easier-to-read source files.

#### 3.10.0

 * First release on WordPress.org, under the name Semasir SMS Portal.
 * Add several SMS services and choose which one sends standard, Do Not Disturb 
   and international messages.
 * Connect NewBulkSMS in one step from SMS Services.
 * New sign-in, create account and password pages, and every word can be translated.
 * Failed messages are always refunded to the customer’s wallet.
 * Developer API keys are checked before any API request is handled.
 * Compatible with PHP 8.4.

#### 3.7.2

 * A message the SMS service accepted counts as Successful unless a failure is reported.

#### 3.6.2

 * One price list for countries, networks and prefixes. Wallets hold money.

## Meta

 *  Version **3.11.0**
 *  Last updated **20 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [Bulk SMS](https://wordpress.org/plugins/tags/bulk-sms/)[sms](https://wordpress.org/plugins/tags/sms/)
   [sms api](https://wordpress.org/plugins/tags/sms-api/)[sms gateway](https://wordpress.org/plugins/tags/sms-gateway/)
 *  [Advanced View](https://wordpress.org/plugins/semasir-sms-portal/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/semasir-sms-portal/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/semasir-sms-portal/)