Plugin Directory

Essential Form – The lightest plugin for contact forms, ultra lightweight and no spam

Essential Form – The lightest plugin for contact forms, ultra lightweight and no spam


Use the shortcode [essential_form] where you want a contact form with the fields: name, email, message, and agreement checkbox.

Essential Form has a very powerful inbuilt anti-spam system that will block all the robots. It will not be possible for robots to send you spam. Only humans will be able to do it manually.

Most of the time, in your contact form you just need the fields name, email, message, and an agreement checkbox. If you need more, this plugin is not for you. In that case install a Contact Form plugin like Contact Form 7.

Essential Form adds no HTTP requests. It consumes zero. When we say it’s the lightest contact form we are not joking at all.

L’intero zip del plugin è di 14 kB. Nella pagina dove inserisci lo shortcode aggiunge un minuscolo script di puro Vanilla JavaScript che è di circa 1 kilobyte. Nelle pagine dove non ci sono moduli di contatto, ovviamente, questo non esiste.

No jQuery, no libraries, nothing of this kind of bloated stuff.

The anti-spam system runs behind the scenes in a very clever way without the need for any annoying captcha or other similar systems which some times even fail.

Giusto per dare un’idea del livello di sicurezza del plugin, il nome dell’azione Ajax che si occupa dell’invio dell’email è una cosa del tipo essential_form_fbe52b696, dove l’ultima parte è diversa su ogni sito.

I robot non saranno mai in grado di indovinare i nomi delle funzioni coinvolte durante il processo.

Inoltre, il processo di invio si basa su un token generato casualmente che è sempre diverso per ogni invio del modulo, e su 20 chiavi casuali che sono uniche per ogni sito.

Il sistema anti-spam lavora dietro le quinte senza disturbare gli utenti, e soprattuto, funziona.

How to add a contact form on the page

  • Add the shortcode [essential_form]
  • Done!

Features of the contanct form

  • Extremely lightweight. It inlines 1 kb (when the document is compressed it will be even smaller) of pure Vanilla JavaScript only on the page where you add the shortcode, and never above the fold. On the other pages, it doesn’t exist. We can say it exists on the page where you add the shortcode only because you see the contact form, in another case, it would be impossible to see that this plugin exists on that page. No tools will be able to measure consumption due to this plugin.
  • The contact form will have only the fields name, email, message, and an agreement checkbox. Nothing else. If you need more, better you use a different plugin. If those fields are all that you need, you will love this plugin.
  • It inherits the style of your theme. If you want a different style, you need to write your custom CSS or use a different plugin.
  • It has a very powerful anti-spam system. It will be impossible for robots to send spam through the contact form. Only humans can send spam manually.
  • No need for annoying captcha or similar systems that make visitors lose their nerves. The anti-spam system is behind the scenes, and it’s very powerful.

Parametri per lo shortcode

  • label_email
  • label_message
  • button_text
  • agreement_text
  • success_message

If assigned, the shortcode will look like [essential_form label_emal=”Your email” lable_message=”Your message” button_text=”Send” agreement_text=”You agree with our privacy policy” success_message=”Thank you for your message!”]

If you don’t assign the parameters of the shortcode, the plugin will take the default settings.

Come personalizzare i moduli di contatto

You can also customize the contact forms throught the filter hook ‘essential_form_settings’.

Here an example.

