{"id":391130,"date":"2026-11-02T02:14:31","date_gmt":"2026-11-02T02:14:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smsgely-order-sms-notification-login-otp-for-woocommerce\/"},"modified":"2026-11-02T02:33:54","modified_gmt":"2026-11-02T02:33:54","slug":"smsgely-order-sms-otp","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/smsgely-order-sms-otp\/","author":23394855,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"SMSGELY \u2013 Order SMS Notification & Login OTP For WooCommerce","header_author":"Naimur Rahman Nahid","header_description":"Send WooCommerce order notifications by SMS and let customers register and log in with a mobile one-time password, using your SMSGELY account.","assets_banners_color":"1e3363","last_updated":"2026-11-02 02:33:54","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/naimurrahmannahid","header_plugin_uri":"https:\/\/smsgely.com\/integrations","header_author_uri":"https:\/\/naimurrahmannahid.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":143,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"naimurrahmannahid","date":"2026-11-02 02:33:54","revision":3778842}},"upgrade_notice":{"1.0.2":"<p>Small admin-notice and documentation update. No database changes; your settings are kept.<\/p>","1.0.1":"<p>The &quot;Powered by SMSGELY&quot; line is now off by default; existing choices are kept.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3778834,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3778834,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3778834,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3778834,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3778834,"resolution":"1","location":"assets","locale":"","width":1440,"height":1000},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3778834,"resolution":"10","location":"assets","locale":"","width":780,"height":1688},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3778834,"resolution":"2","location":"assets","locale":"","width":1440,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3778834,"resolution":"3","location":"assets","locale":"","width":1440,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3778834,"resolution":"4","location":"assets","locale":"","width":1440,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3778834,"resolution":"5","location":"assets","locale":"","width":440,"height":588},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3778834,"resolution":"6","location":"assets","locale":"","width":440,"height":625},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3778834,"resolution":"7","location":"assets","locale":"","width":440,"height":629},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3778834,"resolution":"8","location":"assets","locale":"","width":1440,"height":1000},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3778834,"resolution":"9","location":"assets","locale":"","width":1440,"height":1000}},"screenshots":{"1":"Dashboard with active features, SMS usage, setup health and shortcuts.","2":"SMSGELY connection: API key, SMS type and Sender ID.","3":"Order SMS events and recipients.","4":"Template editor with English and Bangla messages, placeholders, preview and SMS part count.","5":"OTP login on the WooCommerce My Account page.","6":"Entering the verification code.","7":"Completing registration after verifying the phone number.","8":"SMS logs with filters.","9":"Security: bot protection, rate limits and spending limits.","10":"Mobile layout of the OTP login form."}},"plugin_section":[],"plugin_tags":[570,155171,43415,1201,66582],"plugin_category":[],"plugin_contributors":[250731],"plugin_business_model":[],"class_list":["post-391130","plugin","type-plugin","status-publish","hentry","plugin_tags-bangladesh","plugin_tags-otp-login","plugin_tags-phone-verification","plugin_tags-sms-notifications","plugin_tags-woocommerce-sms","plugin_contributors-naimurrahmannahid","plugin_committers-naimurrahmannahid"],"banners":{"banner":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/banner-772x250.png?rev=3778834","banner_2x":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/banner-1544x500.png?rev=3778834","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/icon-128x128.png?rev=3778834","icon_2x":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/icon-256x256.png?rev=3778834","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-1.png?rev=3778834","caption":"Dashboard with active features, SMS usage, setup health and shortcuts."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-2.png?rev=3778834","caption":"SMSGELY connection: API key, SMS type and Sender ID."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-3.png?rev=3778834","caption":"Order SMS events and recipients."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-4.png?rev=3778834","caption":"Template editor with English and Bangla messages, placeholders, preview and SMS part count."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-5.png?rev=3778834","caption":"OTP login on the WooCommerce My Account page."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-6.png?rev=3778834","caption":"Entering the verification code."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-7.png?rev=3778834","caption":"Completing registration after verifying the phone number."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-8.png?rev=3778834","caption":"SMS logs with filters."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-9.png?rev=3778834","caption":"Security: bot protection, rate limits and spending limits."},{"src":"https:\/\/ps.w.org\/smsgely-order-sms-otp\/assets\/screenshot-10.png?rev=3778834","caption":"Mobile layout of the OTP login form."}],"raw_content":"<!--section=description-->\n<p><strong>SMSGELY for WooCommerce<\/strong> connects your store to <a href=\"https:\/\/smsgely.com\">SMSGELY<\/a>, a business SMS service and Bangladesh SMS gateway. It sends WooCommerce SMS notifications when an order changes status, and lets customers log in, register and verify their phone number with a one-time password (OTP) sent by SMS.<\/p>\n\n<ul>\n<li><strong>WooCommerce order SMS notifications<\/strong> \u2014 your customers (and, if you like, your team) get an SMS when an order is placed, processing, on hold, completed, cancelled, failed or refunded.<\/li>\n<li><strong>OTP login and registration<\/strong> \u2014 customers sign in or create an account with their mobile number and a one-time code, on the My Account page or at checkout.<\/li>\n<li><strong>Phone verification<\/strong> \u2014 a new mobile number is saved only after the customer confirms it with a code.<\/li>\n<\/ul>\n\n<p>Every message is sent through the SMSGELY SMS API using your own SMSGELY account. Everything is set up from one <strong>SMSGELY<\/strong> menu in your WordPress admin. No coding, shortcodes or theme changes are needed.<\/p>\n\n<p>The plugin is designed for Bangladeshi mobile numbers and supports English and Bangla SMS. <code>01712345678<\/code>, <code>+8801712345678<\/code> and <code>8801712345678<\/code> are all understood as the same number.<\/p>\n\n<p>This plugin is the SMSGELY integration for WooCommerce, published by the team behind SMSGELY. It needs an SMSGELY account to send messages. It is not part of WordPress or WooCommerce, and it is not affiliated with or endorsed by WordPress.org, WooCommerce or Automattic.<\/p>\n\n<p>The plugin adds no credit, link or logo to your store. An optional \"Powered by SMSGELY\" line under the OTP login form appears only if you turn it on in <strong>SMSGELY \u2192 Settings<\/strong>.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>WooCommerce order SMS for seven order events, each with its own on\/off switch<\/li>\n<li>Send to the customer, up to five admin numbers, or both<\/li>\n<li>OTP login and OTP registration on My Account, the classic checkout and the WooCommerce Checkout Block<\/li>\n<li>Phone number verification in <strong>My Account \u2192 Account details<\/strong><\/li>\n<li>English and Bangla SMS templates with placeholders and a live preview<\/li>\n<li>Character count and SMS part estimate while you type<\/li>\n<li>Background sending with WooCommerce's Action Scheduler<\/li>\n<li>Duplicate-send protection and safe automatic retries<\/li>\n<li>SMS logs with filters, one-click retry and delivery status<\/li>\n<li>Rate limits per phone number and IP address<\/li>\n<li>Optional CAPTCHA: Cloudflare Turnstile, Google reCAPTCHA or a built-in math question, plus a honeypot field<\/li>\n<li>Daily and monthly SMS limits to protect your SMSGELY wallet<\/li>\n<li>Encrypted storage of the API key and CAPTCHA secret keys<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS)<\/li>\n<li>Works with WordPress personal data export and erase<\/li>\n<li>Translation-ready<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p><strong>WooCommerce SMS notifications<\/strong><\/p>\n\n<ol>\n<li>You connect your SMSGELY account in <strong>SMSGELY \u2192 Connection<\/strong> with an API key from your SMSGELY dashboard.<\/li>\n<li>You choose which order events send an SMS, and to whom.<\/li>\n<li>When an order reaches one of those statuses, the plugin queues the message in the background.<\/li>\n<li>The plugin sends the message to the SMSGELY SMS API over HTTPS.<\/li>\n<li>SMSGELY delivers the SMS and bills your SMSGELY wallet.<\/li>\n<\/ol>\n\n<p><strong>OTP login, registration and phone verification<\/strong><\/p>\n\n<ol>\n<li>The customer enters their mobile number on the login, registration or checkout form.<\/li>\n<li>The plugin asks SMSGELY to send a one-time code to that number.<\/li>\n<li>The customer types the code into the form.<\/li>\n<li>Your server checks the code. The customer is logged in, or continues to a short registration form if the number is new.<\/li>\n<\/ol>\n\n<p>The plugin does not include an SMS gateway or SMS credit of its own. SMSGELY is the external service that sends every message.<\/p>\n\n<h4>Choose the features you need<\/h4>\n\n<p>In <strong>SMSGELY \u2192 Settings \u2192 Choose Your SMSGELY Features<\/strong>, pick one of:<\/p>\n\n<ul>\n<li><strong>Login &amp; Registration OTP<\/strong> \u2014 phone login, registration and phone verification only.<\/li>\n<li><strong>WooCommerce Order SMS<\/strong> \u2014 order status SMS only. Your store keeps the normal WooCommerce login.<\/li>\n<li><strong>Both<\/strong> \u2014 everything (the default).<\/li>\n<\/ul>\n\n<p>A feature you switch off is not loaded at all: it adds nothing to your store pages and sends no SMS. Switching never deletes settings, templates or logs, so you can switch back at any time.<\/p>\n\n<h4>WooCommerce order SMS notifications<\/h4>\n\n<ul>\n<li>Turn each order event on or off.<\/li>\n<li>Choose who receives each message: the customer, up to five admin numbers, or both.<\/li>\n<li>Messages are sent in the background with WooCommerce's Action Scheduler, so checkout is not slowed down.<\/li>\n<li>A failed SMS never changes or blocks the order. The result is added as a private order note with the number masked (you can turn this off).<\/li>\n<li>Works for registered customers and guest orders; the billing phone number is used.<\/li>\n<\/ul>\n\n<p>Supported order events:<\/p>\n\n<ul>\n<li>New order (when the customer places the order)<\/li>\n<li>Processing<\/li>\n<li>On hold<\/li>\n<li>Completed<\/li>\n<li>Cancelled<\/li>\n<li>Failed<\/li>\n<li>Refunded<\/li>\n<\/ul>\n\n<p>\"New order\" and \"Completed\" are on by default. \"Processing\" is off by default, because most paid orders trigger both \"New order\" and \"Processing\".<\/p>\n\n<h4>OTP login and registration for WooCommerce<\/h4>\n\n<ul>\n<li>Works inside the WooCommerce My Account page, the classic checkout and the WooCommerce Checkout Block. Logging in at checkout keeps the cart.<\/li>\n<li>Choose the login screen: OTP with a \"Continue with password\" option (default), the normal WooCommerce form with an OTP option, or OTP only.<\/li>\n<li>Codes have 6 digits and expire after 5 minutes by default; you can change both.<\/li>\n<li>Existing customers are found by their verified number or their WooCommerce billing phone, so nobody gets a second account. <strong>Tools \u2192 Link existing customers<\/strong> prepares all existing accounts at once.<\/li>\n<li>New numbers continue to a short registration form. You decide whether email and password are required, optional or hidden.<\/li>\n<li>Existing passwords are never removed, and administrators and shop managers always log in with their password.<\/li>\n<\/ul>\n\n<h4>Phone number verification<\/h4>\n\n<p>Customers can add or change their mobile number in <strong>My Account \u2192 Account details<\/strong>. A new number is saved only after it is confirmed with a code, and the verified number is also used as the WooCommerce billing phone.<\/p>\n\n<h4>English and Bangla SMS templates<\/h4>\n\n<p>Every message has an English and a Bangla template. Choose the SMS language once; edit the text with a live preview and insert placeholders with a click:<\/p>\n\n<ul>\n<li>Order SMS: <code>{customer_name}<\/code>, <code>{first_name}<\/code>, <code>{order_id}<\/code>, <code>{order_total}<\/code>, <code>{order_status}<\/code>, <code>{order_date}<\/code>, <code>{payment_method}<\/code>, <code>{item_count}<\/code>, <code>{billing_city}<\/code>, <code>{phone}<\/code>, <code>{site_name}<\/code><\/li>\n<li>OTP: <code>{otp}<\/code>, <code>{expiry_minutes}<\/code>, <code>{site_name}<\/code><\/li>\n<\/ul>\n\n<h4>SMS length and segments<\/h4>\n\n<p>Long messages are sent as several SMS parts, and each part is billed. While you type, the editor shows the character count and the estimated number of parts: plain English text (GSM-7) fits 160 characters in one SMS, and Bangla (Unicode) fits 70. SMSGELY's own count is the one that is billed.<\/p>\n\n<h4>Sender ID<\/h4>\n\n<p>Choose the SMS type \u2014 non-masking (default, recommended for OTP) or masking (your brand name). SMSGELY sends from your account's Primary Sender ID for that type. Sender IDs are managed in your SMSGELY account and cannot be typed into the plugin.<\/p>\n\n<h4>SMS logs and delivery tracking<\/h4>\n\n<ul>\n<li>Every message is listed in <strong>SMSGELY \u2192 SMS Logs<\/strong> with filters for date, type, status, order, phone number and Sender ID. Phone numbers are masked, and OTP text is never stored.<\/li>\n<li>When your API key has the <code>sms:read<\/code> permission, the plugin checks SMSGELY a few times after sending and shows when a message is delivered.<\/li>\n<li>Failed order messages can be retried with one click.<\/li>\n<\/ul>\n\n<h4>Duplicate-send protection<\/h4>\n\n<p>Each order event is sent only once per order and recipient, even if WooCommerce saves the same status several times. Temporary errors are retried automatically (up to three attempts) with the same request key, so SMSGELY does not send or charge twice.<\/p>\n\n<h4>Security and bot protection<\/h4>\n\n<ul>\n<li>One-time codes are generated with a cryptographically secure random number generator, expire after a few minutes, work only once and are limited in attempts and resends. Only a keyed hash is stored, never the code itself.<\/li>\n<li>Rate limits per phone number and IP address, with temporary blocking of abusive traffic.<\/li>\n<li>Optional CAPTCHA: Cloudflare Turnstile, Google reCAPTCHA (v3 or v2) or a built-in math question, plus a hidden honeypot field. \"Adaptive\" mode only challenges suspicious requests. Every CAPTCHA token is checked on your server.<\/li>\n<li>Login responses do not reveal whether an account exists for a number.<\/li>\n<li>Optional daily and monthly SMS limits, a daily OTP limit and a monthly spending limit help protect your SMSGELY wallet.<\/li>\n<li>The API key and CAPTCHA secret keys are stored encrypted, are never sent to the browser, and can be defined in <code>wp-config.php<\/code> instead.<\/li>\n<li>Admin actions check the user's permissions and a WordPress nonce; OTP requests are checked with a nonce. Database queries use prepared statements, input is sanitized and output is escaped.<\/li>\n<li>The SMSGELY API address must use HTTPS and be on smsgely.com.<\/li>\n<\/ul>\n\n<p>These features are meant to help you run a safer store. They do not guarantee security or legal compliance.<\/p>\n\n<h4>Built for current WooCommerce<\/h4>\n\n<ul>\n<li>Compatible with High-Performance Order Storage (HPOS), on or off.<\/li>\n<li>Works with the classic checkout and the WooCommerce Checkout Block.<\/li>\n<li>Pages that do not show a login form \u2014 home, shop, product and cart \u2014 load no plugin scripts, styles or CAPTCHA.<\/li>\n<li>Translation-ready (text domain <code>smsgely-order-sms-otp<\/code>).<\/li>\n<\/ul>\n\n<h4>Your SMSGELY account and the SMS API<\/h4>\n\n<p>You need your own SMSGELY account. You create an API key in your SMSGELY dashboard and paste it, with the API address shown there, into <strong>SMSGELY \u2192 Connection<\/strong>. The plugin then sends each message to the SMSGELY SMS API over HTTPS, and SMSGELY delivers it and bills your SMSGELY wallet at your account's rates. The plugin itself is free and does not include SMS credit. See \"External services\" below for exactly what is sent.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.5 or later and PHP 7.4 or later.<\/li>\n<li>WooCommerce (the plugin stays inactive without it).<\/li>\n<li>An <a href=\"https:\/\/smsgely.com\">SMSGELY<\/a> account with approved identity verification (KYC), wallet balance and an API key with the <code>sms:send<\/code> permission (add <code>sms:read<\/code> for delivery reports).<\/li>\n<li>A server that can make outgoing HTTPS requests.<\/li>\n<\/ul>\n\n<h4>Support<\/h4>\n\n<ul>\n<li>For help with the plugin, use the support forum here on WordPress.org.<\/li>\n<li>For your SMSGELY account, Sender IDs, balance or API keys, contact <a href=\"https:\/\/smsgely.com\/support\">SMSGELY support<\/a>.<\/li>\n<li>SMSGELY's <a href=\"https:\/\/smsgely.com\/resources\/api\">SMS API guide<\/a> explains API keys and permissions.<\/li>\n<\/ul>\n\n<h3>Troubleshooting<\/h3>\n\n<ul>\n<li><strong>\"Invalid API key\"<\/strong> \u2014 copy the key again from SMSGELY and make sure it is still active.<\/li>\n<li><strong>\"Forbidden\" or \"insufficient scope\"<\/strong> \u2014 the key needs the <code>sms:send<\/code> permission, and if you restricted the key to certain IP addresses, your server's IP must be one of them.<\/li>\n<li><strong>\"Insufficient balance\"<\/strong> \u2014 recharge your SMSGELY wallet, then retry failed messages from <strong>SMS Logs<\/strong>.<\/li>\n<li><strong>\"Masking not approved\"<\/strong> \u2014 switch the SMS type to non-masking until your masking Sender ID is approved.<\/li>\n<li><strong>Messages stay \"Pending\"<\/strong> \u2014 WordPress's scheduled tasks may not be running. Check <strong>WooCommerce \u2192 Status \u2192 Scheduled Actions<\/strong>.<\/li>\n<li><strong>Customers see \"Too many requests\"<\/strong> \u2014 review <strong>Security \u2192 Rate limits<\/strong>, or use <strong>Tools \u2192 Reset rate limits<\/strong>.<\/li>\n<li><strong>The OTP form does not appear<\/strong> \u2014 check that Login &amp; Registration OTP is chosen in <strong>Settings<\/strong>, that SMSGELY is connected, and that login or registration is turned on in <strong>OTP Login<\/strong>.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>The plugin connects to the services below only after you set them up. It does not collect analytics or telemetry and does not contact any other service.<\/p>\n\n<h4>SMSGELY (required)<\/h4>\n\n<p>SMSGELY delivers the SMS messages.<\/p>\n\n<ul>\n<li><strong>When:<\/strong> when an enabled order event happens, when a customer requests an OTP, when you save the Connection settings or click \"Check connection\" or \"Send real SMS\", and a few times after sending to check delivery status (only if your API key has the <code>sms:read<\/code> permission). Nothing is sent before you enter an API key, and nothing is sent while a page is being displayed.<\/li>\n<li><strong>What is sent:<\/strong> your API key (for authentication), the recipient's phone number, the message text, the SMS type and a message reference number. Order messages contain what your templates include, such as order number, customer name, total and status; OTP messages contain the one-time code.<\/li>\n<li><strong>Where:<\/strong> the SMSGELY API address you enter, which must be on smsgely.com.<\/li>\n<li><a href=\"https:\/\/smsgely.com\/legal\/terms\">SMSGELY Terms<\/a> and <a href=\"https:\/\/smsgely.com\/legal\/privacy\">SMSGELY Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<h4>Cloudflare Turnstile (optional)<\/h4>\n\n<p>Used only if you choose Turnstile as the CAPTCHA. Its script loads only on the OTP login and registration forms (in Adaptive mode, only when a check is needed). Cloudflare receives technical information from the visitor's browser, and your server sends the check token and the visitor's IP address to Cloudflare to verify it.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.cloudflare.com\/turnstile-privacy-policy\/\">Cloudflare Turnstile Privacy Addendum<\/a> and <a href=\"https:\/\/www.cloudflare.com\/website-terms\/\">Cloudflare Website Terms<\/a>.<\/li>\n<\/ul>\n\n<h4>Google reCAPTCHA (optional)<\/h4>\n\n<p>Used only if you choose reCAPTCHA as the CAPTCHA, under the same conditions as Turnstile. Google receives technical information from the visitor's browser, and your server sends the check token and the visitor's IP address to Google to verify it.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a> and <a href=\"https:\/\/policies.google.com\/terms\">Google Terms of Service<\/a>.<\/li>\n<\/ul>\n\n<h4>Links in the admin screens<\/h4>\n\n<p>The SMSGELY admin pages contain links to your SMSGELY dashboard, API guide and support (smsgely.com). They open only when you click them; no data is sent to SMSGELY by showing them.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin adds no analytics, advertising or tracking code. It contacts SMSGELY only to send messages and check their delivery, and Cloudflare or Google only if you enable their CAPTCHA (see \"External services\").<\/p>\n\n<p>The plugin stores, in your WordPress database:<\/p>\n\n<ul>\n<li><strong>SMS log<\/strong> \u2014 reference, date, type, order number, recipient phone number (shown masked), status, part count and cost if SMSGELY reports it. The text of order messages is kept so you can review and retry them; OTP text is never stored. Entries are deleted after 90 days by default (you can change this).<\/li>\n<li><strong>OTP checks<\/strong> \u2014 the phone number, keyed hashes of the code and of the visitor's IP address, attempt counts and times. Deleted within a day.<\/li>\n<li><strong>Rate-limit counters<\/strong> \u2014 keyed hashes only, deleted when they expire.<\/li>\n<li><strong>Verified number<\/strong> \u2014 linked to the WordPress user and also saved as the WooCommerce billing phone.<\/li>\n<\/ul>\n\n<p>When a visitor requests a code, the plugin sets one functional cookie, <code>smsgely_woo_otp<\/code> (HttpOnly, expires within an hour), that links the browser to the pending verification. It is not used for tracking.<\/p>\n\n<p>The plugin works with WordPress's personal data export and erase tools and suggests text for your privacy policy. Erasing removes or anonymizes only this plugin's data \u2014 never WordPress users or WooCommerce orders. Deactivating the plugin keeps all data; deleting it removes the plugin's data only if you turn on \"Delete plugin data when uninstalling\" in <strong>Settings<\/strong>.<\/p>\n\n<p>As the site owner, you are responsible for your SMSGELY account and for telling your customers how their phone numbers are used, as your local privacy laws require.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>In WordPress, go to <strong>Plugins \u2192 Add New<\/strong>, search for \"SMSGELY\", then install and activate this plugin. (Or upload the plugin ZIP from <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.)<\/li>\n<li>In your SMSGELY dashboard, open <strong>Developer \u2192 API keys<\/strong> and create a key with the <code>sms:send<\/code> permission. Add <code>sms:read<\/code> if you want delivery reports. Copy the key \u2014 SMSGELY shows it only once.<\/li>\n<li>In WordPress, open <strong>SMSGELY \u2192 Connection<\/strong>. Paste the API address shown in your SMSGELY dashboard and your API key, choose the SMS type, and click <strong>Save &amp; check connection<\/strong>.<\/li>\n<li>Open <strong>SMSGELY \u2192 Settings<\/strong> and choose your features: Login &amp; Registration OTP, WooCommerce Order SMS, or Both.<\/li>\n<li>Set up order SMS, templates, OTP login and security on their pages (see Configuration below) and save each page.<\/li>\n<li>Optional: use <strong>SMSGELY \u2192 Tools \u2192 Send an SMS<\/strong> to check that a message reaches your phone. This sends a real SMS and is billed to your SMSGELY wallet like any other message.<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ul>\n<li><strong>Order SMS<\/strong> \u2014 turn order events on or off, choose recipients, add admin numbers and choose the SMS language.<\/li>\n<li><strong>Templates<\/strong> \u2014 edit the English and Bangla messages.<\/li>\n<li><strong>OTP Login<\/strong> \u2014 choose where OTP is offered (My Account, checkout, Account details), the login screen, code length and expiry, and the registration fields.<\/li>\n<li><strong>Security<\/strong> \u2014 choose the CAPTCHA, rate limits and SMS spending limits.<\/li>\n<li><strong>Settings<\/strong> \u2014 features, master on\/off switch, log retention and uninstall behaviour.<\/li>\n<\/ul>\n\n<p>To keep the API key out of the database, add it to <code>wp-config.php<\/code> instead:<\/p>\n\n<pre><code>define( 'SMSGELY_API_KEY', 'your-key' );\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20smsgely%20for%20woocommerce%3F\"><h3>What is SMSGELY for WooCommerce?<\/h3><\/dt>\n<dd><p>It connects your WooCommerce store to SMSGELY, a business SMS service. It sends order SMS notifications and lets customers log in, register and verify their phone number with a one-time code sent by SMS.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20smsgely%20account%3F\"><h3>Do I need an SMSGELY account?<\/h3><\/dt>\n<dd><p>Yes. Messages are sent through your SMSGELY account and paid from your SMSGELY wallet at your account's rates. The plugin itself is free and does not include SMS credit.<\/p><\/dd>\n<dt id=\"can%20smsgely%20send%20woocommerce%20order%20sms%20notifications%3F\"><h3>Can SMSGELY send WooCommerce order SMS notifications?<\/h3><\/dt>\n<dd><p>Yes. Choose which of the seven order events send an SMS \u2014 new order, processing, on hold, completed, cancelled, failed and refunded \u2014 and whether the customer, your admin numbers or both receive it.<\/p><\/dd>\n<dt id=\"does%20smsgely%20support%20otp%20login%20for%20woocommerce%3F\"><h3>Does SMSGELY support OTP login for WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Customers can log in or register on the My Account page, the classic checkout and the Checkout Block with their mobile number and a one-time code. You can keep the password option or offer OTP only.<\/p><\/dd>\n<dt id=\"can%20customers%20register%20with%20only%20a%20phone%20number%3F\"><h3>Can customers register with only a phone number?<\/h3><\/dt>\n<dd><p>Yes. After the phone number is verified, a short form asks for the details you require. Email and password can be required, optional or hidden.<\/p><\/dd>\n<dt id=\"will%20my%20existing%20customers%20be%20locked%20out%3F\"><h3>Will my existing customers be locked out?<\/h3><\/dt>\n<dd><p>No. In the default login mode passwords keep working, and existing customers can log in with a code sent to the phone number on their billing address. Administrators and shop managers always use their password.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20woocommerce%20sms%20messages%3F\"><h3>Can I customize the WooCommerce SMS messages?<\/h3><\/dt>\n<dd><p>Yes. Every order event and the OTP message have their own template. Edit the text in <strong>SMSGELY \u2192 Templates<\/strong>, insert placeholders such as <code>{customer_name}<\/code> or <code>{order_total}<\/code>, and check the live preview.<\/p><\/dd>\n<dt id=\"does%20smsgely%20support%20bangla%20sms%3F\"><h3>Does SMSGELY support Bangla SMS?<\/h3><\/dt>\n<dd><p>Yes. Every message has an English and a Bangla template; you choose the SMS language once. Bangla messages are sent as Unicode, so they use more SMS parts than English ones of the same length.<\/p><\/dd>\n<dt id=\"which%20phone%20numbers%20are%20supported%3F\"><h3>Which phone numbers are supported?<\/h3><\/dt>\n<dd><p>Bangladeshi mobile numbers, written in any common format (<code>01\u2026<\/code>, <code>+8801\u2026<\/code> or <code>8801\u2026<\/code>).<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20hpos%20and%20the%20woocommerce%20checkout%20block%3F\"><h3>Does it work with HPOS and the WooCommerce Checkout Block?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses WooCommerce's order functions and works with High-Performance Order Storage on or off. Logged-out customers see a \"Log in with mobile\" option above both the classic checkout and the Checkout Block, and their cart is kept after logging in.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20captcha%3F\"><h3>Does the plugin support CAPTCHA?<\/h3><\/dt>\n<dd><p>Yes. Choose Cloudflare Turnstile, Google reCAPTCHA (v3 or v2) or a built-in math question that needs no third-party service. A hidden honeypot field and rate limits are also included.<\/p><\/dd>\n<dt id=\"can%20i%20use%20only%20order%20sms%2C%20or%20only%20otp%20login%3F\"><h3>Can I use only order SMS, or only OTP login?<\/h3><\/dt>\n<dd><p>Yes. In <strong>SMSGELY \u2192 Settings<\/strong>, choose Login &amp; Registration OTP, WooCommerce Order SMS or Both. You can change this at any time without losing settings.<\/p><\/dd>\n<dt id=\"how%20much%20does%20each%20sms%20cost%3F\"><h3>How much does each SMS cost?<\/h3><\/dt>\n<dd><p>SMSGELY bills each SMS part at your account's rate. The part counts in the plugin are estimates; SMSGELY's count is the one that is billed. Bangla messages use more parts than English ones of the same length.<\/p><\/dd>\n<dt id=\"can%20i%20send%20a%20test%20message%20without%20being%20charged%3F\"><h3>Can I send a test message without being charged?<\/h3><\/dt>\n<dd><p>No. The plugin always uses the real SMSGELY API, so every message \u2014 including one sent from <strong>Tools \u2192 Send an SMS<\/strong> \u2014 is a real SMS billed to your wallet.<\/p><\/dd>\n<dt id=\"is%20the%20otp%20stored%20anywhere%3F\"><h3>Is the OTP stored anywhere?<\/h3><\/dt>\n<dd><p>No. Only a keyed hash is kept while the code is valid, and it is deleted within a day. OTP messages are logged without their text.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20track%20visitors%3F\"><h3>Does the plugin track visitors?<\/h3><\/dt>\n<dd><p>No. The plugin adds no analytics, advertising or tracking code. See the Privacy section for the data it keeps to send messages and verify codes.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20add%20a%20credit%20or%20link%20to%20my%20store%3F\"><h3>Does the plugin add a credit or link to my store?<\/h3><\/dt>\n<dd><p>No. The optional \"Powered by SMSGELY\" line under the OTP login form is off by default and appears only if you turn it on in <strong>SMSGELY \u2192 Settings<\/strong>. It is plain text, not a link.<\/p><\/dd>\n<dt id=\"why%20can%27t%20i%20see%20my%20smsgely%20balance%20in%20wordpress%3F\"><h3>Why can't I see my SMSGELY balance in WordPress?<\/h3><\/dt>\n<dd><p>SMSGELY's public API documentation does not describe a balance endpoint, so the plugin does not show one. Your balance, Sender IDs and full delivery reports are in your SMSGELY dashboard.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Changed: The \"WooCommerce is required\" notice now appears only on the Dashboard and Plugins screens instead of every admin screen.<\/li>\n<li>Changed: The WordPress.org screenshots show the default login form, without the optional \"Powered by SMSGELY\" line.<\/li>\n<li>Fixed: The readme now lists every order SMS placeholder ({item_count}, {billing_city} and {phone} were missing).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Changed: The \"Powered by SMSGELY\" line under the OTP login form is now off by default and shown only if you turn it on. Sites that had already turned it on keep their choice.<\/li>\n<li>Changed: Styles and scripts are loaded only through the WordPress enqueue functions (no inline style or script tags).<\/li>\n<li>Changed: Clearer readme: who publishes the plugin and when SMSGELY is contacted.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>New: WooCommerce order SMS notifications for new, processing, on-hold, completed, cancelled, failed and refunded orders, to customers and\/or admin numbers.<\/li>\n<li>New: OTP login and registration on My Account, the classic checkout and the WooCommerce Checkout Block.<\/li>\n<li>New: Phone number verification in Account details.<\/li>\n<li>New: Choose Your SMSGELY Features \u2014 Login &amp; Registration OTP, WooCommerce Order SMS, or Both.<\/li>\n<li>New: English and Bangla SMS templates with placeholders, live preview and SMS part estimate.<\/li>\n<li>New: Background sending with duplicate protection and safe retries.<\/li>\n<li>New: SMS logs with filters, retry and delivery status (when the API key has the <code>sms:read<\/code> permission).<\/li>\n<li>New: Cloudflare Turnstile, Google reCAPTCHA, math CAPTCHA and honeypot; rate limits and SMS spending limits.<\/li>\n<li>New: Personal data export and erase, log retention settings.<\/li>\n<li>Dev: Compatible with WooCommerce High-Performance Order Storage (HPOS) and the Checkout Block.<\/li>\n<\/ul>","raw_excerpt":"SMSGELY WooCommerce SMS notifications and OTP login: order status SMS, phone verification and English or Bangla messages via your SMSGELY account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/391130","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=391130"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/naimurrahmannahid"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=391130"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=391130"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=391130"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=391130"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=391130"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=391130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}