Every business website needs a way for visitors to get in touch — and printing your email address in plain text is a bad way to do it. In this guide, you will learn how to add a contact form to WordPress in about 15 minutes, using a free plugin, with spam protection switched on and a proper test before it goes live.
WordPress does not ship with a built-in form builder, so you need a plugin to handle forms. The good news is that the free options in 2026 are genuinely good, and you do not need to touch a line of code to build a standard contact form.
Why Your WordPress Site Needs a Contact Form
A contact form does more than hide your email address from spam bots that scrape websites. It gives you structured information — name, email, subject, message — instead of a vague one-line email, lets you route enquiries to the right inbox, and looks professional.
Choose a WordPress Contact Form Plugin
For a standard contact form, the choice comes down to three free options:
WPForms Lite is the best pick for most people. It has a drag-and-drop builder, more than 5 million active installs, and a Simple Contact Form template you can publish in minutes. The free version does not store entries in your dashboard — submissions arrive by email only — and conditional logic is a paid feature.
Contact Form 7 is completely free and runs on more than 10 million sites. There is no drag-and-drop builder: you build forms by editing markup and embed them with a shortcode. It suits developers who want zero cost and full control. Its creator confirmed at WordCamp Asia 2026 that version 6.2 will be its final feature release, so expect maintenance updates rather than new features from here on.
Fluent Forms is the middle ground. Its free version includes entry storage, conditional logic, and file uploads — features WPForms charges for. If you want submissions saved in your dashboard without paying, start here.
My recommendation: WPForms Lite for the easiest setup, Contact Form 7 if you are comfortable with shortcodes and want everything free, and Fluent Forms if entry storage matters to you.
How to Add a Contact Form to WordPress with WPForms
Step 1: Install WPForms Lite
In your WordPress dashboard, go to Plugins > Add New, search for “WPForms”, and click Install Now next to WPForms Lite, then Activate. A new WPForms menu item appears in your dashboard sidebar.
Step 2: Create the form
Go to WPForms > Add New. Give the form a name — “Contact Form” is fine — and choose the Simple Contact Form template. It comes with Name, Email, and Message fields already in place.
Now drag in anything else you need. A Subject dropdown is the one extra field worth adding: it lets visitors say what their message is about (General Enquiry, Project Quote, Support), which makes your inbox much easier to triage. Resist the urge to add more. Every extra field costs you submissions.
Step 3: Set up notifications and confirmation
Click Settings > Notifications in the form builder. Check the Send To Email Address field and make sure it is an inbox you actually monitor — the site admin email is the default, and on many sites nobody checks it. Set the From Name to your business name so replies are easy to recognise.
Then go to Settings > Confirmation and write a short thank-you message, something like: “Thanks for getting in touch — I will reply within one business day.” This is the message visitors see after submitting, so make it specific.
Step 4: Add the form to your contact page
Open your contact page in the block editor (create one under Pages > Add New if you do not have one yet). Add a WPForms block, select your form from the dropdown, and publish or update the page. That is the whole setup.
If you build pages with Elementor, use the WPForms widget instead — it lives in the Elementor panel once the plugin is active — or drop the form’s shortcode into a Shortcode widget. Either way, the form renders the same.
The Contact Form 7 Method (Free and Shortcode-Based)
If you chose Contact Form 7, install and activate it the same way, then go to Contact > Contact Forms. A default “Contact form 1” already exists. Copy its shortcode — it looks like this:
[contact-form-7 id="abc1234" title="Contact form 1"]
Paste that shortcode into a Shortcode block on your contact page and publish. The form is live.
Customising a Contact Form 7 form means editing its markup directly. Fields use tags like [text* your-name] and [email* your-email], where the asterisk makes a field required. It is fast once you know the syntax.
Stop Contact Form Spam Before It Starts
A public form without spam protection will attract bots within days. Set this up before you publish, not after the first wave of junk:
- WPForms: an anti-spam token and honeypot are switched on by default. For stronger protection, go to Settings > Spam Protection and Security in the form builder and add Cloudflare Turnstile, Google reCAPTCHA, or hCaptcha — all three work on the free version.
- Contact Form 7: add reCAPTCHA v3 or Cloudflare Turnstile through the plugin’s Integrations settings, and enable Akismet if you already use it for comment spam.
- Minimum submit time: WPForms can reject forms filled in faster than a human plausibly could. Bots fill forms in milliseconds; humans do not. Turn it on.
Test the Form Before You Tell Anyone About It
Before you link the contact page in your menu, submit a test entry yourself. Use a different browser or an incognito window so you see the form exactly as a visitor does, fill it in, and submit.
Then check three things: the confirmation message appears, the email lands in your inbox, and the form still looks right on a phone. If the email never arrives, check your spam folder first — then accept that the form is probably fine and WordPress email delivery is the problem. WordPress sends mail with PHP’s mail function by default, and many hosts quietly drop those messages. The fix is an SMTP plugin such as WP Mail SMTP or a transactional email service, and I covered the full diagnosis in my guide to fixing WordPress not sending emails.
5 Mistakes That Break WordPress Contact Forms
- Too many fields. A contact form is not a job application. Name, email, message — plus a subject dropdown if you need it. Anything else belongs in a follow-up email.
- Notifications going to an unmonitored inbox. If the admin email is an address nobody reads, enquiries die quietly. Point notifications at an inbox you check daily.
- No spam protection. A bare form is a spam magnet. Turn on the built-in honeypot and add Turnstile or reCAPTCHA before launch.
- No entry backup. WPForms Lite and Contact Form 7 both rely on email delivery by default. If an email fails, the submission is lost. Use Lite Connect, Flamingo, or a plugin that stores entries if losing a lead would hurt.
- A form nobody can find. Link your contact page in the header menu and the footer. A form buried three clicks deep might as well not exist.
Frequently Asked Questions
Do I need a plugin to add a contact form to WordPress?
Yes, for any practical purpose. WordPress core has no form builder, so a plugin like WPForms, Contact Form 7, or Fluent Forms is the standard way to add one. Building a form by hand in PHP is possible, but you would be recreating spam protection, validation, and email handling that these plugins already do well.
Is WPForms really free?
WPForms Lite is free on WordPress.org and covers a standard contact form completely. You only need a paid plan for entry storage, conditional logic, payments, and integrations. Basic starts at $49.50 for the first year and renews at $99, so check the renewal price before you buy.
Why are my contact form emails not arriving?
Almost always, the form works and the email delivery fails. WordPress uses PHP mail by default, which many hosts filter or block. Route mail through SMTP with a plugin like WP Mail SMTP and test again — that fixes the large majority of cases.
Final Thoughts
Adding a contact form to WordPress is a fifteen-minute job: pick a plugin, use a template, set your notification email, add spam protection, and test it. The details are what make it reliable — a monitored inbox, a clear confirmation message, and a backup for submissions. Get those right and your contact page will quietly do its job for years.
If you would rather have an expert set this up for you — or your site needs a contact page, a quote form, or a full rebuild — get in touch through my contact page and tell me what you need.