Every blog needs a contact form. The default WordPress install doesn’t include one, so a plugin is the answer. The popular choices range from heavy and bloated to lightweight and genuinely capable. This post covers how to pick one and set it up so it works without slowing your site down.

A clean WordPress contact form with name, email, and message fields

The plugin options

Fluent Forms (free + paid)

The lightest of the major form plugins. Fast, modern, and well-built from the ground up.

Pros: lightweight, good UX, genuinely no bloat, and its free tier includes features other plugins reserve for paid versions.

Cons: it’s less famous than the others, so there are fewer tutorials floating around online.

WPForms Lite (free; Pro paid)

The most popular form plugin in the WordPress ecosystem, built around a drag-and-drop builder.

Pros: easy to use, packed with features, and backed by good documentation.

Cons: the Lite version is fairly restricted, and the Pro upsell shows up constantly.

Contact Form 7 (free)

The longest-running WordPress form plugin, free with no paid tier at all. Worth knowing before you install it: at WordCamp Asia 2026, the plugin’s creator announced that version 6.2 would be the last release to add new features, meaning Contact Form 7 has now entered maintenance mode. Security patches and bug fixes will keep coming, but no new functionality is planned.

Pros: free forever, simple, no upsells to worry about.

Cons: a dated interface, code-like shortcode configuration, a rough look out of the box, and now a frozen feature set going forward. For a new setup in 2026, it’s worth weighing the other options first.

Gravity Forms (paid)

Premium-only, and the most powerful form plugin in the WordPress ecosystem.

Pros: best-in-class features, deep integrations, and widely used by enterprise sites.

Cons: $59 or more per year, which is overkill for a basic contact form.

Ninja Forms (free + paid)

A solid middle-tier option with a functional free version.

Pros: drag-and-drop builder, decent free tier.

Cons: heavier overall than Fluent Forms.

For most bloggers, the right pick is Fluent Forms or WPForms Lite. Both are free, both are modern, and both stay fast. If you want a deeper side-by-side, our comparison of WPForms, Fluent Forms, and Gravity Forms covers pricing tiers and feature differences in more depth than this setup guide does.

Setting up a basic form

Step 1: Install the plugin

Go to Plugins → Add New, search for “Fluent Forms” or “WPForms,” then install and activate whichever you’ve chosen.

Step 2: Create a form

Both plugins include a “create form” wizard. Pick “Contact Form” as your starting template, since most offer one out of the box.

Step 3: Configure fields

The contact form template usually includes these fields already:

  • Name (required).
  • Email (required).
  • Message (required, multi-line).

A couple of optional additions worth considering:

  • Subject field, which helps you triage inbound messages faster.
  • Reason for contacting dropdown, with options like “General question,” “Partnership,” “Bug report,” or “Other.”

Don’t overload the form with extra fields. Fewer fields consistently means more submissions.

Step 4: Configure email notifications

When someone submits the form, you should receive an email right away. Configure the following:

  • Recipient: your own email address.
  • Subject line: something like “New contact form submission from [name].”
  • Reply-to: set to the submitter’s email so you can reply directly without extra steps.
  • Body: include all of the form field values.

Step 5: Add spam protection

This step is critical. Without spam protection, contact forms attract automated submissions almost immediately after launch.

Here are your options, roughly in order of preference:

  • Honeypot. An invisible field that bots fill in but humans never see. Most form plugins include this built in already, so just enable it.
  • Cloudflare Turnstile. A free, privacy-friendly CAPTCHA alternative with far less friction than reCAPTCHA. See Cloudflare’s official Turnstile documentation for setup details.
  • reCAPTCHA v3. Google’s invisible CAPTCHA option. Effective, though it does depend on Google’s infrastructure.
  • Math question. Something like “What’s 2 + 3?” Simple and low-friction, though bots can solve these fairly easily too.

Pairing a honeypot with Cloudflare Turnstile is the modern recommendation for most blogs.

Step 6: Configure the “thank you” message or redirect

After someone submits the form, they need some kind of feedback. Your options here are an inline thank-you message, something like “Thanks! I’ll reply within 48 hours,” or a redirect to a dedicated thank-you page.

