{"id":382254,"date":"2026-10-27T08:21:02","date_gmt":"2026-10-27T08:21:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ersaal-sms-gateway\/"},"modified":"2026-10-27T08:20:29","modified_gmt":"2026-10-27T08:20:29","slug":"ersaal-sms-gateway","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ersaal-sms-gateway\/","author":23581392,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.1","stable_tag":"1.3.1","tested":"7.1.4","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Ersaal SMS Gateway","header_author":"Lamah","header_description":"Official Ersaal SMS Gateway integration for WordPress & WooCommerce. Send SMS notifications, verify phone numbers via OTP, and enable 2FA login for Libyan networks.","assets_banners_color":"cde9b6","last_updated":"2026-10-27 08:20:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/getersaal.com\/","header_author_uri":"https:\/\/lamah.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.1":{"tag":"1.3.1","author":"lamahly","date":"2026-10-27 08:20:29","revision":3768017}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3768017,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3768017,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3768017,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-rtl.png":{"filename":"banner-1544x500-rtl.png","revision":3768117,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3768117,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-rtl.png":{"filename":"banner-772x250-rtl.png","revision":3768117,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3768117,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1-rtl.png":{"filename":"screenshot-1-rtl.png","revision":3768117,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3768117,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2-rtl.png":{"filename":"screenshot-2-rtl.png","revision":3768117,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3768117,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3-rtl.png":{"filename":"screenshot-3-rtl.png","revision":3768117,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3768117,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4-rtl.png":{"filename":"screenshot-4-rtl.png","revision":3768117,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3768117,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5-rtl.png":{"filename":"screenshot-5-rtl.png","revision":3768117,"resolution":"5","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3768117,"resolution":"5","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Ersaal SMS Dashboard and live delivery telemetry.","2":"WooCommerce automated SMS notification settings.","3":"Manual SMS composition with live character counter.","4":"Detailed SMS activity logs and filters.","5":"Dedicated OTP activity logs and verification records."}},"plugin_section":[],"plugin_tags":[288887,4906,9210,711,286],"plugin_category":[41,45],"plugin_contributors":[288888],"plugin_business_model":[],"class_list":["post-382254","plugin","type-plugin","status-publish","hentry","plugin_tags-ersaal","plugin_tags-notifications","plugin_tags-otp","plugin_tags-sms","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-lamahly","plugin_committers-lamahly"],"banners":{"banner":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/banner-772x250.png?rev=3768117","banner_2x":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/banner-1544x500.png?rev=3768117","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/icon.svg?rev=3768017","icon":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/icon.svg?rev=3768017","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/screenshot-1.png?rev=3768117","caption":"Ersaal SMS Dashboard and live delivery telemetry."},{"src":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/screenshot-2.png?rev=3768117","caption":"WooCommerce automated SMS notification settings."},{"src":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/screenshot-3.png?rev=3768117","caption":"Manual SMS composition with live character counter."},{"src":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/screenshot-4.png?rev=3768117","caption":"Detailed SMS activity logs and filters."},{"src":"https:\/\/ps.w.org\/ersaal-sms-gateway\/assets\/screenshot-5.png?rev=3768117","caption":"Dedicated OTP activity logs and verification records."}],"raw_content":"<!--section=description-->\n<p>Ersaal SMS Gateway allows WordPress administrators to send SMS messages directly from the WordPress admin dashboard, verify Libyan mobile phone numbers with secure One-Time Passwords (OTP), and automatically notify WooCommerce customers about their order statuses using the robust Ersaal API.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Native Admin Dashboard:<\/strong> Monitor live delivery statuses, cost estimations, and daily messaging volume.<\/li>\n<li><strong>Manual SMS:<\/strong> Send individual or targeted SMS messages with real-time GSM-7 and Unicode part estimations.<\/li>\n<li><strong>WooCommerce Automated Notifications:<\/strong> Automatically send customized SMS alerts on Order Pending, Processing, Completed, and Cancelled events.<\/li>\n<li><strong>One-Time Password (OTP) Verification:<\/strong> Optional phone verification for user profiles and Two-Factor Authentication (2FA) for WordPress logins.<\/li>\n<li><strong>Libyan Telecom Network Validation:<\/strong> Native normalization and validation for Almadar (091, 093) and Libyana (092, 094) mobile networks.<\/li>\n<li><strong>Comprehensive Logs &amp; Privacy:<\/strong> Detailed local logging with sensitive number masking, carrier telemetry, and CSV export.<\/li>\n<li><strong>Fully Localized:<\/strong> Complete Arabic and English native interfaces with full RTL and LTR support.<\/li>\n<\/ul>\n\n<h3>Third-Party Services<\/h3>\n\n<p>This plugin connects to the external Ersaal SMS Gateway API to send SMS notifications, estimate message parts, and verify mobile phone numbers via One-Time Passwords (OTP).<\/p>\n\n<ul>\n<li><strong>Service Provider:<\/strong> Ersaal SMS Gateway<\/li>\n<li><strong>Website:<\/strong> <a href=\"https:\/\/getersaal.com\/\">https:\/\/getersaal.com\/<\/a><\/li>\n<li><strong>Data Transmitted:<\/strong> Recipient mobile phone numbers, sender IDs, and notification message contents. No user passwords or WordPress administrative credentials are transmitted to the service.<\/li>\n<\/ul>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 8.1 or higher (PHP 8.2+ recommended)<\/li>\n<li>PHP <code>curl<\/code>, <code>json<\/code>, and <code>openssl<\/code> extensions<\/li>\n<li>PHP <code>mbstring<\/code> extension recommended for optimal multibyte Arabic character handling (safe fallbacks are included)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ersaal<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly through the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Navigate to <strong>Ersaal SMS -&gt; Settings<\/strong> to configure your API URL and Token.<\/li>\n<li>Test the API connection to confirm project readiness.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20ersaal%20account%3F\"><h3>Do I need an Ersaal account?<\/h3><\/dt>\n<dd><p>Yes. You need an active account and API Bearer Token from <a href=\"https:\/\/getersaal.com\/\">Ersaal<\/a>.<\/p><\/dd>\n<dt id=\"which%20libyan%20telecom%20networks%20are%20supported%3F\"><h3>Which Libyan telecom networks are supported?<\/h3><\/dt>\n<dd><p>The plugin natively validates and normalizes Libyan mobile numbers for Almadar Aljaded (091, 093) and Libyana Mobile Phone (092, 094).<\/p><\/dd>\n<dt id=\"how%20does%20woocommerce%20order%20notification%20work%3F\"><h3>How does WooCommerce order notification work?<\/h3><\/dt>\n<dd><p>Under <strong>Ersaal SMS -&gt; WooCommerce<\/strong>, enable notifications and customize templates using dynamic tags like <code>{customer_name}<\/code>, <code>{order_number}<\/code>, and <code>{order_total}<\/code>.<\/p><\/dd>\n<dt id=\"is%20otp%20verification%20mandatory%3F\"><h3>Is OTP verification mandatory?<\/h3><\/dt>\n<dd><p>No. OTP features and Login Two-Factor Authentication (2FA) are opt-in and disabled by default.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Resolved security, stability, compatibility, and build issues (#23-#32).<\/li>\n<li>Hardened HTTP\/HTTPS connection validation and API error handling.<\/li>\n<li>Enhanced UTF-8 multibyte string handling for Arabic SMS content (Str::substr, Str::length, Str::limit).<\/li>\n<li>Improved WooCommerce order SMS status transitions and carrier validation.<\/li>\n<li>Refined admin views with strict typing and WordPress standard compliance.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added automatic log retention and scheduled daily cleanup via WP-Cron with customizable retention window (#17).<\/li>\n<li>Flattened repository structure to support direct WordPress installation and clean git workflows (#13).<\/li>\n<li>Refactored dependency injection for LogRepository and Client across WooCommerce and Manual Send modules (#14, #15).<\/li>\n<li>Corrected message cost calculation, display, and currency handling for wallet (LYD) and subscription parts (#10).<\/li>\n<li>Hardened OTP Login Two-Factor Authentication flow against invalid challenge execution escape (#16).<\/li>\n<li>Enhanced Advanced Settings UI with native design tokens and comprehensive Arabic\/English translations.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Full WordPress.org plugin directory compliance.<\/li>\n<li>Hardened database queries with prepared statements.<\/li>\n<li>Enhanced RTL styling and responsive design.<\/li>\n<li>Added official GPLv2 licensing and clean distribution packaging.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added OTP initiate and verify service.<\/li>\n<li>Added optional WordPress user profile phone verification and Login 2FA.<\/li>\n<li>Added runtime migration for dedicated OTP activity logs.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with Manual Send, WooCommerce notifications, and local activity logging.<\/li>\n<\/ul>","raw_excerpt":"Send SMS notifications, verify phone numbers with OTP, and automate WooCommerce order updates via the official Ersaal SMS Gateway API.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/382254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=382254"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lamahly"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=382254"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=382254"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=382254"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=382254"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=382254"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=382254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}