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

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

Translate “Semasir SMS Portal” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by 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.