add_filter( 'essential_form_settings',function( $options ){
    return array(
        'email_from' => 'youremail@mail.com',
        'email_to' => 'youremail@mail.com',
        'email_subject' => sprintf( esc_html__( 'Message from %s','your-domain' ),get_bloginfo( 'name' ) ),
        'label_name' => __( 'Name','your-domain' ),
        'label_email' => __( 'Email','your-domain' ),
        'label_message' => __( 'Message','your-domain' ),
        'button_text' => __( 'Send','your-domain' ),
        'agreement_text' => __( 'By submitting this form I agree with the privacy policy','your-domain' ),
        'success_message' => __( 'Form submitted successfully! Thank you for your message!','your-domain' ),
        'name_missing_error' => __( 'Name is a required field!','your-domain' ),
        'email_missing_error' => __( 'Email is a required field!','your-domain' ),
        'email_not_valid_error' => __( 'Email not valid!','your-domain' ),
        'message_missing_error' => __( 'Message is a required field!','your-domain' ),
        'message_too_long_error' => __( 'This message is too long! Please, write not more than 50000 characters.','your-domain' ),
        'missing_agreement_error' => __( 'You have to agree with our privacy policy to submit the form.','your-domain' )
} );

If you need to do a custom action after the sending of the email, you can use the action hook ‘essential_form_after_sending’.

Here an example.

add_action( 'essential_form_after_sending',function( $name,$email,$message,$post_id ){

    //$name is the name of the user who submitted the contant form
    //$message is the message which is sent through the contact form
    //$post_id is the ID of the page where is included the contact form

    //Your code here

},10,4 );

If you need to customize the message that is included in the email, use the filter hook ‘essential_form_message’.

Here you have an example.

add_filter('essential_form_message',function( $message,$name,$email,$post_id ){
    if( isset( $_SERVER['REMOTE_ADDR'] ) ){
        $message .= '<p>IP: '.sanitize_text_field( $_SERVER['REMOTE_ADDR'] ).'</p>';
    return $message;
},10,4 );

If you need to customize the agreement text, use the filter hook ‘essential_form_agreement_text’.

Here you have an example.

add_filter( 'essential_form_agreement_text',function( $text ){
    return 'By submitting this form I agree with the <a href="https://yourdomain.com/privacy-policy/">Privacy Policy</a>';
} );


The limits of Essential Form are many, but they are what make this plugin the best if you need a ultra-lightweight contact form with just name, email, comment, and privacy agreement.
If you need more, you can always install more complete but also heavier contact forms like:

Contact Form 7
Formidable Forms
Ninja Forms

e molti altri plugin straordinari per moduli di contatto.

How to speed up the form submission and avoid conflicts with other plugins

  • Install and activate Freesoul Deactivate Plugins
  • Go to Freesoul Deactivate Plugins => Plugin Manger => Actions => Essential Form
  • Deactivate all the plugins for the actions “Getting secret key during submission” and “Form submission”

By using Freesoul Deactivate Plugins to clean up all the other plugins, the form submission will be faster and without any conflict with third plugins.


You can see Essential Form in action on my blog post The Lightest Contact Form Plugin Ever
You don’t need any demo for the backend, because there are no settings for this plugin. Just use the shortcode [essential_form] where you want to add the form, and customized as mentioned in the description.


5 Giugno 2024
The plugin is a great alternative to the classic plugins used for contact forms. Very lightweight and easy to configure.
7 Maggio 2024
hello, thanks for this great plugin! simply the best for those obsessed with loading performance! do you plan to add a few more fields? it would be great to have the option to add more usual fields, even with some coding… can we hope? 🙂
20 Aprile 2024
Thank you Jose, I don’t know what else to add, your plugins are truly unique and greatly appreciatted. Yours sincerely,Gin
11 Aprile 2024 1 risposta
In this day and age where every plugin is bloated with unnecessary features, the essential form plugin is a breathe of fresh air. Hope the in-built spam fighting is going to work haha. Thank you Jose, this is great.
20 Aprile 2024
This plugin is spot-on. It is exactly what it claims to be and gives you all the freedom that you need. No more, no less. Jose’s plugins are simply awesome. It is beyond me why they are not used 10.000 times more often. I just want to say: Thank you, Jose, for your great work. It is much more appreciated than you might think. Keep up your good work. The world needs more of this instead of the bloated crap. By the way, the built-in anti-spam feature seems to work absolutely great. After installing Essential Form spam dropped from 200 per day to 0.
11 Dicembre 2023 1 risposta
<font style=”vertical-align: inherit;”><font style=”vertical-align: inherit;”>su alcune installazioni funziona in altre non funziona invio. inspiegabile</font></font> <font style=”vertical-align: inherit;”><font style=”vertical-align: inherit;”>Risolto, era per un mio errore di impostazioni.</font></font> Ottimo plugin
Leggi tutte le recensioni di 13

Contributi e sviluppo

“Essential Form – The lightest plugin for contact forms, ultra lightweight and no spam” è un software open source. Le persone che hanno contribuito allo sviluppo di questo plugin sono indicate di seguito.


“Essential Form – The lightest plugin for contact forms, ultra lightweight and no spam” è stato tradotto in 3 lingue. Grazie ai traduttori per i loro contributi.

Traduci “Essential Form – The lightest plugin for contact forms, ultra lightweight and no spam” nella tua lingua.

Ti interessa lo sviluppo?

Esplora il codice segui il repository SVN, segui il log delle modifiche tramite RSS.



  • Fix: line spaces removed in the email message.


  • Added: translated in French. Many thanks to @queertimes for the translation.
  • Fixed: translation files not loaded from the WordPress language directory.


  • Added: translated in German. Many thanks to @cutu234 for the translation.
  • Added: possibility to remove only the agreement checkbox without removing the text by using the filter add_filter( ‘essential_form_agreement_checkbox_required’, ‘__return_empty_string’ );


  • Added: possibility to remove the agreement checkbox by adding define( ‘ESSENTIAL_FORM_ASK_FOR_AGREEMENT’, false ); in wp-config.php


  • Improved: increased the expiration time of the random key


  • Added: integration with Freesoul Deactivate Plugins to unload all the other plugins during the form submission


  • Fix: warning on activation


  • Added: allowed link in the privacy aggreement chcekbox
  • Translated in Italian


  • Initial release