WordPress maintenance or security needs? Reach out!
TLDWP

Plugin: clean-and-simple-contact-form-by-meg-nicholas (Used by 47 domains)

Contact Form Clean and Simple

A clean and simple AJAX contact form with Google reCAPTCHA, flexible CSS framework support, spam filtering, and REST API support for headless WordPress implementations.

  • Clean: all user inputs are stripped in order to avoid cross-site scripting (XSS) vulnerabilities.

  • Simple: AJAX enabled validation and submission for immediate response and guidance for your users (can be switched off).

  • Flexible Styling: Choose your CSS framework – Bootstrap (default), Theme Native (inherits your theme’s styles), or Minimal (semantic classes for complete custom styling).

  • REST API Support: Enable headless WordPress implementations to submit forms via authenticated REST API endpoints.

  • Accessible: Built with accessibility in mind – proper ARIA attributes, keyboard navigation, screen reader support, and WCAG AA compliant color contrast.

This is a straightforward contact form for your WordPress site. There is very minimal set-up
required. Simply install, activate, and then place the short code [cscf-contact-form] on your web page.

A standard set of input boxes are provided, these include Email Address, Name, Message and a nice big ‘Send Message’ button.

When your user has completed the form an email will be sent to you containing your user’s message.
To reply simply click the ‘reply’ button on your email client.
The email address used is the one you have set up in WordPress under ‘Settings’ -> ‘General’, so do check this is correct.

To help prevent spam all data is scanned can be scanned with Fullworks Anti Spam Pro.
For this to work you must have the Fullworks Anti Spam Pro Plugin installed and activated.

Fullworks Anti Spam Pro will also log all your messages, categorized as spam or not, automatically.

For added piece of mind this plugin also allows you to add a ‘reCAPTCHA’.
This adds a picture of a couple of words to the bottom of the contact form.
Your user must correctly type the words before the form can be submitted, and in so doing, prove that they are human.

Why Choose This Plugin?

Granted there are many plugins of this type in existence already. Why use this one in-particular?

Here’s why:

  • Minimal setup. Simply activate the plugin and place the shortcode [cscf-contact-form] on any post or page.

  • Safe. All input entered by your user is stripped back to minimise as far as possible the likelihood of any
    malicious user attempting to inject a script into your website.
    If the Fullworks Anti Spam Pro plugin is activated all form data will be scanned for spam.
    You can turn on reCAPTCHA to avoid your form being abused by bots, however Fullworks Anti Spam Pro will do this without reCAPTCHA.

  • Ajax enabled. You have the option to turn on AJAX (client-side) validation and submission which gives your users an immediate response when completing the form without having to wait for the page to refresh.

  • The form can integrate seamlessly into your website. Turn off the plugin’s default css style sheet so that your theme’s style sheet can be used instead.

  • Flexible CSS styling: Choose from Bootstrap, Modern (with dark mode), Theme Native, or Minimal styling modes to match your site’s design.

  • This plugin will only link in its jQuery file where it’s needed, it will not impose itself on every page of your whole site!

  • Works with the latest version of WordPress.

  • Original plugin written by an experienced PHP programmer, Megan Nicholas, the code is rock solid, safe, and rigorously tested as standard practice.

  • Headless WordPress ready. REST API support allows you to submit forms from decoupled frontends, mobile apps, or any external application with proper authentication.

Hopefully this plugin will fulfil all your needs.

PHP 8 Ready

Tested on PHP 8.4

How to Use

Unless you want to change messages or add reCAPTCHA to your contact form then this plugin will work out of the box without any additional setup.

Important: Check that you have an email address set-up in your WordPress ‘Settings’->’General’ page. This is the address that the plugin will use to send the contents of the contact form.

To add the contact form to your WordPress website simply place the shortcode [cscf-contact-form] on the post or page that you wish the form to appear on.

If you have Jetpack plugin installed disable the contact form otherwise the wrong form might display.

Additional Settings

This plugin will work out of the box without any additional setup. You have the option to change the default messages that are displayed to your user and to add reCAPTCHA capabilities.

Go to the settings screen for the contact form plugin.

You will find a link to the setting screen against the entry of this plugin on the ‘Installed Plugins’ page.

