How Do I Create a Contact Form in WordPress? Step-by-Step Tutorial
Creating a contact form in WordPress takes about ten minutes once you pick a plugin, and no, you do not need to touch a line of PHP. WordPress ships without a contact form by default, which surprises most new site owners.
The core software handles pages, posts, and media beautifully, then leaves visitor messages entirely up to you.
WordPress powers a huge share of the web. W3Techs data puts it at roughly 43% of all websites, which means millions of site owners have solved this exact problem.
This guide walks through the plugin options, the setup steps, spam protection, and the mistakes that quietly send your messages into a black hole.
Why You Need a Contact Form Instead of a Plain Email Address?
Posting your email in text seems simpler. It creates three problems.
Spam bots harvest it. Scrapers crawl pages looking for the @ symbol. Within weeks, your inbox fills with offers you never requested.
You get useless messages. A blank email gives visitors no structure, so you receive "hi can you help" with no name, no budget, and no phone number. A form asks the questions for you.
No data trail. Forms store submissions in your database, tag the source page, and let you export leads. An email address gives you a pile of threads.
Forms also let you route messages by department, trigger autoresponders, and connect to a CRM or email list without manual copying.
Choose a Contact Form Plugin
The WordPress plugin directory lists thousands of form tools. Four dominate real-world usage.
Plugin
Free version
Best known for
Learning curve
WPForms
Yes, WPForms Lite
Drag-and-drop builder with prebuilt templates
Very easy
Contact Form 7
Yes, fully free
Lightweight, no frills, shortcode driven
Moderate, uses markup
Fluent Forms
Yes
Speed and conditional logic on a budget
Easy
Gravity Forms
No, premium only
Advanced workflows and developer hooks
Steeper
WPForms: The Easiest Route for Beginners
WPForms runs on more than 6 million sites and built its reputation on a visual builder where you drag fields into place instead of writing markup.
The free version, WPForms Lite, handles a standard contact form with name, email, subject, and message fields plus basic spam filtering.
Where the paid version earns its keep:
Conditional logic shows or hides fields based on earlier answers, so a "how can we help" dropdown can reveal different follow-up questions
File uploads let clients send documents, images, or briefs directly
Payment fields connect to Stripe, PayPal, Square, and Authorize.net
Multi-page forms break long applications into steps and lift completion rates
Entry management stores every submission inside WordPress with search and export
Integrations push data to Mailchimp, HubSpot, Salesforce, ActiveCampaign, Zapier, and Google Sheets
Form abandonment tracking captures partial entries so you still get the email address
Licenses run per year, and the discount ladder gets steep on higher tiers. This $199.50 off WPForms promo code applies at checkout, and it makes the most difference on the Pro and Elite levels where the integrations live.
Anyone comparing feature sets first should scan the WPForms pricing plans breakdown, since payment fields and marketing integrations sit on specific tiers rather than across the board.
Contact Form 7: Free and Everywhere
Contact Form 7 has been around since 2007 and remains a solid choice if your needs stay simple. You edit fields using bracket tags in a text box, which feels dated but works fine.
Trade-offs: no visual builder, no entry storage without an add-on plugin, and styling requires custom CSS. Free forever, though.
Step-by-Step: Building Your First Contact Form
These steps use WPForms since the interface is the friendliest, but the sequence applies to most builders.
Step 1: Install and Activate the Plugin
Open your WordPress dashboard
Go to Plugins, then Add New
Search for your chosen plugin by name
Click Install Now, then Activate
A new menu item appears in the sidebar once activation finishes.
Step 2: Start From a Template
Click WPForms, then Add New. Name the form something you will recognize in six months, like "Homepage Contact" rather than "Form 1."
Choose the Simple Contact Form template. It arrives with four fields already in place:
Name
Email
Comment or Message
Submit button
Templates save real time. Starting blank means rebuilding what someone else already tested.
Step 3: Add and Arrange Your Fields
Drag fields from the left panel onto the form preview. Common additions:
Phone for businesses that call back
Dropdown to route inquiries by department or service
Checkbox for marketing consent, required under GDPR in the EU
File upload if clients send documents
Single line text for company name
Click any field to edit its label, add placeholder text, mark it required, or set its size.
Keep it short. Every extra field costs you submissions. Four or five fields is the sweet spot for a general contact form. Ask for a phone number only if you genuinely plan to dial it.
Step 4: Configure Notification Emails
This step decides whether you ever see the messages. Open Settings, then Notifications.
Send To Email Address: your inbox, or several separated by commas
Email Subject Line: include a smart tag like the visitor's name so your inbox stays scannable
From Name: your site name, not the visitor's name
From Email: an address on your own domain, not the visitor's address
Reply-To: insert the visitor's email smart tag here so hitting reply works normally
That From Email setting matters more than it looks. Using the visitor's address in the From field trips SPF and DMARC checks, and Gmail or Outlook will bury the message in spam.
Step 5: Set Up the Confirmation Message
Under Settings, then Confirmations, choose what happens after someone hits submit:
Message: display text on the same page, the simplest option
Show Page: send visitors to a thank-you page, which lets you track conversions in Google Analytics
Go to URL: redirect anywhere, useful for booking calendars
A thank-you page beats an inline message when you care about measuring results.
Step 6: Add Spam Protection
Skip this, and you will regret it within a week. Options ranked by how much they annoy visitors:
Anti-spam token or honeypot field. Invisible to humans, catches basic bots. Enable it first.
hCaptcha or Cloudflare Turnstile. Runs silently for most visitors with no puzzle to solve.
Google reCAPTCHA v3. Scores behavior in the background without a checkbox.
Country or keyword filtering. Blocks submissions containing specific words or coming from specific regions.
Avoid the old click-the-traffic-lights challenge unless spam becomes overwhelming. It costs you real conversions.
Step 7: Publish the Form on a Page
Click Save, then Embed
Pick an existing page or create a new one
In the block editor, add the plugin's form block
Select your form from the dropdown
Click Publish or Update
You can also drop the form into a sidebar widget or footer using the same block or a shortcode.
Step 8: Test Before You Trust It
Fill out the form yourself and submit. Check three things:
The notification email lands in your inbox, not spam
Replying to that email actually reaches the visitor
The confirmation message or thank-you page appears correctly
Test again from a phone. Roughly 62% of global web traffic now comes from mobile devices according to Statcounter, and a form that breaks on a small screen loses most of your inquiries.
Fix the Most Common Problem: Emails Not Arriving
WordPress sends mail through the PHP mail function, which most hosts either restrict or send from an unauthenticated address. Providers block those messages routinely.
The fix is SMTP. Install a plugin like WP Mail SMTP and connect an authenticated sending service:
SendLayer, Brevo, or Postmark for transactional email
Gmail or Google Workspace through OAuth
Microsoft 365 or Outlook
Amazon SES for high volume at low cost
Setup takes about ten minutes and solves the majority of missing-email complaints. Add SPF, DKIM, and DMARC records to your DNS while you are in there.
Make Your Contact Form Convert Better
Put it on its own page and link to it from your main navigation
Add context above the form, like typical response time or business hours
Label the button clearly. "Send Message" or "Request a Quote" beats a generic "Submit"
Show a phone number nearby for people who hate forms
Enable form abandonment capture so a half-finished entry still gives you a lead
Include your address and hours on the same page for local SEO value
Accessibility and Privacy Basics
Forms need to work for everyone and stay on the right side of privacy law.
Accessibility: every field needs a visible label, not just placeholder text. Keyboard users must be able to tab through in logical order. Error messages should explain what went wrong in plain words.
Privacy: if you collect personal data from EU or UK visitors, add a consent checkbox and link to your privacy policy. Set an entry retention period so old submissions delete automatically rather than sitting in your database forever.
Frequently Asked Questions
Can I create a contact form in WordPress without a plugin?
Yes, by writing custom HTML and a PHP handler, but you would be building spam filtering, validation, and email deliverability from scratch. A plugin is the practical answer.
Is a free contact form plugin good enough?
For a basic name, email, and message form, absolutely. You outgrow free versions once you need entry storage, conditional logic, payments, or CRM connections.
Where should the contact form go on my site?
A dedicated contact page linked from the main menu, plus a shorter version in the footer or on key service pages.
How do I stop spam submissions?
Turn on the honeypot or anti-spam token first, then add Cloudflare Turnstile or reCAPTCHA v3 if spam continues. Keyword filtering handles the stubborn leftovers.