{"id":49211,"date":"2016-06-21T19:34:40","date_gmt":"2016-06-21T19:34:40","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/textme-sms-integration\/"},"modified":"2026-03-12T06:07:54","modified_gmt":"2026-03-12T06:07:54","slug":"textme-sms-integration","status":"publish","type":"plugin","link":"https:\/\/scn.wordpress.org\/plugins\/textme-sms-integration\/","author":14782234,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.3","stable_tag":"2.0.3","tested":"6.9.4","requires":"5.2","requires_php":"7.4","requires_plugins":null,"header_name":"TextMe SMS","header_author":"Matat Technologies","header_description":"","assets_banners_color":"a4bacd","last_updated":"2026-03-12 06:07:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/textme.co.il","header_author_uri":"https:\/\/matat.co.il","rating":4,"author_block_rating":0,"active_installs":600,"downloads":17024,"num_ratings":4,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"amitrotem","date":"2016-06-21 19:37:36"},"1.1":{"tag":"1.1","author":"amitrotem","date":"2016-06-21 21:02:12"},"1.2":{"tag":"1.2","author":"ramiy","date":"2016-06-22 22:13:56"},"1.3":{"tag":"1.3","author":"ramiy","date":"2016-06-25 15:30:16"},"1.4":{"tag":"1.4","author":"ramiy","date":"2016-06-29 21:40:53"},"1.5":{"tag":"1.5","author":"ramiy","date":"2017-01-09 14:50:19"},"1.6":{"tag":"1.6","author":"ramiy","date":"2017-03-15 11:47:12"},"1.7":{"tag":"1.7","author":"amitrotem","date":"2017-04-21 19:50:05"},"1.7.1":{"tag":"1.7.1","author":"amitrotem","date":"2017-04-21 20:06:52"},"1.7.2":{"tag":"1.7.2","author":"amitrotem","date":"2017-04-24 10:50:18"},"1.7.3":{"tag":"1.7.3","author":"amitrotem","date":"2017-08-28 19:24:00"},"1.7.4":{"tag":"1.7.4","author":"amitrotem","date":"2017-11-24 09:44:32"},"1.7.5":{"tag":"1.7.5","author":"amitrotem","date":"2017-11-24 09:49:08"},"1.7.6":{"tag":"1.7.6","author":"amitrotem","date":"2017-11-24 16:45:09"},"1.8":{"tag":"1.8","author":"amitrotem","date":"2018-08-03 13:46:57"},"1.8.1":{"tag":"1.8.1","author":"amitrotem","date":"2018-08-03 13:55:56"},"1.8.3":{"tag":"1.8.3","author":"amitrotem","date":"2018-11-11 16:27:58"},"1.8.4":{"tag":"1.8.4","author":"amitrotem","date":"2018-11-25 11:02:51"},"1.8.5":{"tag":"1.8.5","author":"amitrotem","date":"2020-05-25 18:29:16"},"1.8.6":{"tag":"1.8.6","author":"amitrotem","date":"2020-05-26 18:07:26"},"1.8.7":{"tag":"1.8.7","author":"amitrotem","date":"2021-07-14 13:20:26"},"1.8.8":{"tag":"1.8.8","author":"amitrotem","date":"2021-08-04 07:09:32"},"1.8.9":{"tag":"1.8.9","author":"amitrotem","date":"2021-08-23 10:33:14"},"1.9.0":{"tag":"1.9.0","author":"amitrotem","date":"2023-08-16 07:39:38"},"1.9.1":{"tag":"1.9.1","author":"amitrotem","date":"2023-12-05 06:38:13"},"1.9.2":{"tag":"1.9.2","author":"amitrotem","date":"2025-05-11 07:02:28"},"1.9.3":{"tag":"1.9.3","author":"amitrotem","date":"2025-08-05 06:47:14"},"2.0.0":{"tag":"2.0.0","author":"amitrotem","date":"2026-03-09 14:10:22"},"2.0.1":{"tag":"2.0.1","author":"amitrotem","date":"2026-03-09 14:19:40"},"2.0.2":{"tag":"2.0.2","author":"amitrotem","date":"2026-03-10 15:29:33"},"2.0.3":{"tag":"2.0.3","author":"amitrotem","date":"2026-03-12 06:07:54"}},"upgrade_notice":{"2.0.3":"<p>Bug fix release. Fixes fatal error on order status change when ShipOS is active, and restores save functionality for settings page extensions added via the textme_sms_form_fields hook.<\/p>","2.0.2":"<p>Bug fix release. Fixes SMS template tags not being replaced after v1 migration, &#xD; characters appearing in messages, and ShipOS tracking number tags.<\/p>","2.0.1":"<p>Major rewrite. All v1.x settings are migrated automatically on first activation. New features include OTP\/2FA login, phone number login shortcodes, out of stock notifications, user registration coupons, balance monitoring, and API logs. Requires PHP 7.4+ and WordPress 5.2+.<\/p>"},"ratings":{"1":1,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1441349,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":1441349,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":1441349,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":1442021,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.8","1.8.1","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8","1.8.9","1.9.0","1.9.1","1.9.2","1.9.3","2.0.0","2.0.1","2.0.2","2.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1152,4906,711,11999,286],"plugin_category":[41,45],"plugin_contributors":[93198,81018,220212],"plugin_business_model":[],"class_list":["post-49211","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-notifications","plugin_tags-sms","plugin_tags-text-message","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-amitrotem","plugin_contributors-ramiy","plugin_contributors-sdp49","plugin_committers-amitrotem"],"banners":{"banner":"https:\/\/ps.w.org\/textme-sms-integration\/assets\/banner-772x250.png?rev=1442021","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/textme-sms-integration\/assets\/icon.svg?rev=1441349","icon":"https:\/\/ps.w.org\/textme-sms-integration\/assets\/icon.svg?rev=1441349","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>TextMe SMS Integration allows you to send SMS messages from your WordPress site using the TextMe SMS gateway service.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Send SMS notifications for WooCommerce orders<\/li>\n<li>Contact Form 7 integration<\/li>\n<li>Elementor Forms integration<\/li>\n<li>User registration SMS notifications<\/li>\n<li>Admin OTP\/2FA for secure logins<\/li>\n<li>Phone number login shortcodes<\/li>\n<li>Out of stock notifications<\/li>\n<li>Balance monitoring with email alerts<\/li>\n<\/ul>\n\n<p><strong>WooCommerce Integration:<\/strong><\/p>\n\n<ul>\n<li>New order notifications (customer and admin)<\/li>\n<li>Order complete notifications<\/li>\n<li>Order cancelled notifications<\/li>\n<li>Pending payment reminders<\/li>\n<li>Custom order status notifications<\/li>\n<li>Customer notes via SMS<\/li>\n<\/ul>\n\n<p><strong>Login Security:<\/strong><\/p>\n\n<ul>\n<li>Two-factor authentication via SMS OTP<\/li>\n<li>Phone number login support<\/li>\n<li>International phone number support<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/textme-sms-integration<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to Settings &gt; TextMe SMS to configure the plugin.<\/li>\n<li>Enter your TextMe SMS API credentials.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20textme%20sms%3F\"><h3>What is TextMe SMS?<\/h3><\/dt>\n<dd><p>TextMe SMS is an SMS gateway service that allows you to send text messages from your applications.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20textme%20account%3F\"><h3>Do I need a TextMe account?<\/h3><\/dt>\n<dd><p>Yes, you need an active TextMe SMS account with API credentials to use this plugin.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%3F\"><h3>Does this work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes, the plugin includes full WooCommerce integration for order notifications.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Fix: Fatal error \"Cannot use object of type WC_Meta_Data as array\" when changing order status \u2014 ShipOS tracking number now correctly reads the WC_Meta_Data object value<\/li>\n<li>Fix: Extension fields added via the textme_sms_form_fields action hook now have a dedicated Save button and AJAX handler; data is saved to textme_sms_option for full backward compatibility with theme extensions<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Fix: WooCommerce SMS templates with v1-style tags ([first name], [last name], [order number] with spaces) were sent with unreplaced literal tags after migration \u2014 backward-compatible aliases added<\/li>\n<li>Fix: [order_status], [ship_num], and [shipping_number] tags were shown in the admin tag picker but never replaced in outgoing SMS messages<\/li>\n<li>Fix: [ship_num] and [shipping_number] now correctly read from ShipOS (wc-shipos-delivery) order meta using the actual delivery_number field<\/li>\n<li>Fix: Carriage return characters (\\r) from textarea form submissions were appearing as &#xD; in received SMS messages<\/li>\n<li>Fix: TEXTME_SMS_VERSION constant was out of sync with plugin header version<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<p><strong>Architecture<\/strong><\/p>\n\n<ul>\n<li>Complete plugin rewrite with a modular, class-based architecture<\/li>\n<li>Each feature now stores its own settings separately \u2014 no more shared flat options array<\/li>\n<li>New top-level admin menu replacing the nested Settings page<\/li>\n<li>Built-in migration tool to carry all v1.x settings forward to v2.0.0 automatically<\/li>\n<li>PHP 7.4+ and WordPress 5.2+ now required<\/li>\n<\/ul>\n\n<p><strong>WooCommerce<\/strong><\/p>\n\n<ul>\n<li>Independent customer and admin SMS toggles per order event<\/li>\n<li>Added pending payment SMS notifications (customer and admin)<\/li>\n<li>Added support for custom order statuses with individual SMS messages<\/li>\n<li>Added customer note SMS (send from the WooCommerce order note field)<\/li>\n<li>Added option to save customer phone number to address book on order<\/li>\n<\/ul>\n\n<p><strong>Out of Stock Notifications (new)<\/strong><\/p>\n\n<ul>\n<li>Customers can subscribe to restock alerts directly from the product page<\/li>\n<li>Optional name, email, and terms &amp; conditions fields on the subscription form<\/li>\n<li>Admin reports page with Pending and Sent tabs showing all subscribers<\/li>\n<li>Bulk SMS \u2014 notify all waiting subscribers in one click when stock returns<\/li>\n<\/ul>\n\n<p><strong>User Registration Coupon (new)<\/strong><\/p>\n\n<ul>\n<li>Generate a unique WooCommerce coupon automatically on new user registration<\/li>\n<li>Send the coupon code to the customer via SMS<\/li>\n<li>Configurable discount type, amount, and coupon code length<\/li>\n<\/ul>\n\n<p><strong>Login Security (new)<\/strong><\/p>\n\n<ul>\n<li>Admin OTP \/ 2FA \u2014 intercepts wp-login.php and requires SMS verification before granting admin access<\/li>\n<li><code>[textme_login_form]<\/code> shortcode \u2014 custom login form with username, password, and SMS OTP step<\/li>\n<li><code>[textme_phone_login]<\/code> shortcode \u2014 passwordless login using phone number and SMS OTP<\/li>\n<li>Configurable max OTP attempts, resend cooldown, and fallback phone meta field<\/li>\n<li>International phone number support<\/li>\n<\/ul>\n\n<p><strong>Balance Monitoring (new)<\/strong><\/p>\n\n<ul>\n<li>Daily cron job checks your TextMe account balance<\/li>\n<li>Sends an email alert to the site admin when balance drops below a configurable threshold<\/li>\n<\/ul>\n\n<p><strong>Reports &amp; Logging (new)<\/strong><\/p>\n\n<ul>\n<li>API call log viewer in the admin \u2014 shows phone, message preview, status, and HTTP code<\/li>\n<li>Enable\/disable logging toggle \u2014 disabled by default<\/li>\n<li>Clear all logs button<\/li>\n<li>Logs auto-pruned after 90 days (configurable)<\/li>\n<\/ul>\n\n<p><strong>Admin &amp; UX<\/strong><\/p>\n\n<ul>\n<li>Test SMS sending directly from the settings page with live response display<\/li>\n<li>Connection status indicator in the settings header<\/li>\n<li>Copy-on-click shortcode helper<\/li>\n<li>Fully responsive admin design<\/li>\n<\/ul>\n\n<p><strong>Internationalization<\/strong><\/p>\n\n<ul>\n<li>Full Hebrew translation included<\/li>\n<li>All JavaScript strings localized<\/li>\n<\/ul>\n\n<p><strong>Security<\/strong><\/p>\n\n<ul>\n<li>Session cookies hardened with Secure, HttpOnly, and SameSite=Strict flags<\/li>\n<li>Session ID regenerated after every successful OTP login to prevent session fixation<\/li>\n<li>Brute-force protection on credential login (5 attempts per 15 minutes)<\/li>\n<li>XXE vulnerability patched in legacy XML API parser<\/li>\n<li>Open redirect blocked \u2014 shortcode redirect attribute restricted to same-site URLs<\/li>\n<li>SSL verification explicitly enforced on all outbound API calls<\/li>\n<li>Generic error messages on phone lookup to prevent user enumeration<\/li>\n<li>Plugin options set to autoload=false \u2014 settings not loaded on front-end pages that don't use them<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Send custom SMS messages from your WordPress site to your customers using the TextMe SMS gateway.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/49211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=49211"}],"author":[{"embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/amitrotem"}],"wp:attachment":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=49211"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=49211"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=49211"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=49211"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=49211"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=49211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}