Free contact form plugin for WordPress

Every enquiry saved — even when the email never arrives

Mailbag saves each message in your WordPress dashboard before it sends anything, then shows you, entry by entry, whether your mail server accepted the notification — and the error it gave when it didn't.

Why the button is switched off: every new plugin goes through WordPress.org's review queue before it gets a listing, and a plugin's name can't be reserved there in advance. The button goes live the day the listing exists. We won't offer a zip file here in the meantime — installing plugin files from a website you've just found is how WordPress sites get compromised.

  • Saved before it's sentEach entry is written to Mailbag's own table first; the email goes out after.
  • Nothing on pages without a formIts CSS and JavaScript load only where a form is placed.
  • No account, no calls homeThe free plugin contacts a CAPTCHA service only if you switch one on.
Mailbag's Entries screen in WordPress: a list of contact form entries with their dates and forms, one marked Failed with a Resend button, and a Spam view beside the list.
The Entries screen. Every message lands here first — including the one your mail server refused, which you can send again from the same row.

Why Mailbag

A quiet inbox should never be a mystery

See why a message didn't reach you

Each entry carries its own mail status: Sent to your mail server, Failed with the error your server gave, or Not sent. Resend it with one click, or send a test email to check the whole path.

Nothing lost when email breaks

The message is stored in WordPress before any email is attempted. If sending fails, the entry is still in your list, marked Failed, with everything the visitor typed.

Spam stopped without puzzles

A hidden honeypot, a time trap and a limit of five messages per IP address per ten minutes are always on. Add Cloudflare Turnstile, hCaptcha or reCAPTCHA v3 with your own keys if you like.

Replies go straight to the sender

Reply-To is the visitor's address in every new form, and the From address stays on your site's domain — with a check that tells you when it doesn't.

Leave Contact Form 7 without retyping

The importer reads your CF7 forms — fields, recipients, subject, message, Mail (2) — shows first what can't come along, and lists every page a CF7 form sits on.

Private by default

Visitors' IP addresses aren't stored unless you choose to, old entries can delete themselves after a period you set, and WordPress' own privacy tools find entries by email address.

A look inside

What you'll see in your dashboard

Mailbag Pro · paid add-on

Keep every lead flowing into your newsletter and CRM

Pro sends each entry on to Mailchimp, Brevo, Kit, MailerLite, ActiveCampaign, HubSpot or any webhook — Zapier, Make, n8n — using API keys from your own accounts.

  • Choose, for each form, the list and the fields each entry goes to.
  • When a service stops accepting entries — a revoked key, a deleted list, an outage — Pro keeps them and tries again for up to 7 days.
  • It emails you at most once a day per broken connection, and once more when it works again.

or ·

Compare free and Pro

Not on sale yet. Pro installs on top of the free plugin, and the free plugin isn't in the WordPress.org directory yet — so there would be nothing to use it with.

Questions in the meantime? Email us.

Free and Pro

The free plugin is the whole contact form

Pro doesn't unlock anything in the free plugin. It adds one job: getting each entry into the other services you pay for, and noticing when that stops working.

What it doesFreePro
Forms with 11 field types, four templates, block and shortcodeYesYes
Every entry saved, searchable, exportable to CSVYesYes
Mail status per entry, Resend, Send test emailYesYes
Honeypot, time trap, IP limit — plus Turnstile, hCaptcha or reCAPTCHA v3YesYes
Import from Contact Form 7, forms in and out as JSONYesYes
Consent field, retention period, WordPress privacy toolsYesYes
Entries sent on to Mailchimp, Brevo, Kit, MailerLite, ActiveCampaign, HubSpot or a webhookYes
Each connection watched, with an alert email when one breaksYes
Failed deliveries kept and sent again for up to 7 daysYes

Questions

Before you install it

Is the free version complete, or a trial?

Complete. Nothing in it is time-limited, capped or switched off, and it never asks for a licence. Pro adds a separate job — passing entries on to other services — and everything in the free column above stays free.

Will my emails arrive now?

Mailbag doesn't deliver email itself: like every WordPress form, it hands the message to wp_mail(), and your host's mail server or your SMTP plugin does the rest. What changes is that you can see what happened. Each entry shows whether the mail server accepted the notification and, if not, the exact error — and the entry is saved either way.

Does it work with my SMTP plugin?

It sends through WordPress' own wp_mail(), which is the function SMTP plugins such as WP Mail SMTP and FluentSMTP take over. Whatever your SMTP plugin does, Mailbag records the outcome WordPress reports back.

What does the plugin send out, and to whom?

The free plugin sends nothing to us. It contacts Cloudflare, hCaptcha or Google only to check a CAPTCHA answer, and only if you switch that CAPTCHA on. Pro also talks to the services you connect, with your own keys, and to our licence service for updates. The privacy policy lists every call.

What happens if I stop paying for Pro?

Nothing switches off. Your connections, the retry queue and the alert emails keep running, and no data is removed. Updates and support stop, and one notice on Mailbag's Settings screen says so.

Will it slow my site down?

Its stylesheet and script load only on pages that show a form, and they don't need jQuery. Entries live in two tables of Mailbag's own, not among your posts.

Put a form on your site that tells you what happened

The free download opens here once WordPress.org's review has approved the listing.