Skip to content
WordPress.org
  • Showcase
  • Plugins
  • Themes
  • Hosting
  • News
    • Learn WordPress
    • Documentation
    • Education
    • Forums
    • Developers
    • Blocks
    • Patterns
    • Photos
    • Openverse ↗︎
    • WordPress.tv ↗︎
    • About WordPress
    • Make WordPress
    • Events
    • Five for the Future
    • Enterprise
    • Gutenberg ↗︎
    • Job Board ↗︎
    • Swag Store ↗︎
  • Get WordPress
Get WordPress
WordPress.org

Plugin Directory

SMSKora – Smart & Secure SMS OTP Alerts for WordPress

  • Submit a plugin
  • My favorites
  • Log in
  • Submit a plugin
  • My favorites
  • Log in

SMSKora – Smart & Secure SMS OTP Alerts for WordPress

By Md Abul Bashar
Download
  • Details
  • Reviews
  • Installation
  • Development
Support

Description

SMSKora is a modular SMS platform for WordPress. It lets you send SMS OTP codes and SMS notifications through a range of popular SMS gateways, with zero code required for most use cases. Advanced developers get a clean PHP API, action/filter hooks, and an extensible provider registry.

SMS Providers

SMSKora ships with built-in support for the following SMS gateways:

  • Custom API — Connect any HTTP-based SMS gateway using a configurable URL template (GET or POST).
  • BulkSMSBD — Bangladeshi gateway with GET/POST support, balance checks, and sender ID configuration.
  • MimSMS — Bangladeshi gateway with OTP and general SMS support.
  • SMSNetBD — Bangladeshi gateway with GET/POST support and balance check.
  • Twilio — International gateway. Enter Account SID, Auth Token, and sender number.
  • Vonage (Nexmo) — International gateway. Enter API Key, API Secret, and brand name.

Additional providers can be registered using the smskora_register_providers filter hook.

Features

WordPress Login OTP
Add two-factor SMS verification to the default WordPress login form. After username and password are accepted, an OTP is sent to the user’s saved phone number. Supports Password + OTP mode. Users without a saved phone number are allowed to log in normally and are reminded to add a phone number from their profile page.

  • Configurable OTP mode: Password + OTP, Phone + OTP, or Email/Username + OTP.
  • “Remember verified device” option with configurable expiry (days).
  • Restrict OTP enforcement to specific user roles (e.g. administrator, editor, shop_manager).
  • Resend OTP button with AJAX support.
  • Non-JS fallback form.

WordPress Registration OTP
Verify the phone number entered during WordPress default registration before the account is created.

  • Customizable phone field label.
  • Optional phone number requirement.
  • Block duplicate phone numbers across accounts.
  • Auto-login after verification option.
  • Configurable user meta key for storing the phone number.

WooCommerce Order SMS Notifications
Send SMS notifications to both the store admin and customers when WooCommerce order events occur.

  • Admin SMS on new order (configurable admin phone number).
  • Customer SMS on: Processing, Completed, Cancelled, Failed, and Refunded order statuses.
  • Each event can be toggled individually.
  • Message templates use dynamic variables (order number, total, customer name, etc.).

Custom SMS Notification
Trigger one-off SMS messages from the admin Tools page or from your own code.

  • Restrict the Tools sender to administrators only.
  • Configurable default log context.

Developer API
Enable PHP helper functions, action hooks, and filter hooks for use in themes, plugins, and custom integrations.

  • Global helper functions always available.
  • REST API endpoint placeholder (disabled by default, enable from Features screen).
  • All developer sends are logged with configurable context.

Message Templates

Every SMS notification uses a customizable template. Templates support the following dynamic variables:

  • {otp} — The generated OTP code.
  • {order_id} — WooCommerce order number.
  • {order_total} — Order total with currency.
  • {customer_name} — Customer billing first name.
  • {site_name} — Your WordPress site name.
  • {user_name} — Display name of the user.

Developer API

