TL;DR: The fastest way to add a WordPress contact form is with the free Contact Form 7 pluginA plugin is a software component that adds specific features and functionality to your WordPress website. Esse… More — install it, paste a shortcodeA shortcode in WordPress is a small piece of code that allows users to perform complex functions or display dy… More, and you’re live in under 5 minutes. For more features like conditional logic, payments, or drag-and-drop builders, WPForms, Gravity Forms, or Formidable Forms are the best premium alternatives.
Last Updated: March 2026 | Tested with WordPress 6.7 and PHP 8.3
Every professional website needs a WordPress contact form. Without one, visitors who want to reach you have no choice but to copy-paste an email address — and most won’t bother. A well-placed contact form turns anonymous visitors into leads, customers, and clients.
In this guide we cover five proven methods: the free Contact Form 7 plugin (with a complete step-by-step walkthrough), WPForms, Gravity Forms, Formidable Forms, and the native WordPress block editor’s contact patterns. We also cover Google reCAPTCHA spam prevention so your inbox stays clean.
Why Your WordPress Site Needs a Contact Form in 2026
Publishing your raw email address on a webpage is an open invitation for spam bots. Studies show exposed email addresses attract hundreds of automated spam messages per month. A WordPress contact form routes messages through your server without revealing your address to scrapers.
Beyond spam protection, contact forms let you:
- Collect structured information (name, phone, project type) before replying
- Route submissions to different team members automatically
- Connect to CRMs like HubSpot or Mailchimp via integrations
- Store submissions in your WordPress databaseA database is an organized collection of data stored and accessed electronically. It is a crucial component of… More as a backup
- Track conversion rates with Google Analytics events
According to WordPress.org, Contact Form 7 alone has been downloaded over 50 million times — making it the most popular plugin in the entire WordPress repository. That gives you a sense of how fundamental this feature is.
The 5 Best WordPress Contact Form Methods Compared (2026)
Before diving into each method, here’s a quick side-by-side comparison to help you choose the right WordPress contact form solution for your needs:
| Plugin | Free? | Drag & Drop? | Conditional Logic | Starting Price | Best For |
|---|---|---|---|---|---|
| Contact Form 7 | ✅ Free | ❌ No | ❌ Via addon | $0 | Developers, simple forms |
| WPForms | ✅ Lite free | ✅ Yes | ✅ Pro+ | $49.50/yr | Beginners, small businesses |
| Gravity Forms | ❌ Paid only | ✅ Yes | ✅ All plans | $59/yr | Developers, complex workflows |
| Formidable Forms | ✅ Lite free | ✅ Yes | ✅ Pro+ | $39.50/yr | Data-heavy, calculators |
| Block Patterns | ✅ Free (core) | ✅ Yes | ❌ No | $0 | Zero-plugin, simple pagesIn WordPress, a page is a content type that is used to create non-dynamic pages on a website. Pages are typica… More |
Method 1: Contact Form 7 — Free Step-by-Step Guide
Contact Form 7 (CF7) is the gold standard free WordPress contact form plugin. It uses a simple tag-based markup language that’s easy to learn and highly flexible. Here’s exactly how to set it up:
Step 1: Install and Activate Contact Form 7
- Log in to your WordPress dashboardIn WordPress, the Dashboard is a central hub for managing a website’s content and settings. It is the first sc… More
- Go to Plugins → Add New Plugin
- Search for Contact Form 7
- Click Install Now, then Activate
After activation, a new Contact menuIn WordPress, a menu is a collection of links that are displayed as a navigation menu on a website. Menus are … More item appears in your dashboardIn WordPress, the Dashboard is a central hub for managing a website’s content and settings. It is the first sc… More sidebar. CF7 automatically creates a default contact form called “Contact form 1” — you can use this immediately or customize it.
Step 2: Customize Your Form Fields
Go to Contact → Contact Forms and click Edit on your form. The Form tab shows the HTML template with CF7 shortcodesA shortcode in WordPress is a small piece of code that allows users to perform complex functions or display dy… More. The default form includes these fields:
<label> Your Name (required)
[text* your-name] </label>
<label> Your Email (required)
[email* your-email] </label>
<label> Subject
[text your-subject] </label>
<label> Your Message
[textarea your-message] </label>
[submit "Send"]
The asterisk (*) makes a field required. You can add more field types by clicking the tagIn WordPress, tags are a taxonomy used to classify and organize posts. They are similar to categories, but unl… More generator buttons above the form editor: text, email, URL, telephone, number, date, textarea, dropdown, checkboxes, radio buttons, file upload, and more.
Step 3: Configure Email Notifications
Click the Mail tab. Here you set:
- To: The email address that receives submissions (defaults to your WordPress admin email)
- From: Use
[your-email]so replies go back to the sender - Subject: E.g.,
New contact from [your-name] - Message Body: Reference field values with tagsIn WordPress, tags are a taxonomy used to classify and organize posts. They are similar to categories, but unl… More like
[your-message]
Important: For reliable email delivery, install a dedicated SMTP plugin like WP Mail SMTP (free). Many shared hosting servers block outgoing mail from PHP’s wp_mail() function by default, causing form submissions to silently fail.
Step 4: Add the Form to a Page
Back on the Contact Forms list, copy the shortcode shown next to your form — it looks like
Error: Contact form not found.
.
Then:
- Create or edit a pageIn WordPress, a page is a content type that is used to create non-dynamic pages on a website. Pages are typica… More (e.g., “Contact Us”)
- Add a Shortcode block in the block editor
- Paste the CF7 shortcode into it
- Click Publish or Update
Your WordPress contact form is now live. Visit the page to verify it renders and sends a test submission.
How to Add reCAPTCHA Spam Protection to Your WordPress Contact Form
Without spam protection, a WordPress contact form becomes a target for bots within hours of going live. Google reCAPTCHA v3 is the most user-friendly option — it runs invisibly in the background and scores each submission without forcing users to solve puzzles.
Setting Up reCAPTCHA v3 with Contact Form 7
- Visit Google reCAPTCHA Admin Console and register your site for reCAPTCHA v3
- Copy your Site Key and Secret Key
- In WordPress, go to Contact → Integration
- Click Setup Integration under reCAPTCHA
- Paste your Site Key and Secret Key, then click Save Changes
Once connected, CF7 automatically applies reCAPTCHA v3 scoring to all forms. No additional shortcode is needed. Submissions that score below Google’s threshold (0.5 by default) are silently rejected.
For even stronger protection, consider also enabling CF7’s Akismet integration. Akismet checks every submission against a global spam database and is free for personal sites.
Method 2: WPForms — Best Drag-and-Drop WordPress Contact Form Builder
WPForms is the most beginner-friendly WordPress contact form plugin available. The drag-and-drop builder lets you visually construct forms without touching any code. The free Lite version covers basic contact forms; the Pro tier (starting at $49.50/year for one site) adds conditional logic, payment integrations, and 200+ templates.
To create a WPForms contact form:
- Install and activate WPForms from Plugins → Add New
- Go to WPForms → Add New
- Choose the Simple Contact Form template
- Drag and drop additional fields from the left panel
- Click Settings → Notifications to configure email alerts
- Click Save, then embed via the WPForms block in any page
WPForms stores every submission in your WordPress database under WPForms → Entries — a critical backup if email delivery ever fails. The Lite version supports reCAPTCHA v2 and v3 out of the box.

