{"id":276189,"date":"2026-01-22T17:35:57","date_gmt":"2026-01-22T17:35:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/phone-validator-for-wpforms\/"},"modified":"2026-10-25T02:27:13","modified_gmt":"2026-10-25T02:27:13","slug":"phone-validator-for-wpforms","status":"publish","type":"plugin","link":"https:\/\/de.wordpress.org\/plugins\/phone-validator-for-wpforms\/","author":15592516,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.1.3","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Phone Validator for WPForms","header_author":"Ilyntiy","header_description":"Advanced phone validation for WPForms.","assets_banners_color":"ffffff","last_updated":"2026-10-25 02:27:13","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/t.me\/advertsales","header_plugin_uri":"https:\/\/github.com\/Ilyntiy\/phone-validator-for-wpforms","header_author_uri":"https:\/\/profiles.wordpress.org\/gogicher\/","rating":5,"author_block_rating":0,"active_installs":20,"downloads":815,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"gogicher","date":"2026-01-22 17:36:25","revision":3445058},"1.0.1":{"tag":"1.0.1","author":"gogicher","date":"2026-05-23 10:08:50","revision":3544985},"1.1.0":{"tag":"1.1.0","author":"gogicher","date":"2026-10-17 05:26:24","revision":3751429},"1.1.1":{"tag":"1.1.1","author":"gogicher","date":"2026-10-25 02:27:13","revision":3763883}},"upgrade_notice":{"1.1.1":"<p>Fixes the history of accepted submissions and stops bots before WPForms saves them. New browser check option, off after an update until you turn it on.<\/p>","1.1.0":"<p>New honeypot, per-IP limit, input mask and number normalization for all countries. Your settings are kept. If your site is behind Cloudflare or a proxy, select it in Settings \u2192 Visitor IP address.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3751429,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3751429,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3751429,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3751429,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.1.0","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3751429,"resolution":"1","location":"assets","locale":"","width":1170,"height":858},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3751429,"resolution":"2","location":"assets","locale":"","width":1170,"height":858},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3751429,"resolution":"3","location":"assets","locale":"","width":1170,"height":858},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3751429,"resolution":"4","location":"assets","locale":"","width":1170,"height":858},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3751429,"resolution":"5","location":"assets","locale":"","width":1170,"height":858}},"screenshots":{"1":"Settings: phone checks (digits, repeats, sequences, blacklist).","2":"Settings: countries, number format and input mask.","3":"Settings: honeypot and submission limits.","4":"Settings: visitor IP address detection and history retention.","5":"History of rejected and accepted submissions."}},"plugin_section":[],"plugin_tags":[162995,598,2644,599,130711],"plugin_category":[54],"plugin_contributors":[254487],"plugin_business_model":[],"class_list":["post-276189","plugin","type-plugin","status-publish","hentry","plugin_tags-form-protection","plugin_tags-honeypot","plugin_tags-phone","plugin_tags-spam","plugin_tags-wpforms","plugin_category-security-and-spam-protection","plugin_contributors-gogicher","plugin_committers-gogicher"],"banners":{"banner":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/banner-772x250.png?rev=3751429","banner_2x":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/banner-1544x500.png?rev=3751429","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/icon-128x128.png?rev=3751429","icon_2x":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/icon-256x256.png?rev=3751429","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/screenshot-1.png?rev=3751429","caption":"Settings: phone checks (digits, repeats, sequences, blacklist)."},{"src":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/screenshot-2.png?rev=3751429","caption":"Settings: countries, number format and input mask."},{"src":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/screenshot-3.png?rev=3751429","caption":"Settings: honeypot and submission limits."},{"src":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/screenshot-4.png?rev=3751429","caption":"Settings: visitor IP address detection and history retention."},{"src":"https:\/\/ps.w.org\/phone-validator-for-wpforms\/assets\/screenshot-5.png?rev=3751429","caption":"History of rejected and accepted submissions."}],"raw_content":"<!--section=description-->\n<p>Paid traffic brings real leads and a lot of junk: numbers like 1111111, random digits, bots. <strong>Phone Validator for WPForms<\/strong> filters them out before they reach your inbox or CRM. It works with WPForms Lite and WPForms Pro and needs no setup to start: install, activate, done.<\/p>\n\n<p><strong>What it checks<\/strong><\/p>\n\n<ul>\n<li><strong>Phone number rules.<\/strong> Minimum and maximum length, identical digits in a row (000000), ascending and descending sequences (1234567), your own blacklist.<\/li>\n<li><strong>Any country.<\/strong> Numbers are understood in national and international form (020 7946 0958, +44 20 7946 0958, 0044 20 7946 0958). Set a default country or write your own conversion rules like <code>07 =&gt; +447<\/code>. A table of country calling codes and number lengths is built in. The number stored by WPForms is never changed.<\/li>\n<li><strong>Allowed country codes.<\/strong> Accept only the countries you serve, for example +1, +44, +33, +34.<\/li>\n<li><strong>Input mask.<\/strong> Describe the format once, for example <code>+1 *** *** ****<\/code>, and visitors get it while typing. The server checks the number again, so the mask cannot be bypassed by a bot.<\/li>\n<li><strong>Honeypot.<\/strong> An invisible field that people never fill and simple bots always do. The field name is random for your site and you can change it. A counter shows how many bots were stopped.<\/li>\n<li><strong>Browser check.<\/strong> A small script adds a hidden field in the visitor's browser. Bots that send the form without a browser, or with a forged value, are stopped before WPForms saves anything. Can be switched off if a caching plugin delays scripts on your site.<\/li>\n<li><strong>Limits per IP.<\/strong> A minimum interval between submissions and a limit of submissions per IP address in 24 hours. Trusted IP addresses and logged-in administrators can be excluded.<\/li>\n<li><strong>Correct IP behind Cloudflare and proxies.<\/strong> Without it every visitor would look the same and the limits would block everyone. Cloudflare is built in; other proxies are supported through a list of trusted addresses.<\/li>\n<li><strong>History.<\/strong> Rejected and accepted submissions with filters, paging, download and automatic cleanup.<\/li>\n<\/ul>\n\n<p><strong>Good to know<\/strong><\/p>\n\n<ul>\n<li>The mask is applied while typing to plain phone fields. WPForms \"Smart\" phone fields (with a country selector) format themselves, for them the server check applies.<\/li>\n<li>The honeypot, the browser check and the mask are re-checked on the server. Rejecting submissions without the browser check needs JavaScript in the visitor's browser; you can turn that option off.<\/li>\n<li>A short note under forms is shown only to logged-in administrators (it can be turned off). Visitors never see any label or link of the plugin.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>The plugin does not send data anywhere. The optional history is a file in the uploads folder (random name, not accessible from the web) with phone numbers and IP addresses of visitors. Logging can be turned off and old entries are deleted automatically (30 days by default). If you collect data of visitors from the EU, mention the history in your privacy policy or turn it off.<\/p>\n\n<h4>Credits<\/h4>\n\n<p>The table of country calling codes and number lengths is generated from the open <a href=\"https:\/\/github.com\/google\/libphonenumber\">libphonenumber<\/a> metadata (Apache License 2.0).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Make sure WPForms (Lite or Pro) is installed and active.<\/li>\n<li>Upload the <code>phone-validator-for-wpforms<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install the plugin from the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open <strong>Phone Validator \u2192 Settings<\/strong> and check the default country. Everything else works with the default values.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20wpforms%20lite%3F\"><h3>Does it work with WPForms Lite?<\/h3><\/dt>\n<dd><p>Yes, with WPForms Lite and Pro.<\/p><\/dd>\n<dt id=\"will%20it%20change%20the%20numbers%20that%20are%20saved%3F\"><h3>Will it change the numbers that are saved?<\/h3><\/dt>\n<dd><p>No. Numbers are converted only for checking. WPForms saves exactly what the visitor typed.<\/p><\/dd>\n<dt id=\"the%20mask%20does%20not%20appear%20on%20my%20phone%20field.\"><h3>The mask does not appear on my phone field.<\/h3><\/dt>\n<dd><p>Plain phone fields get the mask while typing. Smart phone fields (with a country selector) format themselves; the number is still checked against the mask on the server.<\/p><\/dd>\n<dt id=\"all%20visitors%20are%20blocked%20by%20the%20limit.\"><h3>All visitors are blocked by the limit.<\/h3><\/dt>\n<dd><p>Your site is probably behind a proxy or CDN and every visitor has the same address. Open Settings \u2192 Visitor IP address and choose Cloudflare or add your proxy.<\/p><\/dd>\n<dt id=\"is%20the%20honeypot%20visible%20to%20visitors%3F\"><h3>Is the honeypot visible to visitors?<\/h3><\/dt>\n<dd><p>No. The field is hidden and the plugin shows nothing about it. Only logged-in administrators see a note under the form, and it can be turned off.<\/p><\/dd>\n<dt id=\"where%20is%20the%20history%20stored%3F\"><h3>Where is the history stored?<\/h3><\/dt>\n<dd><p>In a protected file in <code>wp-content\/uploads\/phone-validator-for-wpforms\/<\/code>. It is removed when you delete the plugin.<\/p><\/dd>\n<dt id=\"how%20do%20i%20translate%20it%3F\"><h3>How do I translate it?<\/h3><\/dt>\n<dd><p>The plugin is translation ready. Translations are contributed on translate.wordpress.org.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed: accepted submissions were not written to the history when limits were off, or for administrators and trusted IP addresses.<\/li>\n<li>Fixed: the honeypot is now checked at the very start of processing, so a rejected bot is not saved by WPForms, not even as spam.<\/li>\n<li>New: browser check. A small script adds a hidden field in the visitor's browser; submissions sent without a real browser or with a forged value are rejected.<\/li>\n<li>New: option to reject submissions without the browser check. It is on for new installations; sites updated from 1.1.0 keep it off until you turn it on.<\/li>\n<li>New: a recommended value and a hint under every option in the settings.<\/li>\n<li>New: history types \"Bot (browser check)\" and \"No JavaScript\".<\/li>\n<li>Improved: AMP verification requests are ignored by the bot checks.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: limit of submissions per IP address in 24 hours (all forms together or per form), trusted IP addresses, administrators excluded.<\/li>\n<li>New: input mask such as +1 *** *** **** with a server-side re-check.<\/li>\n<li>New: honeypot with a random field name, blocked bots counter and a note for administrators.<\/li>\n<li>New: Support link on the Plugins screen and a support line at the bottom of the plugin pages.<\/li>\n<li>New: number normalization for all countries, default country and own conversion rules; the blacklist and country filter use it.<\/li>\n<li>New: check for ascending and descending digit sequences.<\/li>\n<li>New: correct visitor IP behind Cloudflare and other proxies.<\/li>\n<li>New: history filter by type, paging, download from the admin, redesigned screens.<\/li>\n<li>Improved: the history file has a random name and cannot be opened from the web; size limit and safe cleanup.<\/li>\n<li>Fixed: a number typed in national form (for example 07700 900123) was rejected when only its country code (+44) was allowed.<\/li>\n<li>Fixed: the history could be forged with line breaks in the submitted value.<\/li>\n<li>Fixed: uninstall left the history folder behind.<\/li>\n<li>Settings of earlier versions are kept. The honeypot is on after the update; the mask and the daily limit are off until you enable them.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Stops junk phone numbers and bots in WPForms: number checks for any country, input mask, honeypot, per-IP limits and a submission history.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/276189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=276189"}],"author":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gogicher"}],"wp:attachment":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=276189"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=276189"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=276189"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=276189"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=276189"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=276189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}