{"id":373590,"date":"2026-09-24T07:25:17","date_gmt":"2026-09-24T07:25:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/contactformchecker-contact-form-monitoring\/"},"modified":"2026-09-24T09:49:49","modified_gmt":"2026-09-24T09:49:49","slug":"etmy-contactformchecker","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/etmy-contactformchecker\/","author":23572312,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"ETM&Y Contactformchecker \u2013 Website form monitoring","header_author":"Elmar Teeuwen","header_description":"Shows the daily Contactformchecker test result on your dashboard and lets the test pass the CAPTCHA of your form. Requires a Contactformchecker subscription.","assets_banners_color":"0f3248","last_updated":"2026-09-24 09:49:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/contactformchecker.com\/","header_author_uri":"https:\/\/www.elmarteeuwen.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"seadevil1977","date":"2026-09-24 09:49:49","revision":3710999}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3710732,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3710732,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3710732,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3710732,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3710999,"resolution":"1","location":"assets","locale":"","width":1000,"height":1197},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3711167,"resolution":"2","location":"assets","locale":"","width":992,"height":640}},"screenshots":{"1":"The plugin page under Tools: the daily result per form, the code field and the CAPTCHA exception.","2":"The dashboard widget with the status of every monitored form."}},"plugin_section":[262246],"plugin_tags":[358,48589,282421,5603,595],"plugin_category":[38,54],"plugin_contributors":[282422],"plugin_business_model":[],"class_list":["post-373590","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-contact-form","plugin_tags-email-delivery","plugin_tags-form-test","plugin_tags-monitoring","plugin_tags-recaptcha","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_contributors-seasparkle","plugin_committers-seadevil1977"],"banners":{"banner":"https:\/\/ps.w.org\/etmy-contactformchecker\/assets\/banner-772x250.png?rev=3710732","banner_2x":"https:\/\/ps.w.org\/etmy-contactformchecker\/assets\/banner-1544x500.png?rev=3710732","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/etmy-contactformchecker\/assets\/icon-128x128.png?rev=3710732","icon_2x":"https:\/\/ps.w.org\/etmy-contactformchecker\/assets\/icon-256x256.png?rev=3710732","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/etmy-contactformchecker\/assets\/screenshot-1.png?rev=3710999","caption":"The plugin page under Tools: the daily result per form, the code field and the CAPTCHA exception."},{"src":"https:\/\/ps.w.org\/etmy-contactformchecker\/assets\/screenshot-2.png?rev=3711167","caption":"The dashboard widget with the status of every monitored form."}],"raw_content":"<!--section=description-->\n<p>A contact form can stop delivering email without anyone noticing. The visitor sees a thank-you message, but the enquiry never reaches your mailbox. Often it takes weeks before a customer calls to ask why nobody replied.<\/p>\n\n<p>Contactformchecker fills in your real contact form every day with a unique code and checks that the email actually arrives in your inbox. If it does not arrive within about two hours, you receive an alert with the likely cause.<\/p>\n\n<p>This plugin is the companion for your WordPress site. It does two things:<\/p>\n\n<ul>\n<li><strong>Shows the daily result on your dashboard.<\/strong> Whether the last test email arrived, when your form was last tested and on which page.<\/li>\n<li><strong>Lets the daily test pass your CAPTCHA.<\/strong> A CAPTCHA normally blocks an automated test. With this option on, only the signed test of Contactformchecker is let through, so your form keeps being checked. Supported: Contact Form 7, WPForms and Elementor Pro, with reCAPTCHA, hCaptcha or Turnstile depending on the form plugin.<\/li>\n<\/ul>\n\n<p>The plugin adds nothing to the front of your website. It sets no cookies, does not track visitors, and changes nothing for the people who fill in your form.<\/p>\n\n<h4>Only that one test skips the CAPTCHA<\/h4>\n\n<p>Your website and Contactformchecker share a secret key that is created on your own site. Every daily test is signed with it. A signature is valid for ten minutes, only for your domain, only for your own codes, and only once. Anything without a valid signature meets your CAPTCHA exactly as before, so nothing is opened up for spammers. The technical details are in the FAQ below.<\/p>\n\n<h4>Subscription<\/h4>\n\n<p>The plugin is free, but it works together with a Contactformchecker subscription: \u20ac10 per form per month, cancellable monthly, or \u20ac100 per form per year, with a 14-day money-back guarantee. Without a subscription code the plugin has nothing to show and nothing to do. The plugin page has a button to the sign-up page on <a href=\"https:\/\/contactformchecker.com\/\">contactformchecker.com<\/a>, where you choose the page with your form and pay through Stripe.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Contactformchecker service at contactformchecker.com, run by <a href=\"https:\/\/www.elmarteeuwen.com\/webdesign-online-marketing\/\">Elmar Teeuwen<\/a>. Nothing is sent when the plugin is activated. Data is only sent after a logged-in administrator saves a code.<\/p>\n\n<ol>\n<li><strong>Status.<\/strong> The dashboard widget and the plugin page request the latest test result from https:\/\/contactformchecker.com\/api\/status.php, sending your code and the address of this website. The result is cached for 30 minutes.<\/li>\n<li><strong>Registration.<\/strong> On saving the settings, each code is sent to https:\/\/contactformchecker.com\/api\/register.php with the address of this website and, when the CAPTCHA exception is on, the secret key of this site. With the option off, an empty key is sent so that any stored key is removed.<\/li>\n<li><strong>Ownership check.<\/strong> Right after a registration, Contactformchecker calls the endpoint contactformchecker\/v1\/verify on your own site with a random challenge, to confirm that the key is genuine. No personal data is returned.<\/li>\n<li><strong>Sign-up.<\/strong> The sign-up button opens contactformchecker.com in a new tab. Payment there takes place on Stripe Checkout, operated by Stripe.<\/li>\n<\/ol>\n\n<p><a href=\"https:\/\/contactformchecker.com\/terms\/\">Terms and conditions<\/a>\n<a href=\"https:\/\/contactformchecker.com\/privacy\/\">Privacy statement<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Sign up at https:\/\/contactformchecker.com\/ and complete the payment. You receive your code and instructions by email.<\/li>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Tools &gt; Contactformchecker and enter your code.<\/li>\n<li>If your form uses a CAPTCHA, tick \"Let the daily Contactformchecker test pass the CAPTCHA of my form\" and save.<\/li>\n<li>The dashboard widget shows the latest result after the next daily test.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>Yes, but it only works together with a paid Contactformchecker subscription of \u20ac10 per form per month or \u20ac100 per form per year. Without a code the plugin shows the sign-up button and nothing else.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20test%20my%20form%20itself%3F\"><h3>Does the plugin test my form itself?<\/h3><\/dt>\n<dd><p>No. The daily test is carried out by the Contactformchecker service from two fixed IP addresses. The plugin shows the result and, if you allow it, lets that test pass your CAPTCHA.<\/p><\/dd>\n<dt id=\"could%20spammers%20use%20the%20captcha%20exception%3F\"><h3>Could spammers use the CAPTCHA exception?<\/h3><\/dt>\n<dd><p>Not without the secret key of your site, which only your site and Contactformchecker know. The key is created on your site when you switch the option on, and it is stored at Contactformchecker only after your site has confirmed, through a small REST endpoint (contactformchecker\/v1\/verify), that the key is genuine. Every daily test carries an HMAC-SHA256 signature of the code, the time and the domain. The CAPTCHA is skipped only when the signature is valid for this site, is at most ten minutes old, has not been used before, names one of your saved codes, and that same code appears in the submitted form data. All other validation of your form plugin keeps working. Switching the option off removes the key at Contactformchecker.<\/p><\/dd>\n<dt id=\"my%20form%20uses%20a%20different%20captcha%20or%20form%20plugin\"><h3>My form uses a different CAPTCHA or form plugin<\/h3><\/dt>\n<dd><p>The service may still be able to test it in another way. Contactformchecker contacts you by email after sign-up if your form needs a different approach.<\/p><\/dd>\n<dt id=\"the%20plugin%20says%20the%20captcha%20exception%20could%20not%20be%20confirmed\"><h3>The plugin says the CAPTCHA exception could not be confirmed<\/h3><\/dt>\n<dd><p>Contactformchecker could not reach the REST API of your site. Some security plugins or firewalls block the WordPress REST API for visitors. Allow the route contactformchecker\/v1\/verify, save the settings again, or write to support@contactformchecker.com.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20my%20code%3F\"><h3>Where do I find my code?<\/h3><\/dt>\n<dd><p>In the welcome email you received after payment. It starts with CFC- followed by eight letters and numbers.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Renamed to ETM&amp;Y Contactformchecker \u2013 Website form monitoring, with the text domain etmy-contactformchecker.<\/li>\n<li>The plugin page now states that a paid Contactformchecker subscription is required.<\/li>\n<li>The code field shows an example with several codes, one per line.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Translations are now provided through translate.wordpress.org instead of bundled files.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Tested with WordPress 7.1.<\/li>\n<li>Bundled translations are loaded without load_plugin_textdomain().<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Security: Contactformchecker now confirms the site key with the site itself before storing or removing it.<\/li>\n<li>Security: each signed test submission can be used only once.<\/li>\n<li>The dashboard widget only appears once a code has been saved.<\/li>\n<li>Clear notice when the CAPTCHA exception could not be confirmed.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Short step-by-step guide at the top of the plugin page.<\/li>\n<li>Removed the redundant \"Manage\" link on the plugin page itself.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: dashboard status and a CAPTCHA exception for Contact Form 7, WPForms and Elementor Pro.<\/li>\n<\/ul>","raw_excerpt":"See the daily Contactformchecker test of your contact form on your dashboard, and let that one test pass the CAPTCHA on your form.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373590","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=373590"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/seadevil1977"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373590"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373590"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373590"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373590"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373590"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}