Method 3: Gravity Forms — Best for Developers and Complex Workflows
Gravity Forms is the power-user’s choice for WordPress contact forms. It’s a premium-only plugin (no free version) starting at $59/year, but it earns that price with conditional logic, multi-page forms, file uploads, calculations, front-end postA post is a type of content in WordPress, a popular open-source content management system used for creating an… More submission, payment processing via Stripe and PayPal, and hundreds of third-party add-ons.
Gravity Forms is particularly dominant in agency and developer workflows because of its mature REST API and extensive hooks. For example, you can use the gform_after_submission action to trigger custom PHP after any form submission:
add_action( 'gform_after_submission', 'my_custom_after_submission', 10, 2 );
function my_custom_after_submission( $entry, $form ) {
// Custom logic here — e.g., write to a custom DB table
$name = rgar( $entry, '1' ); // Field ID 1 value
$email = rgar( $entry, '2' ); // Field ID 2 value
}
Gravity Forms supports conditional logic on all plans, meaning you can show or hide fields based on previous answers — ideal for quote forms and multi-step service inquiries. If you need a WordPress contact form that functions more like an application or a booking intake, Gravity Forms is the right tool.
Method 4: Formidable Forms — Best for Data and Calculations
Formidable Forms stands out when your WordPress contact form needs to do more than just send an email. Its signature feature is the ability to display submitted data in front-end views — think directories, search results, charts, and calculated outputs built from form data.
Common use cases where Formidable Forms shines:
- Mortgage or loan calculators
- Quote estimators that show a price based on dropdown selections
- Job application forms with resume uploads
- Event registration forms with capacity limits
- Member directories that display submissions publicly
The free Formidable Forms Lite plugin handles standard contact forms. The Business plan (starting at $39.50/year) unlocks calculations, views, and advanced integrations. For a straightforward WordPress contact form, the free version is sufficient.
Method 5: WordPress Native Block Patterns (No Plugin Required)
Since WordPress 6.0, the block editor ships with a built-in Contact pattern that uses the core Form block. This is the zero-plugin approach — no third-party code, no additional database tables, nothing to keep updated.
To use it:
- Edit any page in the block editor
- Click the + inserter and search for Form
- Select the Contact Form pattern from the patterns panel
- Customize the fields directly in the editor — add, remove, or reorder them with drag handles
- Configure submission email in the block’s sidebar settings
The native block form uses wp_mail() for delivery, so the same SMTP plugin recommendation applies. The block approach is cleanest for themesA WordPress theme is a set of files that determine the design and layout of a website. It controls everything … More like Twenty Twenty-Five that are built entirely around the site editor, and it’s the best starting point if you want to avoid plugin bloat on a simple portfolio or brochure site.
Limitation: The native form block doesn’t store submissions in the database and has no conditional logic or integrations. As your site grows, you’ll likely want to migrate to a dedicated plugin. For a smooth upgrade path, see our guide to WordPress hosting options that support plugin-heavy sites without performance issues.
WordPress Contact Form Best Practices for 2026
Whichever method you choose, follow these best practices to maximize conversions and deliverability:
- Keep it short. Forms with 3–5 fields convert at significantly higher rates than forms with 10+ fields. Ask only what you need to respond.
- Use an SMTP plugin. WP Mail SMTP, FluentSMTP, or Postman SMTP ensure reliable delivery. Pair with a free Brevo (formerly Sendinblue) or Mailgun account for 300+ free emails/day.
- Add a honeypot field. Most plugins include an invisible honeypot field that bots fill in — legitimate users never see it. Enable this in addition to reCAPTCHA.
- Set a custom “Thank You” page. Redirect to a dedicated confirmation page after submission so you can track conversions in Google Analytics 4 as a goal event.
- Test on mobile. Over 60% of web traffic is mobile. Test your WordPress contact form on iOS and Android before publishing.
- Check your spam folder. Run a test submission and check both your inbox and spam folder. Whitelist the sender address if needed.
Want to level up your WordPress skills beyond contact forms? Our WordPress Masterclass course covers form building, page design, SEO, and everything else you need to run a professional site.
Troubleshooting: WordPress Contact Form Not Sending Emails
The most common WordPress contact form problem is submissions not arriving in your inbox. Here’s a systematic fix checklist:
- Check your spam/junk folder — mail from
[email protected]often triggers spam filters. - Install WP Mail SMTP and configure it with a real SMTP server (Gmail, Brevo, Mailgun, SendGrid). This is the single most effective fix.
- Verify your “To” email in the form’s mail settings matches a real, active inbox.
- Check server mail logs via cPanel → Email Logs if available on your host.
- Disable conflicting plugins — some caching plugins or security plugins (like Wordfence) can block outgoing mail. Test with caching disabled.
- Check for PHP mail function restrictions — some hosts disable
mail()entirely on shared plans. SMTP is the mandatory workaround.
A reliable hosting provider makes a significant difference here. Hosts that run on optimized WordPress infrastructure — like those we cover on our WordPress hosting comparison page — use proper mail relay configurations that prevent the silent delivery failures common on budget shared hosting. GigaPress managed WordPress hosting starts at $2.40/month and includes 99.9% uptime SLA and SMTP-ready server configurations.
Ready to Upgrade Your Website?
If you’re looking for fast WordPress hosting and done-for-you updates, check out our hosting packages by clicking the button below. A contact form is only as reliable as the server it runs on — our managed WordPress hosting ensures every submission is delivered, every time.
Frequently Asked Questions
What is the best free WordPress contact form plugin?
Contact Form 7 is the best free WordPress contact form plugin with over 50 million downloads. It covers all basic use cases — name, email, message, file upload — and integrates with reCAPTCHA for spam protection. WPForms Lite is the best alternative for beginners who prefer a drag-and-drop interface over code-based configuration.
Why is my WordPress contact form not sending emails?
WordPress contact form emails fail most commonly because of PHP mail server restrictions on shared hosting. The solution is to install a free SMTP plugin like WP Mail SMTP and connect it to a transactional email service (Gmail SMTP, Brevo, Mailgun, or SendGrid). This bypasses the server’s default mail function and ensures reliable delivery.
How do I stop spam on my WordPress contact form?
The most effective spam prevention for a WordPress contact form is Google reCAPTCHA v3, which invisibly scores each submission in the background. Pair it with a honeypot field (most plugins include one) and Akismet integration for layered protection. Avoid reCAPTCHA v2 checkbox challenges — they frustrate real users and don’t significantly improve spam blocking over v3.
Can I create a contact form in WordPress without a plugin?
Yes. WordPress 6.0+ includes a native Form block in the block editor that lets you build a basic contact form without any plugin. It supports text, email, and textarea fields and sends submissions via wp_mail(). For simple sites, this is sufficient. For conditional logic, database storage, integrations, or spam protection, a dedicated plugin is recommended.
How do I add a contact form to a WordPress page?
After creating your form in a plugin like Contact Form 7 or WPForms, copy the provided shortcode and paste it into a Shortcode block on any page or post. Alternatively, WPForms, Gravity Forms, and Formidable Forms all include dedicated blocks you can insert directly from the block inserter — no shortcode required. The form will render exactly as configured on the front end.



