---
title: "Contact Form 7 + SMTP plugin: the handoff nobody tests"
description: "CF7 handles the visitor. Your SMTP plugin handles mail. The fragile bit is the seam between them—and it fails without telling the user."
author: "Lars Koudal"
authorUrl: "https://larsik.com"
translationKey: "wordpress-cf7-smtp-handoff"
category: wordpress
tags: [wordpress, contact-form-7, smtp]
publishedAt: "2026-06-20"
heroImage: "/blog/cf7-smtp-handoff.jpg"
heroImageAlt: "WordPress admin with Contact Form 7 and mail plugin settings"
indexable: true
featured: false
---
> **Canonical:** https://formreceipt.com/blog/wordpress/cf7-smtp-handoff

# Two plugins, one pipeline

Contact Form 7 is still everywhere on WordPress—and for simple sites, fair enough. It collects input, runs validation, and calls `wp_mail()`. That is the entire contract.

Almost every serious site adds a second plugin: WP Mail SMTP, FluentSMTP, Post SMTP, or similar. That plugin replaces or wraps PHP `mail()` with authenticated SMTP.

Visitors see one form. Under the hood there are **two vendors and zero integration tests**.

## How the handoff fails in the wild

**Wrong From address.** CF7 sends as `wordpress@yourdomain.com` while the SMTP plugin is authorized only for `notifications@`. Some relays rewrite it; others reject silently or dump mail in spam.

**HTML vs plain mismatch.** CF7 mail templates with unclosed tags confuse picky parsers. The SMTP log shows “sent.” The inbox shows nothing useful.

**Duplicate mail plugins.** I have seen sites with two SMTP plugins active after a migration. Both claim success. Neither delivers reliably.

**Caching and AJAX submits.** Full-page caches serving stale nonces cause intermittent failures that are hell to reproduce manually. “It worked when I tried” is true and useless.

## What I check on CF7 sites

1. Submit with realistic field values—not `test` / `test`.
2. Read the SMTP plugin’s log for that timestamp.
3. Confirm the message in the recipient mailbox, not only the log.
4. If the log is empty, CF7 never reached the handoff—check PHP error logs and CF7’s own debug when enabled.

I keep CF7’s mail tab screenshot in the client folder. When someone edits “additional headers” without telling me, I have a baseline.

## Opinionated take

CF7 is not the problem. **Untested handoffs** are the problem. You can run the same stack for years until one DNS change or one plugin update moves the seam.

That is why I automate submissions on CF7 sites the same way I do on custom React forms. The plugin names change; the question does not: did the inquiry arrive where sales expects it?

If you are debugging a stubborn CF7 site today, start at the SMTP log, then the inbox, then the DNS. In that order. Skipping the inbox is how teams lose weeks.