Either approach works fine. Just don’t leave the visitor staring at an empty form with no confirmation at all.

Step 7: Add the form to a page

Create a “Contact” page, then add the form using the form plugin’s block or shortcode.

Most plugins add a dedicated block to the editor. Insert the block, then select your form from the list.

Step 8: Add the contact page to your menu

Go to Appearance → Menus, and add the Contact page to your primary menu. For more on structuring menus well beyond just this one page, see our guide to building WordPress navigation that works.

A contact page showing the form embedded in a clean layout with surrounding text

Testing the form

Always test the form thoroughly before announcing it publicly.

  1. Visit your contact page in an incognito browser window.
  2. Submit the form using real data.
  3. Verify the email actually arrives.
  4. Verify the thank-you message or redirect works as expected.
  5. Reply to the submission to confirm the reply-to address is set correctly.

If the email never arrives, you likely have an email delivery problem, covered below.

Email delivery issues

WordPress’s default email setup sends through PHP’s mail() function. Many hosts have this disabled entirely, or emails from it end up in spam folders regardless.

The fix is to configure SMTP properly, using a plugin like:

  • WP Mail SMTP. The free version handles SendGrid, Mailgun, SES, and several other providers.
  • FluentSMTP. Free, and built by the same team behind Fluent Forms.

Pick one, then connect it to a free SMTP service. Brevo (formerly Sendinblue) offers 300 emails a day free, SendGrid has a free tier as well, and Amazon SES is cheap even beyond that. Form submissions then arrive reliably instead of vanishing into spam.

What to put on the contact page beyond the form

A bare form on its own looks cold. Add some context around it:

  • A short intro paragraph. Something like “I read every message and reply within 48 hours.”
  • Alternative contact methods. Your email address, a Twitter/X handle, and so on.
  • What you’d love to hear about. Questions, corrections, partnership requests, whatever fits your blog.
  • What you can’t help with. “I don’t take guest post pitches,” for example, if that applies to you.

This context filters inbound messages naturally and sets expectations before anyone even starts typing.

Common contact form mistakes

Too many fields

“Please provide your company, role, budget, timeline, and how you heard about us.” Every additional field reduces submissions. Three fields converts noticeably better than ten.

Required phone numbers

Most blog contact forms don’t actually need a phone number field. Removing it makes the form lower-friction for visitors.

Visible CAPTCHA that requires solving

“Pick all the images with traffic lights.” This is frustrating for visitors. Use an invisible option like Turnstile, reCAPTCHA v3, or a honeypot instead.

No success feedback

Submit, then a blank screen. The visitor has no idea whether it actually worked. Always show some kind of confirmation.

Form on a homepage modal

Avoid this pattern. Modal contact forms popping up on the homepage feel pushy and intrusive. A dedicated page works much better.

Connecting to email tools

If you want form submissions to also create email subscribers, both Fluent Forms and WPForms support this, often even in their free versions.

  • Add a checkbox: “Add me to your newsletter.”
  • If it’s checked, the submission gets sent to your email tool, such as MailerLite, ConvertKit, or Beehiiv, as a new subscriber.

This works well, but it should always be opt-in, with the checkbox unchecked by default. Auto-subscribing form submitters without consent violates GDPR.

For multi-purpose contact pages

Some bloggers run separate forms for different purposes entirely:

  • General inquiries.
  • Sponsorship requests.
  • Press and media.
  • Bug reports.

You can handle this either with one form and a “reason” dropdown, or with separate forms on separate pages. Both approaches work fine. Pick one and don’t overthink the decision.

Matching the form to your theme

A form that looks great in the plugin’s preview can still look out of place once it’s dropped into your actual site. Aurora is built to keep third-party form plugins looking native rather than bolted on, since its typography and spacing carry through consistently instead of fighting with whatever styles the form plugin brings along.

What this comes down to

Install Fluent Forms or WPForms Lite. Build a 3-field form: name, email, message. Add honeypot or Cloudflare Turnstile for spam protection. Configure email notifications and reply-to. Add to a Contact page in your menu. Configure SMTP via WP Mail SMTP for reliable delivery. Test before announcing. Don’t add unnecessary fields. The form is the simplest part; the spam protection and email delivery are where it usually breaks.