PHP Helper Functions

smskora_send_sms( $message, $number, $args ) — Send a plain SMS.
smskora_send_otp( $number, $context, $args ) — Generate and send an OTP.
smskora_verify_otp( $number, $otp, $context ) — Verify a submitted OTP code.
smskora_get_option( $key, $default ) — Read a plugin setting.

Static Class API

\SMSKora\SMSKora::send_sms( $message, $number, $args )
\SMSKora\SMSKora::send_otp( $number, $context, $args )
\SMSKora\SMSKora::verify_otp( $number, $otp, $context )

Action Hooks

smskora_before_send_sms — Fires before an SMS is dispatched.
smskora_after_send_sms — Fires after an SMS is dispatched.
smskora_otp_sent — Fires after an OTP is sent successfully.
smskora_otp_verified — Fires after an OTP is verified successfully.
smskora_feature_registered — Fires when a feature is registered.

Filter Hooks

smskora_register_providers — Register custom SMS provider classes.
smskora_sms_message — Filter the SMS message text before sending.
smskora_otp_length — Filter the OTP code length.
smskora_otp_expiry — Filter the OTP expiry time in minutes.

OTP Security

  • OTP codes are hashed with password_hash() before being stored.
  • Codes are single-use and expire after a configurable time window.
  • Attempt limits are enforced to prevent brute-force guessing.
  • Expired OTPs are automatically cleaned up via WP-Cron.

Privacy & Data

SMSKora stores SMS log records (recipient, message status, provider, context) and OTP records (hashed OTP, phone, expiry) in custom database tables. No data is sent to third-party servers by this plugin. Data is sent only to the SMS gateway you configure. All stored data is deleted when the “Delete Data on Uninstall” setting is enabled.

External services

SMSKora connects to external SMS gateway APIs only when a site administrator configures an SMS provider and the plugin sends an SMS message, OTP message, order notification, login verification message, registration verification message, or balance-check request.

The plugin does not send SMS data to servers controlled by the SMSKora plugin author. SMS data is sent only to the SMS gateway provider selected and configured by the site administrator.

For configured providers, the following data may be sent to the selected provider:

  • Recipient phone number.
  • SMS message body.
  • Sender ID or sender number, if configured.
  • API key, access token, username, password, or other gateway credentials required by the provider.
  • Request metadata required by WordPress and the remote API, such as the site server IP address and HTTP request headers.
  • For balance-check requests, the plugin sends the configured API credentials to the selected provider to retrieve the account balance.

No external SMS gateway request is made unless the administrator configures a provider and a plugin feature triggers an SMS send or balance check.

BulkSMSBD

This plugin can connect to the BulkSMSBD SMS gateway to send SMS messages and check account balance.

API domains used by this plugin:

  • http://bulksmsbd.net/api/smsapi
  • http://bulksmsbd.net/api/getBalanceApi

Data sent:

  • Recipient phone number and SMS message body when sending SMS.
  • API key, sender ID, and other configured gateway credentials required by BulkSMSBD.
  • API credentials when checking account balance.

Service website: https://bulksmsbd.com/
Terms of Service: https://bulksmsbd.com/terms-and-conditions.php
Privacy Policy: Not publicly listed by the provider at the time of writing. Users should contact BulkSMSBD through https://bulksmsbd.com/contact for privacy information before enabling this provider.

MimSMS

This plugin can connect to the MimSMS SMS gateway to send SMS messages and check account balance.

API domains used by this plugin:

  • https://api.mimsms.com/api/SmsSending/Send
  • https://api.mimsms.com/api/SmsSending/SMS
  • https://api.mimsms.com/api/SmsSending/balanceCheck

Data sent:

  • Recipient phone number and SMS message body when sending SMS.
  • API key, sender ID, username, password, or other configured gateway credentials required by MimSMS.
  • API credentials when checking account balance.

Service website: https://mimsms.com/
Terms of Service: https://www.mimsms.com/terms-of-service
Privacy Policy: https://www.mimsms.com/privacy-policy

