3.5Contact forms
The essentials in 30 seconds
- A form plugin (Contact Form 7, WPForms, Fluent Forms) creates the form without coding.
- The real challenge is deliverability: notifications often end up in spam without a reliable SMTP plugin.
- Protect the form with anti-spam (honeypot, reCAPTCHA) and required fields.
Running mini-case — actually receiving the messages
Hassan wants to receive quote requests by email. Samir creates a simple form (name, email, message), then discovers that the notifications are not arriving. He installs an SMTP plugin and connects a reliable sending service. He also adds anti-spam protection: without it, Hassan's inbox would fill up with bot messages within days.
Sequel to case 3.4 — the site is secure; it needs a reliable contact channel.
1. Creating the form
WordPress does not offer a native form, but plugins do it very well: Contact Form 7 (free and lightweight), WPForms or Fluent Forms (intuitive drag and drop). You define the useful fields — name, email, message, possibly phone and type of request — and mark the essential fields as required.
The form is inserted into a “Contact” page via a block or a shortcode. Samir provides a clear confirmation page after submission and checks the rendering on mobile. A long form discourages people: it is better to ask only for the essentials.
2. Deliverability and anti-spam
The classic trap: the form works, but the emails do not arrive or go to spam. The cause is often sending through the server's mail function, which is unreliable. An SMTP plugin such as WP Mail SMTP, connected to a sending service (Brevo, for example), makes notification delivery reliable.
Without protection, a form quickly receives bot submissions. Enable a honeypot, a reCAPTCHA or a simple question, and possibly a limit on the number of submissions. Samir sends a real test after every change and also checks the recipient's spam folder.
🔎 Concrete example — Receiving Hassan's requests (Samir's case)
1. WPForms: Name, Email, Message (required).
2. Notification to contact@atelierbahja.ma.
3. WP Mail SMTP + Brevo for deliverability.
4. Honeypot + reCAPTCHA.
5. Real test, check the spam folder.
→ Clear confirmation page and error message.
Result: a reliable, clean contact channel.
Lesson: test the actual sending, not just the display.
Section vocabulary
- Form plugin
- A module that creates and manages forms without coding: Contact Form 7, WPForms, Fluent Forms.
Simple example: a quote request form for the workshop.
What it is not: coding a form by hand without protection.
Reflex: form = dedicated plugin.
- Notification
- The email sent to the admin or the user on each submission.
Simple example: an alert to contact@atelierbahja.ma.
What it is not: creating a form with no recipient configured.
Reflex: always test the notification.
- SMTP
- A reliable sending service that improves email deliverability.
Simple example: WP Mail SMTP connected to Brevo.
What it is not: relying on the server's mail function.
Reflex: missing emails → check SMTP.
- Anti-spam
- Protection against bot submissions: honeypot, reCAPTCHA, question.
Simple example: an invisible honeypot on the form.
What it is not: publishing a bare form.
Reflex: anti-spam from launch.
- Required field
- A field required to submit the form: name, email, message.
Simple example: email is required so you can reply.
What it is not: making everything optional and receiving unusable messages.
Reflex: ask for the essentials, but require them.
In practice — A form that really works
- Install a form plugin and create a Name, Email, Message form.
- Set the notification to the right recipient with a clear subject.
- Insert the form into a Contact page and send a real test.
- If the email is missing, install WP Mail SMTP and connect a service; add anti-spam.
Ready-to-use script — reassuring about messages (20 s)
“Requests will arrive directly in your inbox, with the name, email and message. I have configured sending to avoid spam and protected the form against bots. We will run a test together before going live.”
Always run a real test with the client: that is what reassures them.
Copy-paste template — form sheet
PLUGIN: _______________
FIELDS (required): _______________
NOTIFICATION RECIPIENT: _______________
SMTP CONFIGURED: yes / no (service: _______________)
ANTI-SPAM: honeypot / reCAPTCHA / question
REAL TEST CARRIED OUT: yes / no (spam folder checked)
Quote request
Add the project type and an indicative budget, without making it heavier.
Simple contact
Name, email, message: the essentials are enough.
Booking
Date and number of people fields, with automatic confirmation.
Newsletter
A single email field, double opt-in for consent.
✓ Best practices
- Run a real test after configuration.
- Make sending reliable with SMTP.
- Protect the form against bots.
✗ Common pitfalls
- Creating the form without testing reception.
- Relying on the server's mail function.
- Publishing a form without anti-spam.
Key takeaways
- A plugin creates the form without coding.
- Deliverability depends on reliable SMTP.
- Anti-spam prevents a flood of bots.
- A real test validates the form before delivery.
48h Challenge — apply tomorrow
Create a contact form, configure the notification and send a real test. If the message does not arrive, install SMTP and try again. 20 minutes.
- I create a form with the useful fields.
- I configure and test the notifications.
- I protect the form against spam.
Frequently asked questions
Why don't my form emails arrive?
Often because the server uses an unreliable mail function or the message is classified as spam. Install an SMTP plugin connected to a recognised sending service, then test again while checking the spam folder.
Which anti-spam should I choose?
An invisible honeypot is simple and effective. reCAPTCHA adds a visible but robust check. For a small site, a honeypot and a simple question are often enough; adjust according to the volume of spam.
Can I save messages in WordPress?
Yes, some plugins keep submissions in the database. Check your obligations to inform users and retain personal data: save only what is necessary and set a retention period.
Hassan wants to receive contact requests by email. Which solution is the safest?