{"id":397462,"date":"2026-11-09T02:21:02","date_gmt":"2026-11-09T02:21:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ais-formguard\/"},"modified":"2026-11-09T02:20:27","modified_gmt":"2026-11-09T02:20:27","slug":"ais-formguard","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ais-formguard\/","author":23582617,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.4","requires":"7.1","requires_php":"8.1","requires_plugins":null,"header_name":"AIS FormGuard","header_author":"AIStream Corporation","header_description":"Easy-setup spam protection for Contact Form 7. Blocks bots, auto-blocks attack sources, and tags sales emails instead of blocking them.","assets_banners_color":"c0a6c8","last_updated":"2026-11-09 02:20:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.aistream.co.jp\/ais-form-guard\/","header_author_uri":"https:\/\/www.aistream.co.jp\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"aistreamjp","date":"2026-11-09 02:20:27","revision":3791741}},"upgrade_notice":{"1.0.1":"<p>No longer redirects to the settings screen after activation. Fixes a duplicate purchase button on the paid plan tab.<\/p>","1.0.0":"<p>Initial public release. Optional sales-email detection sends masked enquiry text when enabled. Default service wait is 10s (max 15). Early renewal carries remaining quota into the next period. Free mode (detection off) does not contact the management server.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3791741,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3791741,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3791741,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3791741,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3791741,"resolution":"1","location":"assets","locale":"","width":1280,"height":637},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3791741,"resolution":"2","location":"assets","locale":"","width":1280,"height":1441},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3791741,"resolution":"3","location":"assets","locale":"","width":1280,"height":1327},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3791741,"resolution":"4","location":"assets","locale":"","width":1280,"height":1458}},"screenshots":{"1":"Setup wizard: environment check.","2":"Dashboard: status, seven-day totals, daily graph, and recent detections.","3":"Automatic blocking of attack sources: settings, blocked sources, and the copy-and-paste list.","4":"Optional sales-email detection settings."}},"plugin_section":[],"plugin_tags":[2656,2359,1152,598,599],"plugin_category":[54],"plugin_contributors":[291575],"plugin_business_model":[],"class_list":["post-397462","plugin","type-plugin","status-publish","hentry","plugin_tags-anti-spam","plugin_tags-bot","plugin_tags-contact-form-7","plugin_tags-honeypot","plugin_tags-spam","plugin_category-security-and-spam-protection","plugin_contributors-aistreamjp","plugin_committers-aistreamjp"],"banners":{"banner":"https:\/\/ps.w.org\/ais-formguard\/assets\/banner-772x250.png?rev=3791741","banner_2x":"https:\/\/ps.w.org\/ais-formguard\/assets\/banner-1544x500.png?rev=3791741","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ais-formguard\/assets\/icon-128x128.png?rev=3791741","icon_2x":"https:\/\/ps.w.org\/ais-formguard\/assets\/icon-256x256.png?rev=3791741","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ais-formguard\/assets\/screenshot-1.png?rev=3791741","caption":"Setup wizard: environment check."},{"src":"https:\/\/ps.w.org\/ais-formguard\/assets\/screenshot-2.png?rev=3791741","caption":"Dashboard: status, seven-day totals, daily graph, and recent detections."},{"src":"https:\/\/ps.w.org\/ais-formguard\/assets\/screenshot-3.png?rev=3791741","caption":"Automatic blocking of attack sources: settings, blocked sources, and the copy-and-paste list."},{"src":"https:\/\/ps.w.org\/ais-formguard\/assets\/screenshot-4.png?rev=3791741","caption":"Optional sales-email detection settings."}],"raw_content":"<!--section=description-->\n<p>The administration screens are available in Japanese only. Paid cloud sales-email detection is intended for Japanese-language inquiries only; local protection works regardless of language.<\/p>\n\n<p>AIS FormGuard protects your Contact Form 7 forms from bot spam, and is designed for site owners who do not have an engineer on staff. A three-step setup wizard checks your environment, lets you choose a protection level, and verifies that everything works. It starts in <strong>monitor mode<\/strong>, which only records what it would have blocked, so you can confirm that no real inquiry is affected before you switch to <strong>defense mode<\/strong>.<\/p>\n\n<p><strong>What makes AIS FormGuard different<\/strong><\/p>\n\n<ul>\n<li><strong>It tags, it does not block, anything that could be a real inquiry.<\/strong> Many spam plugins discard whatever they dislike. If you turn on the optional external service, messages that look like sales solicitations are delivered with a tag in the subject line (and, if you wish, to a different recipient), so a genuine inquiry that is misjudged is never lost. Only clear bot signals are blocked.<\/li>\n<li><strong>See before you block.<\/strong> It starts in monitor mode, which records what it would have blocked without blocking anything. You switch to defense mode only after you have checked the results.<\/li>\n<li><strong>Several independent signals, on your own server, with nothing to register or buy.<\/strong> Honeypot, signed token, minimum submission time, rate limit, link counter and duplicate detection all run locally and are free. Only the optional sales-email detection needs an API key from a paid plan. There is no CAPTCHA, the plugin adds no JavaScript or stylesheet to your pages, and it contacts an external server only when the site administrator enters an API key and turns on the optional integration.<\/li>\n<li><strong>Repeat offenders are blocked automatically.<\/strong> Sources that keep triggering strong bot signals are blocked temporarily. While blocked, their submissions are treated as spam by Contact Form 7 and no email is sent. Similar events are grouped into one log line, and a safety check keeps the feature off when the site is behind a proxy it cannot identify.<\/li>\n<li><strong>Built for people without an engineer.<\/strong> A three-step wizard, plain-language reasons for each detection, a weekly summary email, and a diagnostic summary that never contains message content.<\/li>\n<\/ul>\n\n<p><strong>Protection that runs entirely on your own site<\/strong><\/p>\n\n<ul>\n<li>Hidden honeypot field.<\/li>\n<li>Signed timestamp token that detects forged forms and submissions made too quickly after the form was displayed.<\/li>\n<li>Per-IP rate limit.<\/li>\n<li>URL count and duplicate-message checks.<\/li>\n<li>Automatic temporary blocking of sources that keep triggering strong bot signals (see below).<\/li>\n<\/ul>\n\n<p><strong>Automatic blocking of attack sources (defense mode only)<\/strong><\/p>\n\n<p>When the same source repeatedly triggers a strong bot signal (a filled honeypot field or a missing token) within a short time, it is blocked for a limited time. While a source is blocked, its form submissions are treated as spam by Contact Form 7, so no email is sent, and the other checks are skipped. The dashboard lists blocked sources, lets you unblock them, and gives you a copy-and-paste list that you can add to your firewall or CDN.<\/p>\n\n<p>To avoid blocking all visitors by mistake, automatic blocking is disabled when the site appears to be behind a proxy or CDN (such as Cloudflare) and you have not told the plugin which proxies to trust.<\/p>\n\n<p><strong>Dashboard for non-engineers<\/strong><\/p>\n\n<ul>\n<li>Seven-day totals and a day-by-day graph.<\/li>\n<li>Reasons for each detection, shown in plain language.<\/li>\n<li>Similar events are grouped into one line with a counter, so a large attack does not flood your database.<\/li>\n<li>Weekly summary email.<\/li>\n<li>One-click return to monitor mode, and a diagnostic summary you can send to support (it contains no message content).<\/li>\n<\/ul>\n\n<p><strong>Optional: sales-email detection with an external service<\/strong><\/p>\n\n<p>With an API key from a paid plan, the plugin can ask the AIS FormGuard judgement service whether a message that passed the local checks looks like a sales solicitation. Messages judged to be sales solicitations are <strong>not blocked<\/strong>. They are delivered with a tag in the subject line (for example \"\u3010\u55b6\u696d\u306e\u53ef\u80fd\u6027\u3011\"), optionally to a different recipient, so that a genuine inquiry that is misjudged is never lost. This feature is <strong>off by default<\/strong>. See \"External services\" below for exactly what is sent.<\/p>\n\n<p><strong>Fail-open by design<\/strong><\/p>\n\n<p>If anything goes wrong (for example, the optional service is unreachable or slow), the message is allowed through instead of being blocked.<\/p>\n\n<p><strong>What it does not do<\/strong><\/p>\n\n<ul>\n<li>It is not a CAPTCHA. It can be used alongside Cloudflare Turnstile, Akismet or reCAPTCHA.<\/li>\n<li>By itself, the plugin does not read the wording of messages. Judging whether a message is a sales solicitation is done only by the optional external service.<\/li>\n<li>It works with Contact Form 7 only.<\/li>\n<\/ul>\n\n<p><strong>Language<\/strong><\/p>\n\n<p>The administration screens are currently available in Japanese only. Paid sales-email detection is intended for Japanese-language inquiries only.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p><strong>Data stored on your site<\/strong><\/p>\n\n<ul>\n<li>A log table (<code>{prefix}aisfg_log<\/code>) that records the time, form ID, decision, reason codes, a hit counter, and the visitor's IP address with its last part masked (the last octet for IPv4, the lower 80 bits for IPv6). <strong>The content of messages is never stored.<\/strong> Log entries are deleted after 30 days by default.<\/li>\n<li>A table of blocked sources (<code>{prefix}aisfg_ban<\/code>) that records the full IP address of each blocked source, the reason, counters, and timestamps. Entries are deleted 7 days after the block expires, or when you unblock the source.<\/li>\n<li>Short-lived counters (WordPress transients) keyed by a hash of the IP address.<\/li>\n<li>Plugin settings. If you use the optional service, the API key you enter is stored in the WordPress options table.<\/li>\n<\/ul>\n\n<p>IP addresses can be personal data under some privacy laws. We recommend mentioning the use of this plugin in your site's privacy policy.<\/p>\n\n<p><strong>Data sent to external services<\/strong><\/p>\n\n<p>Only if you enable the optional sales-email detection. See \"External services\".\nAI judgement uses Amazon Bedrock (AWS Tokyo region); see External services.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can optionally connect to the AIS FormGuard judgement service, operated by AIStream Corporation (https:\/\/www.aistream.co.jp\/), to check whether an enquiry looks like a sales or solicitation email. <strong>This feature is off by default.<\/strong> The plugin connects only after a site administrator enters an API key and turns on \"Use sales-email detection\".<\/p>\n\n<ul>\n<li>Service endpoint: <code>https:\/\/vtrsplxud8.execute-api.ap-northeast-1.amazonaws.com\/prod<\/code> (operated by AIStream Corporation on Amazon Web Services, Tokyo region).<\/li>\n<li>When a Contact Form 7 form is submitted, the plugin sends the site URL, form ID, the visitor's IP address with the last part masked, simple submission signals (such as time to submit and message length), and the submitted field values with email addresses and phone numbers replaced by placeholders. The message text may be processed by Amazon Bedrock (AWS, Tokyo region) for AI judgement. The message text is not stored on the server.<\/li>\n<li>When the integration is turned on, and when the settings screen is opened or saved (and at most once per hour during submissions), the plugin sends the site URL, plugin version and WordPress version to check the plan and bind the API key to the site.<\/li>\n<li>The API key is sent in an HTTP header with every request.<\/li>\n<li>The purchase button only opens our purchase page (<code>https:\/\/d3a2ozkjmvji3q.cloudfront.net\/buy.html<\/code>) in the administrator's browser; the plugin itself does not request it. Payment is handled by Stripe Checkout.<\/li>\n<\/ul>\n\n<p>Nothing is sent unless the optional integration is turned on. WordPress user accounts and passwords are never sent.<\/p>\n\n<ul>\n<li>AIS FormGuard Terms of Use: https:\/\/www.aistream.co.jp\/ais-form-guard-tou\/<\/li>\n<li>AIStream Corporation Privacy Policy: https:\/\/www.aistream.co.jp\/privacy-policy\/<\/li>\n<li>AWS: https:\/\/aws.amazon.com\/service-terms\/ , https:\/\/aws.amazon.com\/privacy\/<\/li>\n<li>Stripe: https:\/\/stripe.com\/legal\/ssa , https:\/\/stripe.com\/privacy<\/li>\n<\/ul>\n\n<p>This plugin does not contact Cloudflare. Cloudflare Turnstile, if used, is configured in Contact Form 7.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Contact Form 7 (version 5.4 or later).<\/li>\n<li>Upload the <code>ais-formguard<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen.<\/li>\n<li>Open AIS FormGuard from the admin menu and follow the three steps (environment check, protection level, verification). The plugin starts in monitor mode.<\/li>\n<li>After a week or so, review the \"Recent detections\" list on the dashboard. If no genuine inquiry was flagged, switch to defense mode.<\/li>\n<\/ol>\n\n<p>If your site is behind Cloudflare or another proxy\/CDN, also read the FAQ entry about trusted proxies, and exclude the page that contains your form from page caching.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20contact%20form%207%3F\"><h3>Do I need Contact Form 7?<\/h3><\/dt>\n<dd><p>Yes. AIS FormGuard works only with Contact Form 7 (5.4 or later).<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20to%20an%20external%20server%20by%20default%3F\"><h3>Does the plugin send any data to an external server by default?<\/h3><\/dt>\n<dd><p>No. All of the protection described above runs on your own site. The plugin contacts an external server only when the site administrator enters an API key and turns on the optional integration.<\/p><\/dd>\n<dt id=\"can%20it%20block%20genuine%20visitors%3F\"><h3>Can it block genuine visitors?<\/h3><\/dt>\n<dd><p>It starts in monitor mode, which blocks nothing, so you can check first. In defense mode, a message is blocked only when it shows signs of automation, such as a filled hidden field, a forged token, a submission that is far too fast, repeated messages, or an unusual number of links. Messages that look like sales solicitations are never blocked; they are delivered with a tag in the subject line. If a visitor is blocked by mistake, you can unblock them from the dashboard, and you can add addresses that must never be blocked.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20other%20spam%20plugins%20for%20contact%20form%207%3F\"><h3>How is this different from other spam plugins for Contact Form 7?<\/h3><\/dt>\n<dd><p>Most plugins decide only between \"accept\" and \"block\". AIS FormGuard adds a third outcome: a message that might be a sales solicitation, but might also be a real inquiry, is delivered with a tag in the subject line instead of being discarded. It also offers a monitor mode that blocks nothing while you check the results, runs its checks on your own site without registering or buying anything (only the optional sales-email detection needs an API key from a paid plan), and temporarily blocks sources that keep sending obvious bot traffic. Other plugins may suit you better if you want to block sales messages outright or want a different approach; AIS FormGuard is designed to avoid losing a genuine inquiry.<\/p><\/dd>\n<dt id=\"how%20does%20this%20compare%20with%20cloudflare%20turnstile%3F\"><h3>How does this compare with Cloudflare Turnstile?<\/h3><\/dt>\n<dd><p>They are complementary. Turnstile (a feature of Contact Form 7) checks in the visitor's browser that the visitor is likely to be a real browser. AIS FormGuard looks at how a submission behaves and, optionally, at its content. Contact Form 7 runs its Turnstile check before AIS FormGuard does, so submissions rejected by Turnstile are not seen by this plugin.<\/p><\/dd>\n<dt id=\"my%20site%20is%20behind%20cloudflare%20or%20another%20proxy.%20what%20do%20i%20need%20to%20do%3F\"><h3>My site is behind Cloudflare or another proxy. What do I need to do?<\/h3><\/dt>\n<dd><p>Enter the IP ranges of your proxy in \"Trusted proxies\" (Dashboard, \"Automatic blocking of attack sources\"). Until you do, the plugin cannot tell your visitors apart and, for safety, automatic blocking stays off. Also exclude the page that contains your form from page caching.<\/p><\/dd>\n<dt id=\"can%20it%20stop%20all%20sales%20emails%3F\"><h3>Can it stop all sales emails?<\/h3><\/dt>\n<dd><p>No. Automated sales mailers are fairly easy to recognize, but a sales message written by hand in natural language is hard to distinguish from a genuine inquiry. This is why such messages are tagged and delivered rather than blocked.<\/p><\/dd>\n<dt id=\"what%20data%20does%20the%20plugin%20store%3F\"><h3>What data does the plugin store?<\/h3><\/dt>\n<dd><p>See the \"Privacy\" section below.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>The plugin's settings, scheduled tasks, and database tables are deleted.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Removed the redirect after activation.<\/li>\n<li>Removed the duplicate purchase button on the paid plan tab.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Local protection for Contact Form 7: honeypot, signed timestamp token, minimum submission time, per-IP rate limit, URL count and duplicate-message checks.<\/li>\n<li>Setup wizard, monitor and defense modes, dashboard, and weekly summary email.<\/li>\n<li>Automatic temporary blocking of sources that repeatedly trigger strong bot signals (defense mode only), with a safety check for untrusted proxies or CDNs.<\/li>\n<li>Optional sales-email detection with an external service (off by default). Messages judged to be sales solicitations are tagged, not blocked.<\/li>\n<\/ul>","raw_excerpt":"Easy-setup spam protection for Contact Form 7. Blocks bots, auto-blocks attack sources, and tags sales emails instead of blocking them.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/397462","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=397462"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aistreamjp"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=397462"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=397462"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=397462"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=397462"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=397462"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=397462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}