What is Contact Form 7 plugin?
Contact Form 7 is the most installed WordPress plugin in existence, with over 10 million active installations. It was created by Takayuki Miyoshi in 2007 and has been maintained continuously since. Its purpose is simple: create contact forms using shortcodes and embed them anywhere on a WordPress site. The plugin itself is free, open-source, and always will be.
Forms are built using a tag-based syntax rather than a drag-and-drop interface. This means there is a small learning curve for non-technical users, but the syntax is straightforward once understood. Standard field types — text, email, phone, textarea, select, checkboxes, radio buttons, date, file upload — are all supported. CAPTCHA is handled through integration with reCAPTCHA v3, and spam protection is further supported by the Akismet API.
Contact Form 7 does not save submissions to the database by default. If you need a submission log, the companion plugin Flamingo (free, same developer) stores all submissions. This separation is intentional — the core plugin is kept simple, and storage is optional. For teams who need conditional logic, multi-step forms, CRM integrations, or payment processing, third-party extensions or alternative form plugins like Gravity Forms or WPForms are better fits.
The biggest operational issue with Contact Form 7 is email delivery. The plugin sends form submissions via PHP mail by default, which is unreliable and frequently blocked or marked as spam. Installing an SMTP plugin to route email through a transactional mail provider resolves this for virtually all delivery problems.
Need Help With Contact Form 7 Setup, Troubleshooting, or Customization?
Need help with Contact Form 7? Whether you are dealing with errors, broken functionality, styling problems, plugin conflicts, or advanced customization, we can help you fix the issue and get the plugin working properly on your WordPress site.
Get Contact Form 7 Expert HelpKey Features
- Shortcode-based form creation and embedding
- Standard field types: text, email, phone, textarea, date, select, checkboxes, radio, file upload
- reCAPTCHA v3 spam protection
- Akismet anti-spam integration
- HTML and MIME email support
Pros & Cons
Pros
- Free and always will be
- Extremely stable with 17+ years of maintenance
- Works with any theme and most hosting environments
Cons
- No drag-and-drop builder — requires learning the tag syntax
- No built-in database submission storage (requires Flamingo add-on)
Free vs Premium
Contact Form 7 is completely free. There is no premium version. Extended features (conditional logic, multi-step forms, advanced file handling) require third-party extensions or switching to a different form plugin.
Common Problems & Fixes
Why is Contact Form 7 not sending emails?
Missing emails from Contact Form 7 are almost always a mail delivery problem, not a plugin bug. The plugin uses WordPress’s wp_mail() function, which on most shared hosting sends via PHP mail. PHP mail is unreliable, frequently blocked by receiving servers, and often triggers spam filters because the From address does not match an authenticated domain. The fix is to install a dedicated SMTP plugin — WP Mail SMTP, FluentSMTP, or Post SMTP — and connect it to a transactional email provider like Mailgun, SendGrid, or Amazon SES. After configuring SMTP, test by submitting the form and checking both inbox and spam folder.
Why is Contact Form 7 returning a "Failed to send your message" error?
The “Failed to send” error in CF7 covers multiple possible failures: the most common are failed wp_mail() delivery (usually SMTP related), a validation error on the server that CF7 could not catch, or a mail function returning false. Enable debug logging by adding define(“WP_DEBUG”, true) and define(“WP_DEBUG_LOG”, true) to wp-config.php temporarily, submit the form, and check wp-content/debug.log for the specific error. A security plugin blocking the CF7 AJAX endpoint or a ModSecurity rule can also trigger this error.
Why are Contact Form 7 submissions not being saved anywhere?
Contact Form 7 does not save submissions to the database by default. If you need a submission log, install the Flamingo plugin (free, by the same developer). After activation, all CF7 submissions are stored in Flamingo → Inbound Messages in the admin dashboard. If you already have Flamingo and submissions are missing, check whether the form’s “Accept this message” condition in Flamingo is excluding some submissions due to spam scoring.
Customization & Developer Notes
How do I add CSS styling to a Contact Form 7 form?
CF7 outputs forms with minimal default CSS. To style form elements, add CSS to your theme stylesheet or child theme targeting the .wpcf7 wrapper and standard HTML form element selectors. CF7 does not use heavily scoped class names, so styling is straightforward. For field-specific styling, add a class attribute to individual field tags using the class option in the CF7 form editor.
Can I add conditional logic to Contact Form 7?
Not natively. CF7 does not include conditional field logic in the core plugin. The third-party extension “Conditional Fields for Contact Form 7” (available at WordPress.org) adds show/hide logic based on field values. For advanced conditional logic with branching paths and multi-step flows, WPForms, Gravity Forms, or Fluent Forms are better alternatives.
Frequently Asked Questions
Is there a Contact Form 7 Pro version?
No. Contact Form 7 is entirely free and open-source with no paid tier. The developer accepts donations. Extended features come from third-party extensions developed by the wider WordPress community.
Does Contact Form 7 store form submissions?
Not by default. CF7 only sends emails on submission. To store submissions in the database, install the free Flamingo plugin from the same developer. This keeps the core plugin lightweight while making storage an opt-in feature.
Can I use Contact Form 7 for file uploads?
Yes. CF7 includes a file upload field type. Allowed file types and maximum file size are configured in the field tag settings. Uploaded files are attached to the notification email. Note that files are not stored permanently on the server by default — they are attached to the email and then deleted after sending.
Is Contact Form 7 GDPR compliant?
The plugin itself supports GDPR compliance — you can add consent checkboxes to forms and, if you do not use Flamingo, no personal data is stored in the database. GDPR compliance depends on your specific use case, how you handle the data in submitted emails, and any third-party services you integrate with the form (reCAPTCHA, Akismet, CRM tools).