Here is a list of things that you can change

  • Message: The message displayed to the user at the top of the contact form.

  • Message Sent Heading: The message heading or title displayed to the user after the message has been sent.

  • Message Sent Content: The message content or body displayed to the user after the message has been sent.

  • CSS Framework: Choose how the form is styled:

    • Bootstrap (Default): Uses Bootstrap CSS classes for full Bootstrap compatibility. Best for themes already using Bootstrap.
    • Modern (Card style): A beautiful, opinionated modern design with card-style layout, large inputs, and CSS variables for easy customization. Includes automatic dark mode support.
    • Theme Native: Uses minimal classes with WordPress’s wp-element-button for the submit button. The form inherits your theme’s native form styles.
    • Minimal: Uses semantic CSS classes only (cscf-field, cscf-input, etc.) for complete custom styling control.
  • Use this plugin’s default stylesheet: The plugin comes with a default style sheet to make the form look nice for your user. Untick this if you want to use your theme’s stylesheet instead. The default stylesheet will simply not be linked in. This option is most relevant when using the Bootstrap CSS framework.

  • Use client side validation (Ajax): When ticked the contact form will be validated and submitted on the client giving your user instant feedback if they have filled the form in incorrectly. If you wish the form to be validated and submitted only to the server then untick this option.

  • Use reCAPTCHA: Tick this option if you wish your form to have a reCAPTCHA box. ReCAPTCHA helps to avoid spam bots using your form by checking that the form filler is actually a real person. To use reCAPTCHA you will need to get a some special keys from google https://www.google.com/recaptcha/admin/create. Once you have your keys enter them into the Public key and Private key boxes

  • reCAPTCHA Public Key: Enter the public key that you obtained from here.

  • reCAPTCHA Private Key: Enter the private key that you obtained from here.

  • reCAPTCHA Theme: Here you can change the reCAPTCHA box theme so that it fits with the style of your website.

  • Recipient Emails: The email address where you would like all messages to be sent.
    This will default to the email address you have specified under ‘E-Mail Address’ in your WordPress General Settings.
    If you want your mail sent to a different address then enter it here.
    You may enter multiple email addresses by clicking the ‘+’ button.

  • Confirm Email Address: Email confirmation is now optional. To force your user to re-type their email address tick ‘Confirm Email Address’.
    It is recommended that you leave this option on. If you turn this option off your user will only have to enter their email address once,
    but if they enter it incorrectly you will have no way of getting back to them!

  • Email Subject: This is the email subject that will appear on all messages. If you would like to set it to something different then enter it here.

  • Override ‘From’ Address: If you tick this and then fill in the ‘From Address:’ box then all email will be sent from the given address NOT from the email address given by the form filler.

  • **Option to allow enquiry to email themselves a copy of the message.

  • Contact consent: This option allows you to be GDPR compliant by adding a ‘Consent to contact’ check box at the bottom of the form.

  • Enable REST API: Turn on REST API support to allow headless WordPress implementations to submit forms.

  • Required User Capability: Set the minimum WordPress user capability required to use the REST API (default: edit_posts).

REST API for Headless WordPress

This plugin includes REST API support, making it perfect for headless WordPress implementations, mobile applications, and decoupled frontend frameworks like React, Vue.js, or Angular.

Enabling REST API

  1. Go to the plugin settings page
  2. Find the “REST API Settings” section
  3. Check “Enable REST API”
  4. Set the required user capability (default: edit_posts)
  5. Save your settings

API Endpoint

POST /wp-json/cscf/v1/submit

Authentication

The REST API requires WordPress user authentication. Users must be logged in and have the capability specified in settings (default: edit_posts).

For headless implementations, you can use:
– Application Passwords (WordPress 5.6+)
– JWT Authentication plugins
– OAuth plugins
– Basic Authentication (development only)

Request Format

Send a POST request with JSON body:

`json

{
“name”: “John Doe”,
“email”: “[email protected]”,
“confirm_email”: “[email protected]”,
“message”: “Your message here”,
“phone_number”: “+1234567890”,
“contact_consent”: true,
“email_sender”: false,
“post_id”: 123
}
`

Required fields:
name: Sender’s name
email: Sender’s email address
message: The message content

