{"id":288007,"date":"2026-03-13T19:08:24","date_gmt":"2026-03-13T19:08:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/g-online-sms\/"},"modified":"2026-04-05T00:04:01","modified_gmt":"2026-04-05T00:04:01","slug":"g-online-sms","status":"publish","type":"plugin","link":"https:\/\/frp.wordpress.org\/plugins\/g-online-sms\/","author":23210013,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.2.2","stable_tag":"2.2.2","tested":"6.9.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"G Online SMS","header_author":"G Online Sites","header_description":"Send automated and bulk SMS notifications from WordPress. Supports WooCommerce, Contact Form 7, Gravity Forms, user registration and more.","assets_banners_color":"3099cd","last_updated":"2026-04-05 00:04:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/sms.gonlinesites.com\/app","header_author_uri":"https:\/\/www.gonlinesites.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":256,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"gonlinesites","date":"2026-03-13 19:17:08"},"2.2.0":{"tag":"2.2.0","author":"gonlinesites","date":"2026-04-04 17:22:07"},"2.2.1":{"tag":"2.2.1","author":"gonlinesites","date":"2026-04-04 23:17:05"},"2.2.2":{"tag":"2.2.2","author":"gonlinesites","date":"2026-04-05 00:04:01"}},"upgrade_notice":{"2.2.2":"<p>Major feature update adding OTP\/2FA SMS verification for login, checkout, registration and phone changes. All existing settings are preserved. Enable OTP features individually under G Online SMS \u2192 OTP \/ 2FA.<\/p>","2.0.0":"<p>Major security and feature update. All settings are preserved. The SMS log database table will be created automatically on upgrade.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3482244,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3482244,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3482244,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3482368,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0","2.2.0","2.2.1","2.2.2"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4906,9210,711,1909,286],"plugin_category":[41,45],"plugin_contributors":[257713],"plugin_business_model":[],"class_list":["post-288007","plugin","type-plugin","status-publish","hentry","plugin_tags-notifications","plugin_tags-otp","plugin_tags-sms","plugin_tags-two-factor-authentication","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-gonlinesites","plugin_committers-gonlinesites"],"banners":{"banner":"https:\/\/ps.w.org\/g-online-sms\/assets\/banner-772x250.png?rev=3482368","banner_2x":"https:\/\/ps.w.org\/g-online-sms\/assets\/banner-1544x500.png?rev=3482244","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/g-online-sms\/assets\/icon-128x128.png?rev=3482244","icon_2x":"https:\/\/ps.w.org\/g-online-sms\/assets\/icon-256x256.png?rev=3482244","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>G Online SMS<\/strong> connects your WordPress site to the <a href=\"https:\/\/sms.gonlinesites.com\/app\">G Online SMS gateway<\/a> so you can send SMS messages automatically based on events in WordPress, or manually to any phone number.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>OTP \/ Two-Factor Authentication:<\/strong>\n\n<ul>\n<li>SMS verification code on WordPress login (2FA after password check).<\/li>\n<li>Phone number verification at WooCommerce checkout before order placement.<\/li>\n<li>Phone number confirmation on user registration.<\/li>\n<li>Verify new phone number when changed in WooCommerce My Account.<\/li>\n<li>Configurable code length (4\u20138 digits) and expiry (1\u201330 minutes).<\/li>\n<li>Maximum 3 failed attempts before code is invalidated.<\/li>\n<\/ul><\/li>\n<li><strong>Send single or bulk SMS<\/strong> directly from the WordPress admin.<\/li>\n<li><strong>Bulk SMS by user role<\/strong> \u2014 target all subscribers, customers, or any custom role.<\/li>\n<li><strong>User lifecycle notifications:<\/strong>\n\n<ul>\n<li>Notify admin when a new user registers.<\/li>\n<li>Send a welcome SMS to every new user.<\/li>\n<li>Send a farewell SMS when an account is deleted.<\/li>\n<li>Optional login-alert SMS to admin.<\/li>\n<\/ul><\/li>\n<li><strong>WooCommerce integration:<\/strong>\n\n<ul>\n<li>Customise SMS messages per order status (pending, processing, completed, refunded, etc.).<\/li>\n<li>Notify admin when a new order is placed.<\/li>\n<li>Supports rich order placeholders: <code>{order_id}<\/code>, <code>{order_total}<\/code>, <code>{customer_name}<\/code>, <code>{order_items}<\/code>, and many more.<\/li>\n<\/ul><\/li>\n<li><strong>Contact Form 7 integration:<\/strong>\n\n<ul>\n<li>Send SMS to admin AND the form submitter simultaneously on submission.<\/li>\n<li>Per-form overrides via the Additional Settings tab.<\/li>\n<\/ul><\/li>\n<li><strong>Gravity Forms integration:<\/strong>\n\n<ul>\n<li>Send SMS to admin AND the submitter when an entry is submitted.<\/li>\n<li>Use <code>{field_id:N}<\/code> or <code>{Field Label}<\/code> placeholders.<\/li>\n<\/ul><\/li>\n<li><strong>SMS Log<\/strong> \u2014 every sent and failed message is recorded with status, recipient and trigger source.<\/li>\n<li><strong>Test SMS button<\/strong> \u2014 verify your API key right from the settings page.<\/li>\n<li>Fully translatable (<code>.pot<\/code> file included).<\/li>\n<li>No Bootstrap or external CSS loaded site-wide \u2014 lightweight admin-only assets.<\/li>\n<\/ul>\n\n<h4>Supported Placeholders (WooCommerce)<\/h4>\n\n<pre><code>{order_id} `{order_number}` `{order_total}` `{order_status}` `{order_date}` `{customer_name}` `{customer_first_name}` `{customer_last_name}` `{customer_email}` `{customer_phone}` `{billing_address}` `{shipping_address}` `{payment_method}` `{shipping_method}` `{order_items}` `{subtotal}` `{tax_amount}` `{currency}` `{coupon_code}` `{site_name}` `{site_url}`\n<\/code><\/pre>\n\n<h4>Supported Placeholders (User notifications)<\/h4>\n\n<pre><code>{first_name} `{last_name}` `{display_name}` `{user_email}` `{user_login}` `{site_name}` `{site_url}`\n<\/code><\/pre>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the <strong>G Online SMS gateway<\/strong> to send SMS messages and check account balance. This is a third-party service operated by G Online Sites.<\/p>\n\n<h4>What data is sent and when<\/h4>\n\n<ul>\n<li><strong>When sending an SMS<\/strong> \u2014 the recipient's phone number, the message text, your Sender ID, and your API key are transmitted to the gateway. This happens every time an SMS is triggered (user registration, WooCommerce order status change, form submission, manual send, etc.).<\/li>\n<li><strong>When checking balance<\/strong> \u2014 only your API key is sent. This happens each time the plugin dashboard page is loaded.<\/li>\n<\/ul>\n\n<h4>No data is sent without your action<\/h4>\n\n<p>No data is ever transmitted unless you have entered a valid API key in the plugin settings. The plugin makes no external calls on the front end of your website.<\/p>\n\n<h4>Service provider details<\/h4>\n\n<ul>\n<li><strong>Service:<\/strong> G Online SMS \u2014 bulk SMS messaging gateway for Ghana and beyond.<\/li>\n<li><strong>Provider:<\/strong> G Online Sites<\/li>\n<li><strong>Gateway URL:<\/strong> https:\/\/sms.gonlinesites.com\/app<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/sms.gonlinesites.com\/app\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/sms.gonlinesites.com\/app\/privacy<\/li>\n<\/ul>\n\n<p>By using this plugin you agree to the terms of service and privacy policy of the G Online SMS gateway listed above.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>g-online-sms<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly via <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>G Online SMS \u2192 Settings<\/strong> and enter your API Key, Sender ID, and Admin Phone Number.\n(Obtain your API key at <a href=\"https:\/\/sms.gonlinesites.com\/app\">sms.gonlinesites.com<\/a>.)<\/li>\n<li>Use the <strong>Send Test SMS<\/strong> button to verify everything is working.<\/li>\n<li>Configure WooCommerce, CF7, or Gravity Forms messages in their respective sub-pages.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20enable%20sms%20login%202fa%3F\"><h3>How do I enable SMS login 2FA?<\/h3><\/dt>\n<dd><p>Go to <strong>G Online SMS \u2192 OTP \/ 2FA<\/strong> and enable \"Login 2FA\". Users with a phone number stored in their profile (billing phone or phone meta) will be required to enter an SMS code after their password. Users without a stored phone number will log in normally.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20woocommerce%20checkout%20phone%20verification%3F\"><h3>How do I set up WooCommerce checkout phone verification?<\/h3><\/dt>\n<dd><p>Go to <strong>G Online SMS \u2192 OTP \/ 2FA<\/strong> and enable \"WooCommerce Checkout\". A \"Send Verification Code\" button will appear on the checkout page near the billing phone field. Customers must verify their number before placing an order.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20user%20fails%20the%20otp%20code%203%20times%3F\"><h3>What happens if a user fails the OTP code 3 times?<\/h3><\/dt>\n<dd><p>The code is invalidated after 3 failed attempts. The user must request a new code using the \"Resend code\" link.<\/p><\/dd>\n<dt id=\"does%20otp%20work%20for%20users%20without%20a%20phone%20number%3F\"><h3>Does OTP work for users without a phone number?<\/h3><\/dt>\n<dd><p>For login 2FA \u2014 users without a stored phone number will log in normally without being prompted for a code. For checkout and registration, a phone number is required for those features to work.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Register or log in at <a href=\"https:\/\/sms.gonlinesites.com\/app\">sms.gonlinesites.com\/app<\/a> and copy your API key from the dashboard.<\/p><\/dd>\n<dt id=\"how%20are%20phone%20numbers%20stored%20for%20users%3F\"><h3>How are phone numbers stored for users?<\/h3><\/dt>\n<dd><p>The plugin checks for a <code>billing_phone<\/code> user meta (set by WooCommerce), then a <code>phone<\/code> meta. We recommend using WooCommerce's billing phone field for best results.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20without%20woocommerce%3F\"><h3>Does the plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce, Contact Form 7, and Gravity Forms integrations are loaded automatically only when those plugins are active. OTP login and registration verification work without WooCommerce.<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20contact%20form%207%20per-form%20messages%3F\"><h3>How do I configure Contact Form 7 per-form messages?<\/h3><\/dt>\n<dd><p>In the CF7 form editor go to the <strong>Additional Settings<\/strong> tab and add:<\/p>\n\n<pre><code>g_online_sms_message: New enquiry from {your-name}\ng_online_sms_user_message: Hi {your-name}, we received your message!\ng_online_sms_to_user: your-phone\n<\/code><\/pre>\n\n<p>Both admin and user messages fire simultaneously on submission.<\/p><\/dd>\n<dt id=\"is%20my%20api%20key%20stored%20securely%3F\"><h3>Is my API key stored securely?<\/h3><\/dt>\n<dd><p>Yes \u2014 your API key is stored in the WordPress options table (the same location as all other plugin settings) and is only transmitted to the SMS gateway when sending messages or checking your balance.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Fixed fatal error caused by missing OTP class file on plugin activation \u2014 added safe file_exists check.<\/li>\n<li>Added OTP \/ Two-Factor Authentication system (new G Online SMS \u2192 OTP \/ 2FA settings page).<\/li>\n<li>Login 2FA \u2014 SMS verification code required after password for users with a stored phone number.<\/li>\n<li>WooCommerce checkout phone verification \u2014 customers must verify their billing phone before placing an order.<\/li>\n<li>User registration phone verification \u2014 phone number field added to registration form, verified number saved to profile.<\/li>\n<li>WooCommerce My Account phone change verification \u2014 OTP required when billing phone is changed.<\/li>\n<li>Configurable code length (4\u20138 digits), expiry (1\u201330 minutes), and per-context SMS message templates.<\/li>\n<li>Codes are locked after 3 failed attempts with a resend option.<\/li>\n<li>OTP codes stored in WordPress transients \u2014 no extra database table required.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added simultaneous admin + user\/submitter SMS for Contact Form 7.<\/li>\n<li>Added global default user message template for CF7 with per-form override via Additional Settings tab.<\/li>\n<li>Added simultaneous admin + user\/submitter SMS for Gravity Forms.<\/li>\n<li>Added global default user message template for GF with per-form phone field ID override.<\/li>\n<li>New settings fields: CF7 User Phone Field, CF7 Default User Message, GF User Phone Field ID, GF Default User Message.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete rewrite with object-oriented, class-based architecture.<\/li>\n<li>Added SMS log with pagination and clear-log action.<\/li>\n<li>Added per-status admin SMS notifications for WooCommerce.<\/li>\n<li>Added Contact Form 7 integration with per-form overrides.<\/li>\n<li>Added Gravity Forms integration.<\/li>\n<li>Added login-alert SMS to admin.<\/li>\n<li>Added \"Send Test SMS\" button on settings page.<\/li>\n<li>Full nonce verification on all form submissions.<\/li>\n<li>Proper <code>esc_*<\/code> output escaping throughout.<\/li>\n<li>Removed Bootstrap CDN dependency (replaced with lightweight admin.css).<\/li>\n<li>Added <code>uninstall.php<\/code> to clean up options and DB table on plugin deletion.<\/li>\n<li>Translatable \u2014 <code>.pot<\/code> file included.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Send automated SMS notifications from WordPress \u2014 OTP\/2FA, WooCommerce orders, Contact Form 7, Gravity Forms and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/288007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=288007"}],"author":[{"embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gonlinesites"}],"wp:attachment":[{"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=288007"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=288007"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=288007"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=288007"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=288007"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/frp.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=288007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}