{"id":31257,"date":"2014-08-20T20:01:17","date_gmt":"2014-08-20T20:01:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/fws-ajax-contact-form\/"},"modified":"2026-09-20T13:03:42","modified_gmt":"2026-09-20T13:03:42","slug":"fws-ajax-contact-form","status":"publish","type":"plugin","link":"https:\/\/es-ar.wordpress.org\/plugins\/fws-ajax-contact-form\/","author":250087,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.3","stable_tag":"1.6.3","tested":"7.1.2","requires":"5.4","requires_php":"8.0","requires_plugins":null,"header_name":"Simple Contact Form","header_author":"Olaf Lederer","header_description":"","assets_banners_color":"575250","last_updated":"2026-09-20 13:03:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.olaflederer.com\/","rating":0,"author_block_rating":0,"active_installs":20,"downloads":16920,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"finalwebsites","date":"2014-08-20 20:05:56","revision":969233},"1.0.1":{"tag":"1.0.1","author":"finalwebsites","date":"2014-08-21 07:55:37","revision":969448},"1.0.2":{"tag":"1.0.2","author":"finalwebsites","date":"2014-08-22 15:26:53","revision":970783},"1.0.2.1":{"tag":"1.0.2.1","author":"finalwebsites","date":"2014-10-13 07:43:32","revision":1006374},"1.0.3":{"tag":"1.0.3","author":"finalwebsites","date":"2014-10-21 07:26:30","revision":1011201},"1.0.4":{"tag":"1.0.4","author":"finalwebsites","date":"2015-04-27 09:33:32","revision":1146857},"1.2.6":{"tag":"1.2.6","author":"finalwebsites","date":"2025-01-27 08:28:04","revision":3229227},"1.3.0":{"tag":"1.3.0","author":"finalwebsites","date":"2025-02-09 19:55:26","revision":3237479},"1.3.0.1":{"tag":"1.3.0.1","author":"finalwebsites","date":"2025-02-10 08:46:50","revision":3237733},"1.4.0":{"tag":"1.4.0","author":"finalwebsites","date":"2025-02-21 19:35:25","revision":3244657},"1.4.1":{"tag":"1.4.1","author":"finalwebsites","date":"2025-02-25 07:48:03","revision":3246232},"1.4.2":{"tag":"1.4.2","author":"finalwebsites","date":"2025-03-21 07:33:06","revision":3259551},"1.4.3":{"tag":"1.4.3","author":"finalwebsites","date":"2025-03-31 06:30:22","revision":3264235},"1.5.0":{"tag":"1.5.0","author":"finalwebsites","date":"2025-06-07 05:49:08","revision":3307766},"1.5.1":{"tag":"1.5.1","author":"finalwebsites","date":"2025-05-01 07:01:41","revision":3285407},"1.5.2":{"tag":"1.5.2","author":"finalwebsites","date":"2025-06-07 05:49:08","revision":3307766},"1.5.3":{"tag":"1.5.3","author":"finalwebsites","date":"2025-07-15 19:18:00","revision":3328478},"1.5.4":{"tag":"1.5.4","author":"finalwebsites","date":"2025-08-01 19:16:08","revision":3337991},"1.5.5":{"tag":"1.5.5","author":"finalwebsites","date":"2025-10-05 19:23:49","revision":3373250},"1.5.5.1":{"tag":"1.5.5.1","author":"finalwebsites","date":"2025-10-05 19:53:20","revision":3373253},"1.5.6":{"tag":"1.5.6","author":"finalwebsites","date":"2025-10-29 18:22:14","revision":3386612},"1.6.0":{"tag":"1.6.0","author":"finalwebsites","date":"2026-09-13 17:32:55","revision":3694008},"1.6.1":{"tag":"1.6.1","author":"finalwebsites","date":"2026-09-17 14:42:59","revision":3700457},"1.6.2":{"tag":"1.6.2","author":"finalwebsites","date":"2026-09-17 21:02:12","revision":3700985},"1.6.3":{"tag":"1.6.3","author":"finalwebsites","date":"2026-09-20 13:03:42","revision":3704277}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2457787,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2457787,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":2457787,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":2457787,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"ajax-contact-form\/form":{"name":"ajax-contact-form\/form","title":"Simple Contact Form"}},"tagged_versions":["1.0","1.0.1","1.0.2","1.0.2.1","1.0.3","1.0.4","1.2.6","1.3.0","1.3.0.1","1.4.0","1.4.1","1.4.2","1.4.3","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.5.5","1.5.5.1","1.5.6","1.6.0","1.6.1","1.6.2","1.6.3"],"block_files":[],"assets_screenshots":{"Screenshot-2.jpg":{"filename":"Screenshot-2.jpg","revision":3704277,"resolution":"2","location":"assets","locale":"","width":1790,"height":1612},"Screenshot-3.jpg":{"filename":"Screenshot-3.jpg","revision":3704277,"resolution":"3","location":"assets","locale":"","width":1624,"height":1850},"Screenshot-4.jpg":{"filename":"Screenshot-4.jpg","revision":3704277,"resolution":"4","location":"assets","locale":"","width":1832,"height":1836},"Screenshot-5.jpg":{"filename":"Screenshot-5.jpg","revision":3386612,"resolution":"5","location":"assets","locale":"","width":1474,"height":1212},"Screenshot-6.jpg":{"filename":"Screenshot-6.jpg","revision":3704277,"resolution":"6","location":"assets","locale":"","width":1236,"height":1812},"Screenshot-7.jpg":{"filename":"Screenshot-7.jpg","revision":3704277,"resolution":"7","location":"assets","locale":"","width":1728,"height":1420},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3704277,"resolution":"1","location":"assets","locale":"","width":1334,"height":1354}},"screenshots":{"1":"An example of a contact form.","2":"Plugin settings.","3":"Default form settings.","4":"The new form\/post interface.","5":"Example post for the submission storage.","6":"Create the responder mail message.","7":"Advanced spam settings."}},"plugin_section":[],"plugin_tags":[1985,109,358,26736,601],"plugin_category":[41,42,59],"plugin_contributors":[86458],"plugin_business_model":[],"class_list":["post-31257","plugin","type-plugin","status-publish","hentry","plugin_tags-accessible","plugin_tags-antispam","plugin_tags-contact-form","plugin_tags-email-log","plugin_tags-forms","plugin_category-communication","plugin_category-contact-forms","plugin_category-utilities-and-tools","plugin_contributors-finalwebsites","plugin_committers-finalwebsites"],"banners":{"banner":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/banner-772x250.jpg?rev=2457787","banner_2x":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/banner-1544x500.jpg?rev=2457787","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/icon-128x128.png?rev=2457787","icon_2x":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/icon-256x256.png?rev=2457787","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/screenshot-1.jpg?rev=3704277","caption":"An example of a contact form."},{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/Screenshot-2.jpg?rev=3704277","caption":"Plugin settings."},{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/Screenshot-3.jpg?rev=3704277","caption":"Default form settings."},{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/Screenshot-4.jpg?rev=3704277","caption":"The new form\/post interface."},{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/Screenshot-5.jpg?rev=3386612","caption":"Example post for the submission storage."},{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/Screenshot-6.jpg?rev=3704277","caption":"Create the responder mail message."},{"src":"https:\/\/ps.w.org\/fws-ajax-contact-form\/assets\/Screenshot-7.jpg?rev=3704277","caption":"Advanced spam settings."}],"raw_content":"<!--section=description-->\n<p>Most WordPress websites only need a simple contact form. You shouldn't have to use a complex form builder just to receive a message from your website.<\/p>\n\n<p>Simple Contact Form makes it easy to add an accessible contact form to your WordPress website in minutes. It includes effective built-in spam protection and works without complicated setup or unnecessary features.<\/p>\n\n<p>Everything you need for a regular contact form is included for free. There is no premium version and no paid extensions.<\/p>\n\n<p>Add your contact form using the block editor or a shortcode and you're ready to receive messages.<\/p>\n\n<h3>Why use Simple Contact Form?<\/h3>\n\n<h4>Easy to use<\/h4>\n\n<p>Create and add a contact form to your website in minutes, without learning how to use a complex form builder.<\/p>\n\n<h4>Accessible by default<\/h4>\n\n<p>Accessibility is built into your contact form, with proper labels, keyboard support and accessible validation.<\/p>\n\n<h4>Effective spam protection<\/h4>\n\n<p>Multiple built-in spam checks help stop unwanted messages without making it harder for real visitors to contact you.<\/p>\n\n<h4>Never lose a contact request<\/h4>\n\n<p>Contact form submissions can be stored in WordPress, so you're not relying on email delivery alone.<\/p>\n\n<h4>Lightweight by design<\/h4>\n\n<p>CSS and JavaScript are only loaded on pages that contain a contact form, keeping unnecessary assets away from the rest of your website.<\/p>\n\n<p><strong>Ready to add a simple contact form to your website? Install Simple Contact Form and have your first contact form running in minutes.<\/strong><\/p>\n\n<h3>What's behind a simple contact form?<\/h3>\n\n<p>Curious about what makes Simple Contact Form work? Here's a little secret: behind the scenes, it isn't quite as simple as the name suggests.<\/p>\n\n<p>The plugin and the way it handles contact form submissions are based on years of building websites for clients and testing different ways to keep contact form spam out. Many of the features below exist because they solved real problems on real websites.<\/p>\n\n<p>You don't need to understand or configure most of them to create a contact form. But if you want to know what's happening behind the scenes, here's what Simple Contact Form takes care of for you.<\/p>\n\n<h4>Accessibility<\/h4>\n\n<p>Your contact form should be easy to use for everyone. Accessibility is built into Simple Contact Form by default, so you don't have to configure it separately.<\/p>\n\n<ul>\n<li><strong>Accessible form structure<\/strong> \u2013 Contact forms use proper labels and accessible HTML markup.<\/li>\n<li><strong>Accessible validation<\/strong> \u2013 Clear validation and error messages help visitors complete the form correctly.<\/li>\n<li><strong>Keyboard friendly<\/strong> \u2013 Visitors can complete and submit the contact form without using a mouse.<\/li>\n<li><strong>Works without JavaScript<\/strong> \u2013 The contact form remains functional when JavaScript is unavailable.<\/li>\n<\/ul>\n\n<h4>Anti-spam<\/h4>\n\n<p>Spam protection shouldn't make it harder for real visitors to contact you. Simple Contact Form uses several built-in checks that work quietly in the background.<\/p>\n\n<ul>\n<li><strong>Invisible spam protection<\/strong> \u2013 Multiple checks help identify automated submissions without requiring visitors to solve a CAPTCHA.<\/li>\n<li><strong>Honeypot protection<\/strong> \u2013 Hidden fields help detect bots without affecting normal visitors.<\/li>\n<li><strong>Submission checks<\/strong> \u2013 Additional checks help distinguish genuine contact form submissions from automated spam.<\/li>\n<li><strong>Spam log<\/strong> \u2013 See what was blocked, why it was blocked and which spam checks are most effective.<\/li>\n<li><strong>Optional extra protection<\/strong> \u2013 Add Cloudflare Turnstile or WP Armour when additional protection is needed.<\/li>\n<\/ul>\n\n<blockquote>\n  <p><strong>Good spam protection isn't just about blocking spam.<\/strong><\/p>\n  \n  <p>An anti-spam solution can also block legitimate contact requests. Most website owners only discover this when someone reaches out another way to say their message didn't get through \u2014 and you'll never know how many others simply gave up.<\/p>\n  \n  <p>That's why Simple Contact Form keeps a spam log. It lets you see what was blocked and why, so you can check for false positives and adjust your spam protection when needed.<\/p>\n<\/blockquote>\n\n<h4>Easy to use<\/h4>\n\n<p>Simple Contact Form is made for contact forms, not for building complex applications. The plugin keeps setup and day-to-day management straightforward.<\/p>\n\n<ul>\n<li><strong>Quick setup<\/strong> \u2013 Create and publish a contact form without working through pages of settings.<\/li>\n<li><strong>Block or shortcode<\/strong> \u2013 Add your contact form with the block editor or use a shortcode wherever you need it.<\/li>\n<li><strong>Flexible styling<\/strong> \u2013 Use the complete SCF design, only the essential layout styles, or let your theme handle the appearance of the contact form.<\/li>\n<li><strong>Email notifications<\/strong> \u2013 Receive submitted contact messages directly by email.<\/li>\n<li><strong>Professional responder emails<\/strong> \u2013 Create and format HTML confirmation emails using the familiar WordPress editor.<\/li>\n<li><strong>Stored submissions<\/strong> \u2013 Keep contact form submissions in WordPress so messages aren't only available by email.<\/li>\n<\/ul>\n\n<h4>Integrations &amp; advanced options<\/h4>\n\n<p>Need a little more? Simple Contact Form includes optional integrations and advanced features without making them part of the basic setup.<\/p>\n\n<ul>\n<li><strong>Cloudflare Turnstile and WP Armour<\/strong> \u2013 Add additional anti-spam protection when needed.<\/li>\n<li><strong>Maileroo<\/strong> \u2013 Verify email addresses before accepting contact form submissions.<\/li>\n<li><strong>Country blocking<\/strong> \u2013 Use Country.is to block contact form submissions from selected countries.<\/li>\n<li><strong>Tracking options<\/strong> \u2013 Track successful contact form submissions when you need conversion data.<\/li>\n<li><strong>Developer friendly<\/strong> \u2013 Hooks are available for developers who want to customize or extend the contact form.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p>The quickest method for installing the contact form is:<\/p>\n\n<ol>\n<li>Install the plugin using the built-in WordPress plugin installer, or upload the entire <code>fws-ajax-contact-form<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Open Contact form &gt; Settings and configure the required options.<\/li>\n<li>Create a form and add it to a page using the block editor or the shortcode <code>[fws_contact_form id=\"X\"]<\/code>, where X is the ID of the form.<\/li>\n<li>Optionally create a responder email and select it in the form settings.<\/li>\n<\/ol>\n\n<p>Visit <a href=\"https:\/\/www.finalwebsites.com\/ajax-contact-form-wordpress\/\">our website<\/a> for additional information.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20contact%20form%20work%20without%20javascript%3F\"><h3>Does the contact form work without JavaScript?<\/h3><\/dt>\n<dd><p>That depends on the selected submission method.<\/p>\n\n<p>The \"AJAX with a non-JavaScript fallback\" mode submits the form using AJAX when JavaScript is available. Without JavaScript, the form is submitted through the regular WordPress form handler.<\/p>\n\n<p>The \"AJAX only - JavaScript required\" mode does not accept submissions without JavaScript.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20the%20accessible%20challenge%20and%20cloudflare%20turnstile%3F\"><h3>What is the difference between the accessible challenge and Cloudflare Turnstile?<\/h3><\/dt>\n<dd><p>The accessible challenge is generated by the plugin and does not require an external service or JavaScript.<\/p>\n\n<p>Cloudflare Turnstile is an optional external spam protection service. It requires JavaScript in the visitor's browser and valid Turnstile site and secret keys.<\/p>\n\n<p>When the non-JavaScript fallback is enabled, an accessible challenge can be used to protect submissions made without JavaScript.<\/p><\/dd>\n<dt id=\"which%20information%20is%20shared%20with%20external%20services%3F\"><h3>Which information is shared with external services?<\/h3><\/dt>\n<dd><p>External requests are only made when the corresponding option is enabled.<\/p>\n\n<p>Country.is receives the visitor's IP address when country blocking is configured. Maileroo receives the submitted email address when email verification is enabled. Cloudflare receives the Turnstile verification data when Turnstile is configured.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20maileroo%20email%20verification%20and%20the%20maileroo%20smtp%20plugin%3F\"><h3>What is the difference between Maileroo email verification and the Maileroo SMTP plugin?<\/h3><\/dt>\n<dd><p>Maileroo email verification checks whether a submitted email address can be accepted. The <a href=\"https:\/\/wordpress.org\/plugins\/simple-smtp-by-maileroo\/\">Maileroo SMTP plugin<\/a> is a separate plugin that can deliver WordPress emails through Maileroo. Either feature can be used independently.<\/p><\/dd>\n<dt id=\"what%20should%20i%20do%20when%20the%20spam%20log%20file%20cannot%20be%20created%3F\"><h3>What should I do when the spam log file cannot be created?<\/h3><\/dt>\n<dd><p>The plugin uses standard file permissions for its spam log. If your hosting environment requires different permissions, ask your hosting provider which file permission should be used.<\/p>\n\n<p>You can define <code>FWSACF_CHMOD_FILE<\/code> in <code>wp-config.php<\/code> using the value recommended by your hosting provider.<\/p><\/dd>\n<dt id=\"how%20to%20add%20a%20manual%20goal%20in%20clicky%3F\"><h3>How to add a manual goal in Clicky?<\/h3><\/dt>\n<dd><p>If you use a Clicky premium plan it's possible to track Goals.<\/p>\n\n<ol>\n<li>In Clicky, go to Goals &gt; Setup &gt; Create a new goal.<\/li>\n<li>Enter a name for the goal<\/li>\n<li>Check the \"Manual Goal\" checkbox and click Submit<\/li>\n<li>Copy\/paste the ID into the field from the plugin options page<\/li>\n<\/ol><\/dd>\n<dt id=\"how%20to%20use%20the%20%22fwsacf_after_success_form%22%20action%20hook%3F\"><h3>How to use the \"fwsacf_after_success_form\" action hook?<\/h3><\/dt>\n<dd><p>Use the following action hook in your theme's function.php file. For example you can submit the email address and name to your CRM or email marketing system to send out some follow up emails.<\/p>\n\n<pre><code>    add_action('fwsacf_after_success_form', function($form) {\n            \/\/ Your code here...\n            \/\/ and use the array values $form['email'] and $form['name'] where needed\n        });\n<\/code><\/pre><\/dd>\n<dt id=\"how%20to%20use%20the%20dynamic%20subject%20feature%3F\"><h3>How to use the dynamic subject feature?<\/h3><\/dt>\n<dd><p>Using this feature is easy, just add the subject text as query string to the page URL where your contact form is located, for example: https:\/\/domain.com\/contact\/?dynsubject=yourtexthere<\/p><\/dd>\n<dt id=\"how%20can%20i%20report%20security%20bugs%3F\"><h3>How can I report security bugs?<\/h3><\/dt>\n<dd><p>You can report security bugs through the Patchstack Vulnerability Disclosure Program. The Patchstack team help validate, triage and handle any security vulnerabilities. <a href=\"https:\/\/patchstack.com\/database\/wordpress\/plugin\/fws-ajax-contact-form\/vdp\">Report a security vulnerability.<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.3<\/h4>\n\n<ul>\n<li>Enhancement\n\n<ul>\n<li>Fixed Cloudflare Turnstile validation before AJAX form submissions.<\/li>\n<li>Improved Turnstile token handling and widget reset behavior.<\/li>\n<li>Improved the responsive display of the Turnstile widget on mobile devices.<\/li>\n<li>Improved feedback and submission handling when JavaScript is disabled in AJAX-only mode.<\/li>\n<li>Added full, essential and theme-controlled form styling options, with improved responsive layouts and consistent appearance across popular WordPress themes.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.6.2<\/h4>\n\n<ul>\n<li>Enhancement\n\n<ul>\n<li>The required honeypot CSS is now added automatically and only on pages containing a contact form.<\/li>\n<\/ul><\/li>\n<li>Bug fixes\n\n<ul>\n<li>Fixed a fatal error in the block editor caused by a remaining call to the removed FWS_get_forms() function.<\/li>\n<li>Fixed the contact form block integration and restored the form selector and editor preview.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Enhancement\n\n<ul>\n<li>Added an option to remove all plugin settings and stored data during uninstall. Plugin data is preserved by default.<\/li>\n<\/ul><\/li>\n<li>Other\n\n<ul>\n<li>Changed the name from Ajax Conact Form into Simple Contact Form<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li><p>Enhancements<\/p>\n\n<ul>\n<li>Added a choice between AJAX submission with a non-JavaScript fallback and AJAX-only submission.<\/li>\n<li>Rebuilt the form processing flow using separate classes for requests, validation, spam protection, submissions and email delivery.<\/li>\n<li>Rebuilt the administration code for forms, responders, submissions, settings and spam logs.<\/li>\n<li>Improved the order and separation of spam checks.<\/li>\n<li>Improved the integration between Cloudflare Turnstile and the accessible form challenge.<\/li>\n<li>Improved required-field validation for optional form fields.<\/li>\n<li>Added structured error codes for failed validation and spam checks.<\/li>\n<li>Improved the spam log dashboard and added a protected log download.<\/li>\n<li>Added logging for submissions blocked by country.<\/li>\n<li>Improved the HTML templates for administrator and responder emails.<\/li>\n<li>Added a mail transport interface to support future email delivery integrations.<\/li>\n<li>Improved support for multiple recipients, responder Bcc addresses and custom mail headers.<\/li>\n<li>Improved the settings page and tab navigation.<\/li>\n<li>Improved the form, responder and submission management screens.<\/li>\n<\/ul><\/li>\n<li><p>Bug fixes<\/p>\n\n<ul>\n<li>Fixed header warnings caused by setting the form load-time cookie too late.<\/li>\n<li>Fixed missing form configuration values for the challenge and optional fields.<\/li>\n<li>Fixed administrator emails being sent without the HTML email template.<\/li>\n<li>Fixed several missing or duplicated components left over from the procedural implementation.<\/li>\n<li>Fixed translation loading being triggered before the WordPress init action.<\/li>\n<li>Fixed settings fields not being displayed or saved correctly.<\/li>\n<li>Fixed validation and display of responder email fields.<\/li>\n<li>Fixed the spam log file permission handling.<\/li>\n<\/ul><\/li>\n<li><p>Other<\/p>\n\n<ul>\n<li>Removed the hCaptcha integration.<\/li>\n<li>Refactored most procedural plugin code into reusable and testable classes.<\/li>\n<\/ul><\/li>\n<\/ul>","raw_excerpt":"Simple contact forms that are easy to set up and style, accessible by default, with effective built-in spam protection.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/31257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=31257"}],"author":[{"embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/finalwebsites"}],"wp:attachment":[{"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=31257"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=31257"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=31257"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=31257"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=31257"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=31257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}