{"id":341406,"date":"2026-08-15T07:46:18","date_gmt":"2026-08-15T07:46:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/veilo-invisible-spam-shield\/"},"modified":"2026-08-15T07:45:43","modified_gmt":"2026-08-15T07:45:43","slug":"veilo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/veilo\/","author":23533792,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Veilo \u2014 Invisible Spam Shield","header_author":"Adina Pervaiz","header_description":"Blocks spam on comments, Contact Form 7, WPForms, Elementor Pro Forms, and Gravity Forms using behaviour signals \u2014 no CAPTCHA shown to visitors.","assets_banners_color":"fefdfd","last_updated":"2026-08-15 07:45:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/AdinaParvez\/veilo-wordpress-plugin","header_author_uri":"https:\/\/adinaportfolio.gstech.live","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"adinax0926","date":"2026-08-15 07:45:43"}},"upgrade_notice":{"1.1.0":"<p>Current stable release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3648308,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3648308,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3648308,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3648308,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Veilo Activity Log showing allowed and blocked submissions."}},"plugin_section":[],"plugin_tags":[2656,107,601,600,599],"plugin_category":[42,44,54],"plugin_contributors":[275780],"plugin_business_model":[],"class_list":["post-341406","plugin","type-plugin","status-publish","hentry","plugin_tags-anti-spam","plugin_tags-comments","plugin_tags-forms","plugin_tags-security","plugin_tags-spam","plugin_category-contact-forms","plugin_category-discussion-and-community","plugin_category-security-and-spam-protection","plugin_contributors-adinax0926","plugin_committers-adinax0926"],"banners":{"banner":"https:\/\/ps.w.org\/veilo\/assets\/banner-772x250.png?rev=3648308","banner_2x":"https:\/\/ps.w.org\/veilo\/assets\/banner-1544x500.png?rev=3648308","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/veilo\/assets\/icon-128x128.png?rev=3648308","icon_2x":"https:\/\/ps.w.org\/veilo\/assets\/icon-256x256.png?rev=3648308","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>A working plugin scaffold, not a demo. It scores every submission using three signals \u2014 a honeypot field, submission speed, and pointer\/touch movement \u2014 with no CAPTCHA ever shown to the visitor. Spam is blocked (or held for review) automatically.<\/p>\n\n<p><strong>Free plan protects:<\/strong><\/p>\n\n<ul>\n<li>Native WordPress comments<\/li>\n<li>Contact Form 7<\/li>\n<li>WPForms<\/li>\n<\/ul>\n\n<p><strong>Pro plan additionally protects:<\/strong><\/p>\n\n<ul>\n<li>Elementor Pro Forms<\/li>\n<li>Gravity Forms<\/li>\n<\/ul>\n\n<p>...and unlocks Veilo \u2192 Pro Tools: full Activity Log history (configurable row limit, free is capped at the 10 most recent) and one-click CSV export.<\/p>\n\n<h4>Protecting a custom or hand-coded form<\/h4>\n\n<p>The signal script (<code>public\/js\/veilo-signals.js<\/code>) tags every <code>&lt;form&gt;<\/code> on the page automatically, so the three hidden fields are already present in <code>$_POST<\/code> for ANY form, built-in or custom. To act on them from your own form handler, call the public helper:<\/p>\n\n<pre><code>$result = veilo_check( $_POST, 'my-booking-form', $_POST['name'] ?? '' );\n\nif ( 'allowed' !== $result['decision'] ) {\n    \/\/ stop processing however fits this form \u2014 wp_die(), return an\n    \/\/ error, redirect back with a message, etc.\n    wp_die( 'Your submission looks automated and was not sent.' );\n}\n\n\/\/ otherwise continue processing the form as normal\n<\/code><\/pre>\n\n<p>The second and third arguments are optional and only affect what shows up in Veilo \u2192 Activity Log (a source label and a short preview text). This same function is what every built-in integration calls internally, so custom forms get identical scoring to comments, CF7, WPForms, Elementor, and Gravity Forms.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Zip the <code>veilo<\/code> folder (the folder itself must be inside the zip, e.g. <code>veilo\/veilo.php<\/code>).<\/li>\n<li>In wp-admin: Plugins \u2192 Add New \u2192 Upload Plugin \u2192 choose the zip \u2192 Install \u2192 Activate.<\/li>\n<li>Go to the new \"Veilo\" menu in the sidebar to choose which forms to protect and set the sensitivity threshold.<\/li>\n<li>Submit a test comment or form entry, then check Veilo \u2192 Activity Log to see the score and reasons it was allowed or blocked.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20score%20work%3F\"><h3>How does the score work?<\/h3><\/dt>\n<dd><ul>\n<li>Honeypot filled in \u2192 strong spam signal (bots fill every field)<\/li>\n<li>Submitted in under ~2 seconds \u2192 strong spam signal (too fast for a human)<\/li>\n<li>No mouse\/touch\/scroll at all \u2192 moderate spam signal<\/li>\n<li>Hidden fields missing entirely \u2192 the request likely skipped the browser\/JS<\/li>\n<\/ul>\n\n<p>Everything above 100% is capped; the threshold in Settings (default 50) decides where \"probably spam\" starts.<\/p><\/dd>\n<dt id=\"does%20this%20require%20contact%20form%207%20or%20wpforms%20to%20be%20installed%3F\"><h3>Does this require Contact Form 7 or WPForms to be installed?<\/h3><\/dt>\n<dd><p>Contact Form 7 support requires CF7 to be installed and active. WPForms support requires WPForms (free or Pro) to be installed and active. Elementor Forms support (Pro plan) requires Elementor Pro. Gravity Forms support (Pro plan) requires Gravity Forms. All integrations degrade gracefully \u2014 if the target plugin isn't installed, Veilo simply does nothing for that form type.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Current release.<\/li>\n<\/ul>","raw_excerpt":"Invisible spam protection for comments and forms \u2014 no CAPTCHA, ever shown to visitors.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/341406","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=341406"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/adinax0926"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=341406"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=341406"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=341406"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=341406"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=341406"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=341406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}