{"id":315009,"date":"2026-05-31T08:55:18","date_gmt":"2026-05-31T08:55:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sendsms-for-woocommerce\/"},"modified":"2026-05-31T08:55:07","modified_gmt":"2026-05-31T08:55:07","slug":"sendsms-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/sendsms-for-woocommerce\/","author":23502224,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.3","stable_tag":"2.0.3","tested":"7.0","requires":"4.0","requires_php":"7.4","requires_plugins":null,"header_name":"SendSMS for WooCommerce","header_author":"sendSMS","header_description":"Send SMS notifications to your customers on every WooCommerce order status change. Per-status templates, campaign sender, single-order SMS, full history.","assets_banners_color":"e0d9ee","last_updated":"2026-05-31 08:55:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.sendsms.ro\/ro\/ecommerce\/plugin-woocommerce\/","header_author_uri":"https:\/\/www.sendsms.ro\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.3":{"tag":"2.0.3","author":"sendsms","date":"2026-05-31 08:55:07"}},"upgrade_notice":{"2.0.3":"<p>Plugin prefix changed to <code>rosendsms_<\/code>. Existing data from any earlier version is migrated automatically on activation \u2014 no manual reconfiguration required.<\/p>","2.0.2":"<p>Renamed all stored option keys, the history table, the order opt-out meta key, AJAX actions, and the PHP namespace to a prefixed scheme. Existing settings and SMS history were migrated automatically on activation.<\/p>","2.0.1":"<p>Polish pass after the 2.0.0 rewrite. Fixes a settings-page bug where saving one tab wiped the values stored on other tabs.<\/p>","2.0.0":"<p>Full rewrite under the SendSMS&#92;ForWooCommerce namespace. Settings and SMS history carry over automatically. WordPress.org launch.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3555224,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3555224,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3555224,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3555224,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3555224,"resolution":"1","location":"assets","locale":"","width":3458,"height":2354},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3555224,"resolution":"2","location":"assets","locale":"","width":3460,"height":2346},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3555224,"resolution":"3","location":"assets","locale":"","width":3454,"height":2360},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3555224,"resolution":"4","location":"assets","locale":"","width":3454,"height":2348},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3555224,"resolution":"5","location":"assets","locale":"","width":3436,"height":2364},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3555224,"resolution":"6","location":"assets","locale":"","width":3456,"height":2344},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3555224,"resolution":"7","location":"assets","locale":"","width":3458,"height":2346},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3555224,"resolution":"8","location":"assets","locale":"","width":3456,"height":2358}},"screenshots":{"1":"The SendSMS overview screen, listing how status notifications work and the available message placeholders.","2":"Configuration \u2014 Account tab: enter your sendsms.ro credentials, sender label, country normalisation and optional simulation mode.","3":"Configuration \u2014 Customer notifications: a message template per WooCommerce order status, each with Enabled, Short URL and Unsubscribe toggles.","4":"Configuration \u2014 Owner notification: send yourself an SMS for every new order, with its own template.","5":"History: a searchable, sortable log of every SMS the plugin has sent.","6":"Campaign: filter past orders by date, product or county and send a bulk SMS to the matching customers.","7":"Send a test: send a one-off SMS to any number to preview your templates.","8":"The per-order \"Send SMS\" metabox, for sending a one-off message straight from the order screen."}},"plugin_section":[],"plugin_tags":[4906,1896,192825,711,286],"plugin_category":[41,45],"plugin_contributors":[192824,132395,265134],"plugin_business_model":[],"class_list":["post-315009","plugin","type-plugin","status-publish","hentry","plugin_tags-notifications","plugin_tags-order","plugin_tags-sendsms","plugin_tags-sms","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-catalinsendsms","plugin_contributors-neamtua","plugin_contributors-sendsms","plugin_committers-sendsms"],"banners":{"banner":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/banner-772x250.png?rev=3555224","banner_2x":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/banner-1544x500.png?rev=3555224","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/icon-128x128.png?rev=3555224","icon_2x":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/icon-256x256.png?rev=3555224","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-1.png?rev=3555224","caption":"The SendSMS overview screen, listing how status notifications work and the available message placeholders."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-2.png?rev=3555224","caption":"Configuration \u2014 Account tab: enter your sendsms.ro credentials, sender label, country normalisation and optional simulation mode."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-3.png?rev=3555224","caption":"Configuration \u2014 Customer notifications: a message template per WooCommerce order status, each with Enabled, Short URL and Unsubscribe toggles."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-4.png?rev=3555224","caption":"Configuration \u2014 Owner notification: send yourself an SMS for every new order, with its own template."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-5.png?rev=3555224","caption":"History: a searchable, sortable log of every SMS the plugin has sent."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-6.png?rev=3555224","caption":"Campaign: filter past orders by date, product or county and send a bulk SMS to the matching customers."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-7.png?rev=3555224","caption":"Send a test: send a one-off SMS to any number to preview your templates."},{"src":"https:\/\/ps.w.org\/sendsms-for-woocommerce\/assets\/screenshot-8.png?rev=3555224","caption":"The per-order \"Send SMS\" metabox, for sending a one-off message straight from the order screen."}],"raw_content":"<!--section=description-->\n<p><strong>SendSMS for WooCommerce<\/strong> connects your WooCommerce store to the sendsms.ro SMS gateway so customers get a text message at every step of their order \u2014 placed, paid, shipped, completed, refunded, or any other status you choose.<\/p>\n\n<p>Why SMS? It has a ~95% open rate, and most messages are read within five seconds of arrival. For order updates, that's hard to beat.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Per-status message templates with variables: <code>{billing_first_name}<\/code>, <code>{billing_last_name}<\/code>, <code>{shipping_first_name}<\/code>, <code>{shipping_last_name}<\/code>, <code>{order_number}<\/code>, <code>{order_date}<\/code>, <code>{order_total}<\/code>.<\/li>\n<li>Campaign sender with date \/ county \/ product filters that pulls phone numbers from past orders.<\/li>\n<li>\"Send a test SMS\" page for verifying templates against any phone number.<\/li>\n<li>Per-order \"Send SMS\" sidebar metabox for one-off messages, with the SMS body recorded as an order note.<\/li>\n<li>SMS history table with full searching and sorting.<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS).<\/li>\n<li>Optional unsubscribe-link (GDPR) and short-URL flags per status.<\/li>\n<li>Customer opt-out checkbox available at checkout.<\/li>\n<\/ul>\n\n<p>This plugin requires a <a href=\"https:\/\/www.sendsms.ro\/ro\/\">sendsms.ro<\/a> account. Sign-up is free; SMS pricing is per message and depends on the destination country.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>sendsms.ro<\/strong> SMS gateway \u2014 a third-party service operated by SC sendSMS Solutions SRL \u2014 to deliver text messages to your customers. Using the plugin requires an active sendsms.ro account.<\/p>\n\n<p>What the service is used for:<\/p>\n\n<ul>\n<li>Sending the configured order-status SMS to each order's billing phone number.<\/li>\n<li>Sending the optional owner-notification SMS to a phone number you configure.<\/li>\n<li>Sending the test SMS triggered from the <strong>SendSMS \u2192 Send a test<\/strong> page.<\/li>\n<li>Sending bulk campaign SMS triggered from the <strong>SendSMS \u2192 Campaign<\/strong> page.<\/li>\n<li>Reading your account balance to display it on the <strong>Configuration<\/strong> page.<\/li>\n<li>Looking up the per-SMS price for a route (used in the campaign \"Estimate the price\" feature). Cached locally for 24 hours.<\/li>\n<\/ul>\n\n<p>What data is sent, and when:<\/p>\n\n<ul>\n<li>On every outbound SMS: your sendsms.ro <strong>username<\/strong> and <strong>API key\/password<\/strong>, the configured <strong>sender label<\/strong>, the <strong>recipient phone number<\/strong> (typically the order's billing phone or an admin-supplied number for tests\/campaigns), and the <strong>message body<\/strong> (which may contain placeholder substitutions from the order such as first\/last name and order number\/date\/total). For campaign sends, the recipients + message are POSTed as a CSV body.<\/li>\n<li>On every balance\/price-lookup request: your <strong>username<\/strong>, <strong>API key\/password<\/strong>, and (for the price lookup) the <strong>destination phone number<\/strong>.<\/li>\n<li>No data is sent until you have entered credentials and either an order transition occurs, you press a send button manually, or you open the Configuration page (which checks the account balance once per page load).<\/li>\n<\/ul>\n\n<p>Service endpoints used: <code>https:\/\/api.sendsms.ro\/json<\/code> (HTTPS).<\/p>\n\n<p>Third-party terms of service and privacy:<\/p>\n\n<ul>\n<li>Terms and conditions: https:\/\/www.sendsms.ro\/en\/terms-and-conditions\/<\/li>\n<li>GDPR \/ privacy: https:\/\/www.sendsms.ro\/en\/gdpr\/<\/li>\n<li>ISO 27001 certification: https:\/\/www.sendsms.ro\/en\/iso-27001-certified\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install <strong>WooCommerce<\/strong> if you don't already have it.<\/li>\n<li>Upload the <code>sendsms-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin from the WordPress.org directory.<\/li>\n<li>Activate the plugin under <strong>Plugins<\/strong> in the WordPress admin.<\/li>\n<li>Go to <strong>SendSMS \u2192 Configuration<\/strong> and enter your sendsms.ro username and API key.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20with%20sendsms.ro%3F\"><h3>Do I need an account with sendsms.ro?<\/h3><\/dt>\n<dd><p>Yes. Sign up for free at https:\/\/www.sendsms.ro\/ro\/ and create an API key.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20with%20woocommerce%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does this plugin work with WooCommerce HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. The plugin reads and writes order data through the WooCommerce order API so it works regardless of whether your store uses legacy CPT storage or HPOS.<\/p><\/dd>\n<dt id=\"what%20php%20versions%20are%20supported%3F\"><h3>What PHP versions are supported?<\/h3><\/dt>\n<dd><p>PHP 7.4 through PHP 8.3+. Tested on PHP 7.4 and PHP 8.3 against WordPress 7.0 and WooCommerce 10.7.<\/p><\/dd>\n<dt id=\"can%20my%20customers%20opt%20out%20of%20sms%20notifications%3F\"><h3>Can my customers opt out of SMS notifications?<\/h3><\/dt>\n<dd><p>Yes. Enable the \"Opt-out in cart\" setting under Configuration; a checkbox appears at checkout. Customers who tick it never receive automated SMS for that order.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Plugin prefix changed to <code>rosendsms_<\/code> (PHP namespace <code>Rosendsms\\\\ForWooCommerce<\/code>, settings option <code>rosendsms_options<\/code>, history table <code>{prefix}rosendsms_history<\/code>, order opt-out meta key <code>rosendsms_optout<\/code>, AJAX actions <code>wp_ajax_rosendsms_campaign<\/code> \/ <code>wp_ajax_rosendsms_single<\/code>, extensibility hooks <code>rosendsms_should_send<\/code> \/ <code>rosendsms_message<\/code> \/ <code>rosendsms_recipient_phone<\/code> \/ <code>rosendsms_after_send<\/code>).<\/li>\n<li>Migration now handles two earlier naming schemes: v1.x (<code>wc_sendsms_*<\/code> \/ <code>wcsendsms_history<\/code> \/ <code>wc_sendsms_optout<\/code>) and v2.0.2 (<code>sendsmsro_*<\/code> \/ <code>sendsmsro_history<\/code> \/ <code>sendsmsro_optout<\/code>). Both are migrated to the current <code>rosendsms_*<\/code> names on activation.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Renamed every stored name (PHP namespace, settings option, history table, order opt-out meta key, AJAX action names, extensibility hooks) to a single prefix to satisfy WordPress.org Plugin Directory naming conventions.<\/li>\n<li>Added an activation-time migration that copies the v1.x stored data (settings option, price cache, history table, order opt-out meta) into the new names. Upgrading from a v1.x install carries over every setting and SMS-history row automatically.<\/li>\n<li><code>register_setting()<\/code> sanitize callback now applies per-field sanitization (<code>sanitize_text_field<\/code>, <code>sanitize_textarea_field<\/code>, <code>sanitize_key<\/code>, and recursive sanitization for the per-status template\/flag arrays).<\/li>\n<li><code>readme.txt<\/code> now includes an <code>== External services ==<\/code> section disclosing every sendsms.ro endpoint used, the data sent, and links to the gateway's terms \/ privacy \/ ISO certification.<\/li>\n<li>Added <code>sendsms<\/code> (the plugin's WordPress.org owner account) to the Contributors line.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Settings page: fixed a bug where saving any tab wiped the values stored on the other tabs. Each tab now merges into the existing option instead of overwriting it.<\/li>\n<li>Order metabox: the Phone field is now pre-filled with the order's billing phone, and is no longer cleared after a successful send so follow-up messages don't require retyping the number.<\/li>\n<li>Settings page: added cell padding on the per-status template table so column headers and labels are no longer flush against the edges.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<p>Full architectural rewrite. The plugin now follows modern WordPress conventions while preserving every existing setting and the SMS history database table \u2014 upgrading from 1.x is transparent.<\/p>\n\n<ul>\n<li>Code reorganised into a PSR-4 namespace tree (<code>SendSMS\\\\ForWooCommerce\\\\\u2026<\/code>) with one class per responsibility (API client, settings reader, order listeners, admin pages, AJAX handlers).<\/li>\n<li>Settings page redesigned with three tabs: <strong>Account<\/strong>, <strong>Customer notifications<\/strong>, <strong>Owner notification<\/strong>. The per-status template list is now a single table.<\/li>\n<li>Admin scripts moved to <code>assets\/js\/<\/code> and enqueued only on the relevant pages.<\/li>\n<li>New extensibility hooks for third-party developers: <code>sendsms_for_woocommerce_should_send<\/code>, <code>sendsms_for_woocommerce_message<\/code>, <code>sendsms_for_woocommerce_recipient_phone<\/code>, and <code>sendsms_for_woocommerce_after_send<\/code>.<\/li>\n<li>Continued from the 1.4.3 security baseline (legacy repository now archived):\n\n<ul>\n<li>Single-send AJAX endpoint guarded with nonce + <code>manage_woocommerce<\/code> capability.<\/li>\n<li>Test-send form CSRF-protected.<\/li>\n<li>Stored password never rendered back into the settings form.<\/li>\n<li>Stored-XSS escaping on every column of the History page.<\/li>\n<li>HPOS-aware throughout (declared via <code>FeaturesUtil::declare_compatibility<\/code>).<\/li>\n<li>In-memory CSV for campaign sends (no <code>batches\/<\/code> filesystem write).<\/li>\n<\/ul><\/li>\n<li>Minimum PHP raised to 7.4; verified on PHP 7.4 and PHP 8.3.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>Internal mirror of the legacy 1.4.3 release. Not distributed via WordPress.org.<\/p>","raw_excerpt":"Send SMS notifications to your customers when their WooCommerce order status changes, run SMS campaigns, and send single SMS from any order.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315009"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sendsms"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315009"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315009"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315009"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315009"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315009"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}