Optional fields:
confirm_email: Required if email confirmation is enabled in settings
phone_number: Required if phone number is set as mandatory in settings
contact_consent: Required if contact consent is enabled in settings
email_sender: Set to true to send a copy to the sender
post_id: The ID of the page/post where the form would normally be displayed

Response Format

Success Response (200):
json
{
"success": true,
"message": "Message Sent"
}

Validation Error Response (400):
json
{
"code": "validation_failed",
"message": "Validation failed.",
"data": {
"status": 400,
"errors": {
"email": "Please enter a valid email address.",
"message": "Please enter a message."
}
}
}

Authentication Error Response (401):
json
{
"code": "rest_forbidden",
"message": "Authentication required.",
"data": {
"status": 401
}
}

Example Implementation

JavaScript (fetch API):
`javascript
const formData = {
name: “John Doe”,
email: “[email protected]”,
confirm_email: “[email protected]”,
message: “This is a test message from the REST API”
};

fetch(‘https://yoursite.com/wp-json/cscf/v1/submit’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘Authorization’: ‘Bearer YOUR_AUTH_TOKEN’
},
body: JSON.stringify(formData)
})
.then(response => response.json())
.then(data => {
if (data.success) {
console.log(‘Message sent successfully!’);
} else {
console.error(‘Validation errors:’, data.data.errors);
}
});
`

Important Notes

  • REST API is disabled by default for security
  • reCAPTCHA is bypassed for REST API submissions (authentication provides security)
  • All other form validations and spam filtering still apply
  • Form submissions via REST API are processed identically to regular submissions
  • Email notifications work the same way as standard form submissions

Demo

Demo site coming soon.

DomainExposuresHeadersLast Checked
b*n*s*b*r*.com (WP 5.7.17) F Aug 24, 2026
w*s*m*d*a*r*p*e.com F Aug 24, 2026
e*o*s*u*p*u*e.com (WP 5.0.27) F Aug 22, 2026
l*i*h*u*t*r*o*.com F Aug 20, 2026
a*n*e*d*e*t*r*s.c*.uk F Aug 19, 2026
a*n*s*e*d*l.com (WP 3.8) F Aug 19, 2026
a*n*j*n*e.de (WP 3.8) F Aug 19, 2026
d*m*c*n*.com (WP 7.0.4) F Aug 18, 2026
c*r*u*-*r*n*n*e*.nl (WP 7.0.4) C Aug 15, 2026
s*r*t*g*c*n*r*a*i*e.net F Aug 4, 2026
b*b*a*h*k*r*n*.com (WP 4.7.29) F Aug 1, 2026
m*r*u*y*r*e*d*n*i*t*y.com (WP 7.0.2) F Jul 31, 2026
f*e*c*o*g*u*h*r*o*d.com (WP 7.0.2) C Jul 31, 2026
c*l*v*r*s.be F Jul 28, 2026
p*e*o*a*a.com (WP 5.3.21) F Jul 27, 2026
p*a*j*l*l*u*t*a*i*n*.com F Jul 27, 2026
a*o*n*o*o*.com (WP 7.0.2) F Jul 26, 2026
j*y*o*d*r*i*c.com (WP 5.2.21) F Jul 26, 2026
v*k*i*l*o.com (WP 6.9.5) F Jul 25, 2026
h*s*i*e*d*n*a*.com (WP 7.0.2) F Jul 24, 2026
p*t*o*l*w.com (WP 7.0) F Jul 23, 2026
a*r*a*a*m*k*u*.de (WP 4.4.34) F Jul 22, 2026
i*a*a*t*a*k*.com (WP 5.2.24) F Jul 22, 2026
e*a*o*i*a.com (WP 6.9.4) F Jul 21, 2026
m*n*a*p*l*t*.com (WP 5.5.18) F Jul 20, 2026
a*p*i*n*e*u*s*f*.com (WP 7.0.2) D Jul 19, 2026
k*p*w*r*-*a*r*t*d*o.com F Jul 19, 2026
c*r*i*u*-*e*.de (WP 6.7.5) F Jul 17, 2026
e*p*r*d*o*o*d*z.com (WP 6.9.4) F Jul 17, 2026
t*o*h*e*-*o*m*n*c*t*o*.com F Jul 17, 2026
d*p*r*m*n*o*p*r*u*s*o*.com (WP 6.9.4) F Jul 15, 2026
m*t*s*h*o*s.com F Jul 15, 2026
s*e*e*.com (WP 7.0.1) F Jul 15, 2026
a*o*c*r*m*n*e*.com (WP 7.0.1) F Jul 14, 2026
z*e*s*y*e.com (WP 6.7.4) C Jul 14, 2026
s*i*h*l*d*s*.com (WP 6.2.9) F Jul 12, 2026
t*o*o*e*f*l*s.com (WP 6.7) F Jul 11, 2026
k*t*m*o*.com (WP 6.7.4) C Jul 10, 2026
j*h*b*d*e*a*.com (WP 7.0.1) F Jul 10, 2026
j*e*s*n*e*s*d*.com (WP 7.0.1) F Jul 10, 2026
w*n*-*a*d*r*r.com F Jul 8, 2026
a*e*o*a*a*o*.com F Jul 8, 2026
j*m*e*i*.tv (WP 7.0) D Jul 8, 2026
c*p*o*f.nl D Jul 8, 2026
m*i*b*n*f*l*t.com (WP 4.3.34) F Jul 7, 2026
p*e*a*n*a*r*l.pl (WP 5.2.21) F Jul 7, 2026
g*z*o*r*d*c*i*n*.com (WP 5.2.21) F Jul 6, 2026

