{"id":384795,"date":"2026-10-26T07:53:51","date_gmt":"2026-10-26T07:53:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pay4all-sms\/"},"modified":"2026-10-26T18:38:30","modified_gmt":"2026-10-26T18:38:30","slug":"pay4all-sms","status":"publish","type":"plugin","link":"https:\/\/mk.wordpress.org\/plugins\/pay4all-sms\/","author":23516902,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.4","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"Pay4All SMS","header_author":"Pay4All","header_description":"Send SMS marketing campaigns from WordPress via seven.io. Multilingual signup shortcode with intl-tel-input, per-language message editor, double opt-in, web + STOP unsubscribe, cron-batch throttling and cost estimation. Optional bridge with Pay4All Shop for one-click customer import.","assets_banners_color":"","last_updated":"2026-10-26 18:38:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/pay4all.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":70,"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":"pay4all","date":"2026-10-26 07:53:33","revision":3765767},"1.0.3":{"tag":"1.0.3","author":"pay4all","date":"2026-10-26 18:38:30","revision":3767117}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2501,456,99,288607,711],"plugin_category":[41,45,55],"plugin_contributors":[268195],"plugin_business_model":[],"class_list":["post-384795","plugin","type-plugin","status-publish","hentry","plugin_tags-campaign","plugin_tags-marketing","plugin_tags-multilingual","plugin_tags-seven-io","plugin_tags-sms","plugin_category-communication","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-pay4all","plugin_committers-pay4all"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/pay4all-sms.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Pay4All SMS turns your WordPress site into a self-service SMS marketing tool powered by <a href=\"https:\/\/www.seven.io\/\">seven.io<\/a>.<\/p>\n\n<ul>\n<li>Public <strong>signup shortcode<\/strong> with a flag \/ international-format picker (intl-tel-input, 200+ countries).<\/li>\n<li>Server-side <strong>E.164 validation<\/strong> and phone normalisation.<\/li>\n<li>Optional <strong>double opt-in<\/strong> : the visitor confirms via a 6-digit code sent by SMS.<\/li>\n<li><strong>Web unsubscribe<\/strong> : every outbound SMS carries a token-based link to a confirmation page (auto-generated page or a shortcode on a WordPress page of your choice).<\/li>\n<li><strong>STOP inbound<\/strong> : hook seven.io Inbound-SMS to a webhook URL and the plugin marks \u00ab STOP \u00bb, \u00ab STOPP \u00bb, \u00ab ARR\u00caT \u00bb, \u00ab BASTA \u00bb replies as unsubscribed automatically.<\/li>\n<li><strong>Multilingual campaigns<\/strong> : write the SMS body once per language (fr\/de\/it\/en). Each contact receives the version matching their <code>lang<\/code>.<\/li>\n<li><strong>Cost-safe batching<\/strong> : the wp-cron tick sends a merchant-configured maximum number of SMS per minute.<\/li>\n<li><strong>Delivery log<\/strong> : one row per attempt with the provider id, cost, and delivery status.<\/li>\n<li><strong>Pay4All Shop bridge<\/strong> : one-click import of existing customers, plus an opt-in checkbox in the order form.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>seven.io<\/strong> SMS gateway API (<code>https:\/\/gateway.seven.io\/api<\/code>), operated by seven communications GmbH &amp; Co. KG, to send text messages. Nothing is sent until you enter your own seven.io API key under <em>Pay4All SMS &gt; Settings<\/em>.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li><strong>Sending an SMS<\/strong> (campaign, test SMS, double opt-in confirmation code) : the recipient's phone number, the message text, the sender ID and an internal reference of the message.<\/li>\n<li><strong>Estimating the cost of a campaign<\/strong> (campaign editor) : the default country and one sample recipient phone number.<\/li>\n<li><strong>Showing your account balance<\/strong> (plugin dashboard) : no personal data, only your API key.<\/li>\n<\/ul>\n\n<p>If you configure them in your seven.io account, seven.io also calls your site back on the webhook URLs shown in the settings : delivery reports and inbound \u00ab STOP \u00bb replies.<\/p>\n\n<ul>\n<li>seven.io terms of service : https:\/\/www.seven.io\/en\/company\/terms\/<\/li>\n<li>seven.io privacy policy : https:\/\/www.seven.io\/en\/company\/privacy\/<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>Contacts are stored in your WordPress database only : phone number, first name, language, country, subscription status, and the date and IP address of the consent. A log of sent messages (phone number, status, cost, beginning of the text) is kept as proof of sending. The plugin sends no data to Pay4All. Unsubscribed contacts are kept with a \u00ab stopped \u00bb status so they are never messaged again.<\/p>\n\n<h3>Third-party libraries<\/h3>\n\n<ul>\n<li><strong>intl-tel-input 29.5.5<\/strong> (MIT license) - phone field with country flags. Source code : https:\/\/github.com\/jackocnr\/intl-tel-input<\/li>\n<li>Its bundled validation utilities are compiled from Google <strong>libphonenumber<\/strong> (Apache License 2.0). Source code : https:\/\/github.com\/google\/libphonenumber<\/li>\n<\/ul>\n\n<p>The minified build files (<code>intlTelInputWithUtils.min.js<\/code>, <code>intlTelInput.min.css<\/code>, flag sprites) and the library's LICENSE are bundled in <code>assets\/public\/vendor\/intl-tel-input\/<\/code> ; the human-readable sources are in the repositories above.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>pay4all-sms<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin from the Plugins screen.<\/li>\n<li>Sign up on <a href=\"https:\/\/www.seven.io\/\">seven.io<\/a> and paste your API key + sender under <em>Pay4All SMS &gt; Settings<\/em>.<\/li>\n<li>Drop <code>[pay4all_sms_signup]<\/code> on the page where visitors should subscribe.<\/li>\n<li>Create a campaign under <em>Pay4All SMS &gt; Campaigns &gt; New campaign<\/em>, write the message in each language, click \u00ab Send \u00bb.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paid%20seven.io%20plan%3F\"><h3>Do I need a paid seven.io plan?<\/h3><\/dt>\n<dd><p>You need an API key + credit on seven.io. Pricing depends on the destination country ; see seven.io for the current rate card.<\/p><\/dd>\n<dt id=\"how%20do%20i%20let%20subscribers%20reply%20stop%3F\"><h3>How do I let subscribers reply STOP?<\/h3><\/dt>\n<dd><p>Rent a virtual inbound number in the seven.io dashboard and configure the Inbound-SMS webhook to POST to the URL shown under <em>Settings &gt; Unsubscribe &gt; STOP webhook<\/em>. Set a shared secret and paste it into the plugin settings. STOP-like keywords in every EU language are recognised automatically.<\/p><\/dd>\n<dt id=\"is%20web%20unsubscribe%20enough%20for%20gdpr%3F\"><h3>Is web unsubscribe enough for GDPR?<\/h3><\/dt>\n<dd><p>Every outbound SMS ships a token-based unsubscribe link, and every consent is logged with a timestamp. Consult your DPO for a full audit.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Traductions fran\u00e7aise, allemande et italienne ajout\u00e9es.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Removed stale intl-tel-input v18.2.1 file left over in the vendor folder.<\/li>\n<li>Confirmed intl-tel-input v29.5.5 bundle is the only phone-input library shipped.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Pay4All Shop opt-in checkbox now injected automatically into every order form, with a merchant toggle in Settings.<\/li>\n<li>Consent IP recorded on every signup (shortcode and Shop order) for GDPR proof.<\/li>\n<li>intl-tel-input bumped to 29.5.5.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release : signup shortcode with intl-tel-input, per-language campaign editor, cron-batched send, double opt-in, web + STOP unsubscribe, seven.io API client, Pay4All Shop bridge.<\/li>\n<li>Web unsubscribe in two steps (confirmation button + nonce), so link previews in messaging apps can't unsubscribe anyone.<\/li>\n<\/ul>","raw_excerpt":"Send SMS marketing campaigns from WordPress via seven.io. Multilingual signup, double opt-in, cron batching, web and STOP unsubscribe.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/384795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=384795"}],"author":[{"embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pay4all"}],"wp:attachment":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=384795"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=384795"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=384795"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=384795"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=384795"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=384795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}