SMSNet BD / sms.bd

This plugin can connect to the SMSNet BD / sms.bd SMS gateway to send SMS messages and check account balance.

API domains used by this plugin:

  • https://api.sms.net.bd/sendsms
  • https://api.sms.net.bd/user/balance/

Data sent:

  • Recipient phone number and SMS message body when sending SMS.
  • API key, sender ID, and other configured gateway credentials required by SMSNet BD / sms.bd.
  • API credentials when checking account balance.

Service website: https://sms.bd/
Terms of Service: https://sms.bd/Terms_Condition/
Privacy Policy: Not publicly listed by the provider at the time of writing. Users should contact SMSNet BD / sms.bd through https://sms.bd/Contact/ for privacy information before enabling this provider.

Custom API provider

This plugin includes a Custom API provider that allows the site administrator to configure their own SMS gateway endpoint.

External service used:

  • The custom endpoint URL entered by the site administrator in the plugin settings.

Data sent:

  • Recipient phone number and SMS message body when sending SMS.
  • Any custom API credentials, headers, parameters, sender ID, or authentication values configured by the administrator.
  • The destination URL and provider are fully controlled by the site administrator.

Because the Custom API provider can connect to any administrator-configured endpoint, site administrators are responsible for reviewing that provider’s terms of service and privacy policy before enabling it.

Twilio

This plugin may include Twilio as an SMS provider option. If configured by the site administrator, it can connect to Twilio to send SMS messages.

Data sent:

  • Recipient phone number and SMS message body when sending SMS.
  • Twilio Account SID, Auth Token, sender number, and other configured Twilio credentials.

Service website: https://www.twilio.com/
Terms of Service: https://www.twilio.com/en-us/legal/tos
Privacy Policy: https://www.twilio.com/en-us/legal/privacy

Vonage / Nexmo

This plugin may include Vonage as an SMS provider option. If configured by the site administrator, it can connect to Vonage to send SMS messages.

Data sent:

  • Recipient phone number and SMS message body when sending SMS.
  • Vonage API key, API secret, sender number/name, and other configured Vonage credentials.

Service website: https://www.vonage.com/
Terms of Service: https://www.vonage.com/legal/
Privacy Policy: https://www.vonage.com/legal/privacy-policy/

Screenshots

Dashboard — live provider status, SMS statistics, and quick setup checklist.
Dashboard — live provider status, SMS statistics, and quick setup checklist.
Provider settings — choose your gateway and enter credentials.
Provider settings — choose your gateway and enter credentials.
Provider Settings Fields
Provider Settings Fields
Features — toggle Login OTP, Registration OTP, WooCommerce, Custom Notification, and Developer API.
Features — toggle Login OTP, Registration OTP, WooCommerce, Custom Notification, and Developer API.
Features — toggle Login OTP, Registration OTP, WooCommerce, Custom Notification, and Developer API.
Features — toggle Login OTP, Registration OTP, WooCommerce, Custom Notification, and Developer API.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Message Templates — edit message content for every SMS event.
Logs — searchable, filterable delivery log with status, provider, and context.
Logs — searchable, filterable delivery log with status, provider, and context.
Tools — send a test SMS or check provider balance from the admin.
Tools — send a test SMS or check provider balance from the admin.
Settings
Settings

Installation

  1. Upload the smskora folder to /wp-content/plugins/ or install the ZIP from Plugins > Add New.
  2. Activate SMSKora.
  3. Go to SMSKora > Providers and choose your SMS gateway. Enter your credentials and click Test SMS to verify the connection.
  4. Go to SMSKora > Features and enable the modules you need (Login OTP, Registration OTP, WooCommerce Notifications, etc.).
  5. Go to SMSKora > Templates and customize the message text for each event.
  6. Send a test SMS any time from SMSKora > Tools.

FAQ

Does SMSKora include SMS provider API keys?

