How to Create a Contact Form in WordPress
Step-by-step guide to adding a contact form to your WordPress site. Covers multiple methods, best practices, and common mistakes.
WordPress doesn't include a contact form by default. You need a plugin. This guide covers how to add one in under 5 minutes, regardless of which plugin you choose. (Not sure which plugin to pick? See our best free WordPress form plugins roundup.)
Method 1: Using SkunkForms (Block Editor)
The fastest method if you want forms with built-in lead tracking.
Step 1: Install the plugin
- Go to Plugins → Add New in your WordPress dashboard
- Search for "SkunkForms" or upload the zip file
- Click Install then Activate
Step 2: Add a form to your page
- Open any page or post in the Block Editor
- Click the + button to add a block
- Search for "SkunkForms" or find it under Widgets
- Select a template (Contact Form is the most popular)
Step 3: Configure your fields
The default contact form includes:
- Name (text field)
- Email (email field)
- Subject (text field)
- Message (textarea)
- Submit button
To add or remove fields:
- Click inside the form block
- Use the + button to add new SkunkForms field blocks
- Click any field to edit its label, placeholder, and settings in the sidebar
Step 4: Set up notifications
By default, submissions are emailed to your WordPress admin email. To change this:
- Select the main SkunkForms block
- In the sidebar, find Notifications
- Enter the email address(es) you want notified
Step 5: Publish
Click Publish or Update. Your form is live.
Every submission will:
- Send you an email notification
- Store the entry in your SkunkForms dashboard
- Automatically create a contact in your CRM (if you're using SkunkCRM)
Method 2: Using Contact Form 7 (Shortcode)
The most popular free option, but less beginner-friendly.
Step 1: Install and activate
Search for "Contact Form 7" in Plugins → Add New. Activate it.
Step 2: Create your form
- Go to Contact → Add New
- CF7 creates a default form with HTML-like markup:
[text* your-name placeholder "Your Name"]
[email* your-email placeholder "Email"]
[textarea your-message placeholder "Message"]
[submit "Send"]
- Modify the markup to change fields
Step 3: Embed the form
Copy the shortcode (e.g., [contact-form-7 id="123" title="Contact Form"]) and paste it into any page or post.
Step 4: Configure email
Under the Mail tab, configure where submissions are sent.
Note: CF7 doesn't store submissions in your database. If the email fails, the data is lost. Consider adding a plugin like Flamingo for entry storage.
Method 3: Using WPForms (Drag & Drop)
The most polished visual builder experience.
Step 1: Install WPForms Lite
Search for "WPForms" in Plugins → Add New. Activate it.
Step 2: Create a form
- Go to WPForms → Add New
- Choose a template
- Drag and drop fields in their visual builder
- Configure each field in the sidebar
Step 3: Embed
Use the WPForms block in the editor, or paste the shortcode.
Note: WPForms Lite doesn't store form entries. You'll need the paid version ($49+/yr) for entry storage, conditional logic, and file uploads.
Best practices for contact forms
Keep it short
Every additional field reduces completion rates. For a contact form, you need:
- Name
- Message
That's it. Phone number, company, subject line — these are nice-to-haves, not necessities. Add them only if you'll actually use the data.
Place it prominently
Don't bury your contact form. Common high-performing placements:
- Dedicated /contact page (linked from main navigation)
- Footer of every page (short inline form)
- End of blog posts (for inquiries related to the content)
- Sidebar widget (for persistent visibility)
Use clear labels
"Name" not "Full Legal Name." "Email" not "Electronic Mail Address." "How can we help?" not "Please describe your inquiry in detail."
Set expectations
Tell people when you'll respond. "We'll get back to you within 24 hours" reduces anxiety and sets realistic expectations.
Test it
After publishing, submit a test entry yourself. Verify:
- The email notification arrives
- All fields are captured correctly
- The confirmation message shows
- The form works on mobile
Don't forget spam protection
Even small sites get form spam. Use at minimum:
- Honeypot field (most plugins include this)
- reCAPTCHA v3 (invisible, no friction)
- Server-side validation
SkunkForms includes all three out of the box — see our spam protection docs for details.
Common mistakes
- Not testing on mobile — 60%+ of traffic is mobile. If your form is unusable on a phone, you're losing leads.
- Too many required fields — Make only name, email, and message required. Everything else should be optional.
- No confirmation message — After submission, show a clear "Thank you, we'll be in touch" message. Don't just refresh the page.
- Relying only on email — Email notifications fail silently. Make sure your plugin stores entries in the database as a backup.
- Ignoring submissions — The best form in the world is useless if you don't respond promptly. Set up a system for handling submissions — or better yet, connect your forms to a CRM so leads are tracked automatically.
Which plugin should you choose?
- Want the simplest setup + lead tracking? → SkunkForms (free, CRM included)
- Want maximum visual builder polish? → WPForms (free lite, paid for full features)
- Want developer-level control? → Contact Form 7 (free, code-based)
- Want generous free features? → Fluent Forms or Forminator
No wrong answer — pick the one that fits how you work.
Ready to build forms that don't stink?
Get started with SkunkForms — free forever, no credit card required.
Start Free →