Top 50 Plugins

Plugin Count
elementor 1,752,269
contact-form-7 1,734,913
elementor-pro 1,042,969
woocommerce 809,301
revslider 600,598
jetpack 449,628
js_composer 413,971
wp-rocket 336,041
essential-addons-for-elementor-lite 261,383
gravityforms 254,924
complianz-gdpr 253,919
google-site-kit 234,164
cookie-law-info 225,784
instagram-feed 221,890
sitepress-multilingual-cms 208,071
header-footer-elementor 203,584
google-analytics-for-wordpress 202,140
bluehost-wordpress-plugin 191,353
elementskit-lite 177,076
gutenberg 168,426
cookie-notice 146,605
litespeed-cache 145,566
gutenberg-core 126,202
gtranslate 122,354
the-events-calendar 121,357
wpforms-lite 121,140
astra-sites 110,947
popup-maker 108,105
woocommerce-payments 107,897
tablepress 101,709
honeypot 97,446
astra-addon 92,629
coblocks 92,193
duracelltomi-google-tag-manager 89,623
wp-smushit 89,524
layerslider 87,724
all-in-one-seo-pack 87,488
bb-plugin 85,659
akismet 83,989
premium-addons-for-elementor 82,644
ml-slider 82,288
cleantalk-spam-protect 81,255
mailchimp-for-wp 80,293
megamenu 79,514
jet-engine 77,267
ewww-image-optimizer 76,708
wp-pagenavi 76,276
fusion-builder 76,156
woocommerce-gateway-stripe 75,270
smart-slider-3 75,073

Top 50 Themes

Theme Count
hello-elementor 615,636
Divi 489,356
astra 408,710
flatsome 143,174
Avada 119,640
generatepress 113,787
pub 87,837
oceanwp 79,196
kadence 78,004
enfold 67,704
salient 64,296
twentyseventeen 53,768
twentytwentyfour 52,603
bb-theme 52,472
betheme 52,125
blocksy 50,378
cocoon-master 49,045
twentytwentyfive 45,433
dt-the7 44,982
woodmart 44,663
h4 43,939
neve 37,567
Avada-Child-Theme 36,657
gox 36,181
bridge 30,725
lightning 30,035
twentytwentyone 29,878
twentytwenty 28,365
swell 28,169
bricks 26,622
Impreza 25,820
Newspaper 23,905
twentytwentythree 21,758
epik-redesign 18,971
twentytwentytwo 18,529
uncode 18,234
twentysixteen 17,516
pro 17,439
storefront 16,051
sydney 15,979
Total 14,211
hello-theme-child-master 13,884
factory-templates-4 13,807
themify-ultra 12,852
hestia 12,436
yootheme 12,375
yith-wonder 11,928
extendable 11,903
porto 11,785
jupiter 11,725