No. You must supply your own credentials (API key, username/password, or auth token) from your chosen SMS provider account.

Which SMS providers are supported out of the box?

Custom API, BulkSMSBD, MimSMS, SMSNetBD, Twilio, and Vonage. More can be added via the smskora_register_providers filter.

Can I add my own custom SMS provider?

Yes. Implement the SMSKora\Providers\ProviderInterface and register your class using the smskora_register_providers filter hook.

How does Login OTP work?

After a user enters a valid username and password, SMSKora checks whether their account has a saved phone number. If it does, an OTP is sent to that number and they must enter it before they are logged in. Users without a saved phone number bypass OTP and are shown a reminder to add one.

Does it work with WooCommerce?

Yes. Enable the WooCommerce Order Notifications feature to send SMS on new orders, processing, completed, cancelled, failed, and refunded status events.

Where do I find the phone number field for user profiles?

SMSKora adds a Phone Number field to the WordPress user profile page. Users can add or update their number there. Administrators can also edit any user’s number from the Edit User screen.

Are OTP codes stored securely?

Yes. All OTP codes are hashed using password_hash() before being saved. The plain code is never stored.

Does the plugin delete my data on uninstall?

Only when the Delete Data on Uninstall option is enabled under SMSKora > Settings. When enabled, uninstalling the plugin will remove all plugin options and drop the custom database tables.

Can I use SMSKora from PHP code in my theme or another plugin?

Yes. Use smskora_send_sms(), smskora_send_otp(), and smskora_verify_otp() helper functions, or call \SMSKora\SMSKora::send_sms() directly.

Does SMSKora collect any data?

SMSKora does not collect or transmit data to any servers controlled by the plugin author. Your SMS data is sent only to the gateway provider you configure.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“SMSKora – Smart & Secure SMS OTP Alerts for WordPress” is open source software. The following people have contributed to this plugin.

Contributors
  • Md Abul Bashar

Translate “SMSKora – Smart & Secure SMS OTP Alerts for WordPress” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.0

  • Initial release.
  • Custom API, BulkSMSBD, MimSMS, SMSNetBD, Twilio, Vonage providers.
  • WordPress Login OTP with non-JS fallback and AJAX resend.
  • WordPress Registration OTP with duplicate phone blocking.
  • WooCommerce Order SMS Notifications (6 order events).
  • Custom SMS Notification feature with admin Tools sender.
  • Developer API feature with PHP helper functions and hooks.
  • Message template system with dynamic variables.
  • SMS delivery log with filtering and one-click clear.
  • OTP log with hashed storage and automatic expiry cleanup.
  • Provider connection status indicator on the dashboard.

Meta

  • Version 1.0.0
  • Last updated 4 hours ago
  • Active installations Fewer than 10
  • WordPress version 5.8 or higher
  • Tested up to 7.0
  • PHP version 7.4 or higher
  • Tags
    login otpotpsmssms notificationswoocommerce
  • Advanced View

Ratings

No reviews have been submitted yet.

Your review

See all reviews

Contributors

  • Md Abul Bashar

Support

Got something to say? Need help?

View support forum

  • About
  • News
  • Hosting
  • Privacy
  • Showcase
  • Themes
  • Plugins
  • Patterns
  • Learn
  • Documentation
  • Developers
  • WordPress.tv ↗
  • Get Involved
  • Events
  • Donate ↗
  • Five for the Future
  • WordPress.com ↗
  • Matt ↗
  • bbPress ↗
  • BuddyPress ↗
WordPress.org
WordPress.org
  • Visit our X (formerly Twitter) account
  • Visit our Bluesky account
  • Visit our Mastodon account
  • Visit our Threads account
  • Visit our Facebook page
  • Visit our Instagram account
  • Visit our LinkedIn account
  • Visit our TikTok account
  • Visit our YouTube channel
  • Visit our Tumblr account
Code is Poetry
The WordPress® trademark is the intellectual property of the WordPress Foundation.