Contact Form 7 is a free WordPress plugin for creating and emailing contact forms. To use it reliably, install and activate the plugin, place its block on a page, then configure the Form and Mail tabs as a matched pair. Every field tag in the form needs a corresponding mail-tag in the email template. After that, test a real submission, add an appropriate spam control, and install Flamingo if you need a searchable record of messages.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
This guide follows the current WordPress.org listing and Contact Form 7 documentation. Plugin, WordPress, PHP, and integration requirements can change, so verify the values shown in your own administration area before a production launch.
As an Amazon Associate I earn from qualifying purchases.
What Contact Form 7 does—and what it does not
Contact Form 7 creates front-end forms and passes submitted values through WordPress’s mail system. You build the controls in the Form tab, define the outgoing email in the Mail tab, and embed the finished form in a page with a Contact Form 7 block. The plugin is free and open source from Rock Lobster Inc.; the WordPress.org directory reports more than 10 million active installations in 2026.
The plugin is not a built-in submission inbox. Its default configuration does not itself track visitors covertly, write personal data to the database, send data to external servers, or use cookies, according to the WordPress.org listing. Mail delivery still depends on your site’s WordPress mail path and hosting. If you need historical messages, search, retention controls, or manual spam review, add the Flamingo companion plugin.
#1 Best Overall
Check compatibility before installing
The WordPress.org listing currently shows Contact Form 7 version 6.2.2, tested up to WordPress 7.1.3, with PHP 8.3 or higher. These directory values are volatile rather than permanent guarantees. In Dashboard > Updates, confirm the WordPress version, PHP version, and available plugin update before you deploy or update a live form. If your host runs an older PHP release, resolve that compatibility issue first instead of forcing an installation.
- Administrator access to the WordPress dashboard.
- A page where the form will be displayed, such as Contact or Get in touch.
- An address at your site’s domain that can receive messages.
- Access to your site’s mail, DNS, and spam folders for delivery testing.
Install and publish your first form
- Sign in to WordPress with an administrator account.
- Open Plugins > Add Plugin.
- Search for Contact Form 7. Check that the author is Rock Lobster Inc., then choose Install Now.
- Choose Activate after the installation finishes.
- Open Pages > Add New, or edit an existing contact page.
- Select the Contact Form 7 block in the editor.
- Use the block’s selector to choose the default form, then save or publish the page.
After activation, the dashboard also contains Contact > Contact Forms. Open the default form there to edit its controls and mail template. The block on your page displays the currently selected form, so later edits to that form normally appear on the page without replacing the block.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Build the fields in the Form tab
Open Contact > Contact Forms, select a form, and use the Form tab. The tag generator can insert text, email, number, date, checkbox, menu, file, acceptance, and submit controls. A generated tag is inserted where the cursor is positioned; place it beside a readable label so visitors know what to enter.
Choose stable, descriptive field names
Name each field with a short identifier such as your-name, your-email, or your-message. These names are the link between the form and the email. Changing a name in the Form tab without changing its matching mail-tag later will leave the email blank or omit the value.
Use labels and required markers deliberately
Write labels in plain language: “Your name,” “Email address,” and “How can we help?” Mark a field required only when you genuinely need it to answer or route the request. Requiring optional details increases friction and can cause visitors to abandon the form. Keep instructions close to the control they describe, especially for file limits, date formats, or consent text.
Common controls and their purpose
| Control | Typical use | Implementation note |
|---|---|---|
| Text | Name, company, short subject | Use a clear field name; add a required marker only when necessary. |
| Visitor’s reply address | Use the email field later in the Mail tab’s Reply-To header. | |
| Number | Quantity, age, reference number | Set sensible minimum and maximum values when the generator offers them. |
| Date | Preferred appointment or event date | Explain the expected date format if it matters to your workflow. |
| Checkbox | Multiple selections or consent choices | Make the options and whether a choice is required unambiguous. |
| Menu | One choice from a controlled list | Use concise option labels and include an instruction such as “Select one” when needed. |
| File | Attachments such as screenshots | State accepted file types and size limits in the surrounding text; review storage and privacy implications. |
| Acceptance | Agreement to terms or processing | Link to the relevant policy on the page and make the wording specific. |
| Submit | Send action | Use a clear button label such as “Send message.” |
Example form markup
A simple form might contain the following tags (the exact generated attributes can differ):
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11<label>Your name (required)<br>[text* your-name]</label>
<label>Email address (required)<br>[email* your-email]</label>
<label>Message<br>[textarea your-message]</label>
[submit "Send message"]
Save the form, then preview the page on desktop and mobile. Check keyboard focus, label clarity, error messages, and whether the submit button is easy to identify.
Configure the Mail tab so every value arrives
Select the Mail tab beside Form. This template controls who receives the notification, what appears in the headers, and which submitted values are included in the message.
Set the recipient (To)
Enter the mailbox that should receive enquiries. Confirm the spelling and domain, particularly when the address is different from the WordPress administrator account. If several staff members need the message, use the address format supported by your mail system and test each recipient.
Use a site-controlled From address
Set From to an address on your own domain, for example [email protected]. Putting a visitor’s address in From can conflict with modern sender-authentication checks and make delivery less reliable. Put the visitor’s field in Reply-To instead, such as:
Rank #3
From: Website form <[email protected]>
Reply-To: [your-email]
Use an address that exists or is authorized for your domain. Your host’s DNS and mail-authentication settings still affect delivery; Contact Form 7 cannot guarantee a universal SMTP solution.
Write a useful subject
Make the subject identify the source and, when helpful, include a submitted value:
Subject: New website enquiry from [your-name]
Do not place untrusted, unnecessary data in a subject line. Keep it short enough to scan on a phone.
Build the message body with matching mail-tags
Each mail-tag must match a Form-tab field name. For example, the form-tag [text your-new-field] requires the mail-tag [your-new-field]. Contact Form 7’s FAQ describes the rule this way: “A mail-tag in the Mail tab panel will be replaced with the user input to the corresponding form field.”
Recommended Free Tools
Name: [your-name]
Email: [your-email]
Message:
[your-message]
If a visitor’s input is missing, compare the spelling, hyphens, and required marker in both tabs. The marker in [text* your-name] makes the field required; the corresponding mail-tag remains [your-name] without the asterisk.
Rank #4
Use Additional Headers carefully
Typical headers are:
Reply-To: [your-email]
Keep header values tied to the appropriate field and avoid accepting arbitrary header text from visitors. Save the Mail tab, then submit the form from the public page rather than relying only on the editor preview.
Test delivery from the live page
- Open the published contact page in a private browser window or while logged out.
- Enter realistic test data, including a valid reply address.
- Submit the form once and wait for the success or error message.
- Check the intended recipient inbox and its spam or junk folder.
- Reply to the message to confirm that Reply-To reaches the test address.
- Check that every field appears with the expected value and that attachments, if enabled, are handled safely.
If no message arrives, verify the To address, the domain-based From address, Reply-To, DNS and mail authentication, host sending limits, and spam folders. Then consult Contact Form 7’s official troubleshooting guidance and your host’s mail logs. A successful on-page confirmation means the form processed the request; it does not prove that the recipient’s provider accepted the email.
Add spam protection without hiding the privacy trade-off
Contact Form 7 documents several controls, including reCAPTCHA, Akismet, and a disallowed list. Choose based on the amount of spam, tolerance for user friction, whether data may leave your site, and whether your team can review false positives.
| Control | How it works | Trade-off |
|---|---|---|
| reCAPTCHA v3 | Scores interactions in the background. | Little visible friction, but submitter data is processed by Google’s service and the integration must be maintained. |
| Akismet | Sends selected field values for spam analysis. | Requires an active subscription; external processing and false-positive review must be considered. |
| Disallowed list | Blocks values that match rules you define. | Simple and local, but requires ongoing rule maintenance and can block legitimate enquiries. |
| Flamingo review | Stores messages so administrators can mark them as spam or not spam. | Provides an audit trail, but creates a personal-data retention obligation. |
Configure reCAPTCHA v3
Contact Form 7 version 5.1 and later uses reCAPTCHA v3. It runs in the background, so you do not add a visible “I’m not a robot” checkbox or a [recaptcha] tag.
- Register the site with Google reCAPTCHA and choose the v3 service for the correct domain.
- Copy the generated site key and secret key.
- In WordPress, open Contact > Integration.
- Open the reCAPTCHA panel, enter both keys, and save the settings.
- Submit the live form and inspect the result; resolve domain or key errors before treating the integration as active.
Because reCAPTCHA sends information to an external provider, disclose that processing in the site’s privacy notice and review Google’s current terms and policy for your jurisdiction.
Best Value
Use Akismet when its service model fits
Akismet can receive selected Contact Form 7 field values for spam analysis. It requires an active subscription. Install and configure it according to its current service instructions, then test both an ordinary message and an obvious spam sample. If administrators need to classify stored messages as spam or not spam, the Akismet guidance points to Flamingo as the companion option.
Start with one control and watch false positives
Enable one documented control at a time so you can identify which setting changes delivery or blocks legitimate visitors. Review real enquiries for several days, record false positives, and adjust rules or the chosen service before adding another layer.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Store and search submissions with Flamingo
Contact Form 7 does not provide a built-in inbox for historical messages. Install and activate Flamingo when a site needs administrator-accessible retention, search, export, or manual spam review. After activation, use its dashboard screens to inspect messages and classify suspicious entries.
Storage changes the site’s privacy responsibilities. Decide who may access submissions, how long records are kept, and when they are deleted. Limit administrator permissions, document the retention period, and include the storage purpose in the privacy notice. Keep only the fields needed for the stated business process.
Understand data transfers and privacy settings
The default plugin behavior is different from an integration-enabled setup. The WordPress.org listing identifies reCAPTCHA, Akismet, Constant Contact, Brevo, Stripe, and Cloudflare Turnstile as integrations that may send submitter personal data to those providers. Activating one of them can therefore change the disclosures, contracts, and geographic-transfer analysis required for your site.
- List each external service used by the form and the categories of data it receives.
- Explain the purpose and legal basis in the site’s privacy notice where required.
- Review each provider’s current policy, retention terms, and regional availability.
- Do not collect sensitive information in a general contact form unless you have a specific, protected process for it.
- Set a deletion schedule for Flamingo records and exported mail.
Troubleshoot the problems people see most often
A field is missing from the email
- Open the Form tab and copy the field’s exact name.
- Open Mail and make sure the same name appears in brackets as a mail-tag.
- Check hyphens, underscores, and singular/plural spelling.
- Submit a new test; an old message cannot be retroactively populated.
The form says it sent, but no email arrives
- Confirm the To address character by character.
- Use a domain-based From address and the visitor’s field in Reply-To.
- Check recipient spam and quarantine folders.
- Review DNS and sender-authentication records, hosting mail limits, and server mail logs.
- Test from the public page and consult the official Contact Form 7 troubleshooting documentation.
Spam increases after launch
- Enable one documented anti-spam control.
- Check whether legitimate messages are being classified incorrectly.
- Refine a disallowed list cautiously; broad rules can block real customers.
- Consider Flamingo for administrator review when missing a legitimate enquiry would be costly.
The integration reports a key or domain error
- Confirm that the key belongs to the exact domain and reCAPTCHA version you selected.
- Paste the site key and secret key again without extra spaces.
- Save under Contact > Integration, clear any page cache, and retest.
- Check current plugin and provider requirements before changing production settings.
You need an audit trail
Install Flamingo, restrict access, define retention and deletion rules, and test that new submissions appear in its administration screens. Contact Form 7 alone will not create that history.
Quick Recap
Production checklist
- Plugin, WordPress, and PHP versions meet the current directory requirements.
- The form page has a Contact Form 7 block selecting the intended form.
- Every visible control has a clear label and an appropriate required setting.
- Every Form-tab field has a matching Mail-tab mail-tag.
- To, From, Reply-To, subject, and body have been checked.
- A real submission reached the recipient and Reply-To worked.
- Spam protection matches your privacy and usability requirements.
- External data transfers are disclosed in the privacy notice.
- Flamingo is installed only when retention or review is needed, with a defined retention period.
- You will recheck compatibility and integration settings after future updates.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




