Skip to content

Contact Form 7

Contact Form 7 is a lightweight and widely used WordPress plugin for creating contact forms and simple data‑collection forms.

At Terra, we use it for simple, reliable forms where we want full control over markup, behavior, and integrations without introducing heavy form builders.


  • The form requirements are simple or moderate
  • We need editorial teams to manage form copy
  • We want full control over HTML and CSS
  • We don’t need complex conditional logic or multi‑step flows
  • Complex multi‑step forms
  • Advanced conditional logic
  • Native submission storage without additional plugins

  1. Go to WordPress Admin → Contact → Contact Forms
  2. Click Add New
  3. Give the form a clear name
  4. Define the form structure using form tags
  5. Save the form

Each form generates a shortcode:

[contact-form-7 id="123" title="Contact form"]

Use this shortcode in pages, posts, or templates.


Contact Form 7 uses a tag‑based syntax.

Common field examples:

[text* your-name]
[email* your-email]
[tel your-phone]
[textarea your-message]
[submit "Send"]

Notes:

  • * marks a required field
  • Field names are used later in email templates
  • Layout is controlled directly in the form markup

Under the Mail tab, define how submissions are sent.

Typical setup:

  • To: site or team email
  • From: a valid domain email (avoid user email directly)
  • Reply-To: user email field
  • Message Body: use form tags

Example:

Name: [your-name]
Email: [your-email]
Message: [your-message]

The Messages tab allows customizing:

  • Success messages
  • Validation errors
  • Required field notices
  • Spam warnings

Keep messages clear and user‑friendly.


We commonly use Google reCAPTCHA for spam protection.

Steps:

  1. Register the site with Google reCAPTCHA
  2. Add keys under Contact → Integration
  3. Insert the reCAPTCHA tag in the form if needed

If Akismet is enabled, it can automatically flag spam submissions without extra setup.


  • Keep forms short and focused
  • Always test email delivery before launch
  • Use a domain email for the sender
  • Add spam protection in production
  • Avoid piling plugins for complex flows

Knowledge Check

Test your understanding of this section

Loading questions...