> ## Documentation Index
> Fetch the complete documentation index at: https://vr-it-services-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Set up the demo contact form, and fix the hardcoded form ID before launch.

# Contact form 7

# Contact Form 7

Contact Form 7 is one of the two plugins the setup wizard manages. The demo Contact page uses it — and that page needs fixing before you launch.

![Screenshot: the Contact page showing a rendered Contact Form 7 form](https://mintlify.s3.us-west-1.amazonaws.com/vr-it-services-pro/images/screenshots/contact-form-7-rendered.png)

## The known issue

> [!WARNING]
>
> **The demo Contact page ships with a broken form.** The layout contains a Contact Form 7 shortcode with a hardcoded form ID — `b73d75a` — which was valid only on the original author's site. On your install no such form exists, so the widget renders empty or shows an error.
>
> This is the single most important fix in this entire documentation, because a broken contact form on a live business site is a lost lead.

## Fixing it

**1. Install Contact Form 7**

**Plugins → Add New → search "Contact Form 7" → Install Now → Activate.**

**2. Create a form**

**Contact → Contact Forms → Add New**, or use the default template and edit it.

**3. Set your receiving email**

Under the **Mail** tab. Confirm delivery works — check spam, and see the email troubleshooting section below if it does not arrive.

**4. Save the form**

Note the form ID shown in the form's title bar.

**5. Open the Contact page in Elementor**

**Pages → Contact → Edit with Elementor**.

**6. Replace the broken widget**

Delete the existing Contact Form 7 widget and drag in a new one, then select your form in its dropdown.

**7. Update**

![Screenshot: the Contact Form 7 widget settings showing the form selection dropdown](https://mintlify.s3.us-west-1.amazonaws.com/vr-it-services-pro/images/screenshots/contact-form-7-widget.png)

> [!NOTE]
>
> The broken widget is an Elementor **Contact Form 7** widget. It is easier to replace with a new one from the Elementor panel than to repair in place.

## Verifying the form works

Do not skip this. Submit the form from the **live** site — not the Elementor preview — and confirm the email arrives.

> **Check spam**
>
> WordPress mail frequently lands in spam on new hosts.

> **Check the address**
>
> Some hosts silently refuse mail from addresses not on the domain.

> **Check the host log**
>
> Ask your host whether the mail was rejected and why.

> [!WARNING]
>
> **If mail does not arrive, use an SMTP plugin.** Install **WP Mail SMTP** (or similar) and configure it with a proper sending service. Default WordPress mail uses your host's PHP `mail()` function, which is frequently misconfigured or rate-limited. This is a host problem, not a theme problem — but it is the most common cause of silently broken contact forms.

## The theme's form styling

The theme styles form fields consistently — inputs, textareas, selects, submit buttons, focus states, and error messages — regardless of which plugin generates them.

**It works with other form plugins too**

Because the theme styles form elements at the CSS level rather than integrating with one plugin's
API, WPForms, Ninja Forms, Formidable, Gravity Forms, and similar all receive the same treatment.

![Screenshot: theme-styled form fields showing focus states and the submit button](https://mintlify.s3.us-west-1.amazonaws.com/vr-it-services-pro/images/screenshots/contact-form-7-styling.png)

## Form accessibility

The theme provides accessible markup where it controls the output.

> **Password-protected posts**
>
> The theme renders its own password form with a proper label for password-protected content.

> **Third-party forms**
>
> Contact Form 7 generates its own markup, including field labels and validation messages. Check them yourself if accessibility is a priority for you.

## Recommended form fields for a SaaS contact page

| Field | Type | Notes |
| - | - | - |
| Name | Text | Required |
| Email | Email | Required |
| Company | Text | Optional, but useful for qualification |
| Message | Textarea | Required |
| Consent | Checkbox | Required for GDPR compliance, if applicable |

**Keep forms short**

Every extra field reduces completion rates. A name, email, and message will outperform a
thirteen-field form for most SaaS sites.

## Spam prevention

Contact Form 7 has no built-in spam protection beyond a CAPTCHA add-on.

> **Add a CAPTCHA**
>
> The ReCAPTCHA integration add-on is the standard solution.

> **Add a honeypot**
>
> Most spam bots fill every field. A hidden field humans leave blank is remarkably effective.

> **Limit by IP**
>
> A rate-limiting plugin such as WP Mail SMTP or a firewall rule will cut volume at the server level.

## Keeping forms reachable

> [!WARNING]
>
> If you use the theme's default footer CTA section, it links to your contact page. If you delete or rename that page without updating the **Secondary CTA URL** setting, the button on every page leads nowhere. Check it as part of your launch pass.

## Troubleshooting

> **The form widget shows an error**
>
> The referenced form ID does not exist. This is the expected state of the imported demo page before you fix it — select a real form in the widget's dropdown.

> **The form renders but styling looks wrong**
>
> Usually a plugin conflict, or a page-builder override. Check [Plugin conflicts](/troubleshooting/plugin-conflicts.md).

> **Submissions succeed but no email arrives**
>
> An SMTP problem, not a Contact Form 7 problem. Install WP Mail SMTP and configure a real sending service.

> **The form is not in the right place**
>
> On an Elementor page, widget layout is controlled by the builder's container structure, not by the theme. Adjust the column and section settings in Elementor.

## Related

> **[Demo pages](/templates/demo-pages.md)**
>
> The four imported pages, including Contact.

> **[Launch checklist](/getting-started/launch-checklist.md)**
>
> Forms are item 2 — the most likely thing to be broken at launch.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.