メインコンテンツへスキップ

Tech

Contact Form 7 の送信データを保存・一覧管理する方法|標準では残らない問い合わせを資産化する

WordPress定番フォーム Contact Form 7(CF7)は、送信内容をデータベースに保存しません。
メールを送るだけの設計のため、通知を消したり見落としたりすると問い合わせ本体も失われます。
この記事では、送信データを保存しないと何を失うのかを整理し、拡張プラグイン(送信ログのDB保存=無料)・Flamingo/CFDB7・functions.php自前実装の3つの保存方法を手間と保守の観点で比較。
一覧管理・CSV出力・外部連携まで、問い合わせをそのまま顧客データとして資産化する現実解を、受託でフォーム改修を手がける制作会社の視点で解説します。

WordPressフォームの事実上の標準である Contact Form 7(CF7) には、多くの運用者が公開後に気づく落とし穴があります。
CF7は、送信された内容をデータベースに保存しません。
入力内容を管理者宛メールで送るだけの設計のため、そのメールを削除したり、迷惑メールに紛れて見落としたりすると、問い合わせそのものが跡形もなく消えてしまいます

結論から言うと、送信内容を残して後から一覧で見返したいなら、送信ログをデータベースに保存する仕組みをCF7に足すのが正解です。
しかも、その中心となる「DB保存」は拡張プラグインの無料版で実現できます。
この記事では、まずCF7がなぜ保存しないのかとその危うさを整理し、保存する方法を「拡張プラグイン(無料)/Flamingo・CFDB7/自前実装」の3つに分けて手間と保守の観点で比較したうえで、保存したデータを一覧管理・CSV出力・外部連携で顧客データとして資産化するところまでを、受託でフォーム改修を手がける立場から解説します。

送信ログのDB保存は無料版で対応

Contact Form 7 の送信内容を、そのままデータベースに保存できます。

拡張プラグイン Frontierline Forms の無料版なら、いま使っているCF7フォームを作り直さず、送信ログをWordPressのデータベースに保存して管理画面から一覧で確認できます(WordPress.org公式リポジトリで配信中・管理画面から検索1つでインストール)。CSV全件出力も無料版に含まれ、Slack/Chatwork通知・Googleスプレッドシート連携・暗号化保存が必要になったら Pro 版へ広げられます。

Frontierline Forms 無料版を入手 →

なぜ Contact Form 7 は送信データを保存しないのか

CF7が送信内容をデータベースに残さないのは、不具合ではなく設計思想です。
CF7はあくまで「入力を受け取ってメールで飛ばす」ことに専念する軽量なフォームプラグインで、データの保管はスコープ外としています。
送信処理では、WordPress標準の wp_mail() を使って管理者宛メール(と設定していれば自動返信メール)を送るだけで、その内容をデータベースのテーブルに書き込む処理はどこにも走りません。

この割り切りは、CF7が軽くて壊れにくい理由でもあります。
ですが運用側から見ると、問い合わせの記録がメールボックスにしか存在しないという、かなり心もとない状態になります。
メールは消せてしまいますし、フィルタで別フォルダに振り分けられたり、そもそも到達性の問題で届いていなかったりすることも珍しくありません。
CF7の画面上は「送信しました」と出ていても、その内容がどこにも残っていない、ということが起こり得るのです。

なお、「送信できたはずなのにメールが届かない」こと自体に悩んでいる場合は、原因が送信経路(SMTPやなりすまし対策)側にあることが多いため、Contact Form 7 でメールが届かない原因と解決法 を先に確認してください。
本記事は、その先にある「送信内容をデータベースに残して管理する」ための解説です。

保存しないまま運用すると、何を失うのか

「メールで届くから保存は要らない」と考えていると、次のような場面で問い合わせ=売上の記録を静かに失っていきます。

取りこぼしに気づけない。
迷惑メール判定や到達性の問題で通知が届かなければ、問い合わせが来たこと自体に気づけません。
データベースに残っていれば、メールが不達でも管理画面で気づけます。

後から検索・一覧できない。
「先月あの会社から来た見積もり依頼をもう一度見たい」というとき、メールボックスを掘り返すしかありません。
一覧で残っていれば、期間や項目で絞り込んで探せます。

集計・分析ができない。
どの問い合わせ種別が多いか、どのフォームから何件来たかといった傾向を掴むには、データが構造化されて残っている必要があります。
メール本文のままでは分析に使えません。

引き継ぎ・共有ができない。
担当者個人のメールボックスにしか記録がないと、退職や異動でまるごと失われます。
チームで問い合わせを捌く現場ほど、共有できる保管先が要ります。

誤操作で消える。
受信メールは1通削除すれば戻せません。
データベース保存は、いわば問い合わせのバックアップでもあります。

要するに、送信データを保存しないということは、顧客になり得る人からの連絡を、消えやすいメール1通だけに預けている状態です。
ここを保存に切り替えるだけで、問い合わせは「流れて消える通知」から「蓄積して活用できる顧客データ」に変わります。

方法1:拡張プラグインで送信ログをデータベースに保存する(無料・おすすめ)

実装の手軽さ ★★★

最も手軽で、かつ運用まで見据えて無駄がないのが、送信ログをデータベースに保存する拡張プラグインを足す方法です。
CF7のフォーム定義には一切手を入れず、プラグインを有効化して設定画面でオンにするだけで、以降の送信内容が自動的にデータベースへ記録され、管理画面から一覧で確認できるようになります。

統合型の拡張プラグイン Frontierline Forms の場合、送信ログのDB保存は無料版に含まれます。
いま動いているCF7フォームをそのまま活かせるので、フォームを作り直す必要はありません。
コードも書きません。
加えて、確認画面・完了画面、マルチステップフォーム、そして次章で触れるCSV全件出力までを同じ無料版で備えているため、「保存だけのために別プラグインをもう1本増やす」ことにならないのが実務上の利点です。
設定手順は 送信ログのDB保存ガイド にまとめています。

チームで問い合わせを捌いていて着信に全員で気づきたい、送信データをGoogleスプレッドシートへ自動で追記したい、個人情報を暗号化して保存したい——といった運用寄りの要件は Pro版で対応します。
まずは無料版でDB保存の効果を確かめ、必要になった段階で広げるのが無駄のない進め方です。

方法2:Flamingo・CFDB7 など保存系プラグインを使う

実装の手軽さ ★★☆

「保存だけできればよい」なら、保存に特化した定番プラグインを使う選択肢もあります。
代表的なのが、CF7作者(Takayuki Miyoshi 氏)自身が提供する Flamingo と、送信データの保存・書き出しに対応する CFDB7(Contact Form CFDB7) です。

Flamingo は、CF7と同じ開発元による純正の受信メッセージ保存プラグインで、無料で使えるのが安心材料です。
有効化すると、CF7の送信内容が「受信メッセージ」としてデータベースに保存され、管理画面から確認できます。
ただし、標準ではCSVでの一括書き出しを持たないなど、あくまで「保存して閲覧する」ところに機能が絞られており、確認画面や外部通知といった運用機能は守備範囲外です。

CFDB7 は、送信データのデータベース保存とCSV/Excelでの書き出しに対応する、長く使われてきた保存系プラグインです。
保存と出力を無料でまかないたい場合の候補になりますが、CF7とは独立した専用の管理画面を持ち、機能が保存・出力に特化しているぶん、確認画面・マルチステップ・通知といった他の要件は別プラグインで足すことになります。
導入時には、お使いのWordPress/PHPバージョンへの対応状況や更新頻度をあわせて確認しておくと安心です。

いずれも「保存」という一点では有効ですが、確認画面・CSV出力・通知・自動返信まで見据えると、単機能プラグインを積み重ねるほど保守対象が増えていくのが悩みどころです。
どの拡張をどう組み合わせるかは Contact Form 7 の拡張プラグインおすすめ比較 も参考にしてください。

方法3:functions.php にコードを書いて自前で保存する

実装の手軽さ ★☆☆

プラグインを増やさず、テーマの functions.php にコードを書いて自前で保存する方法もあります。
CF7には送信完了時に発火する wpcf7_before_send_mail などのフックが用意されており、これを使って送信値を受け取り、独自テーブルやカスタム投稿タイプに書き込む、という実装です。

add_action('wpcf7_before_send_mail', function ($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) return;
    $data = $submission->get_posted_data();
    // $data を独自テーブル等に保存する処理をここに書く
});

自由度は最も高い一方で、保存先テーブルの設計、入力値のサニタイズやエスケープ、管理画面での一覧表示、CSV出力の実装、そしてWordPress・PHP・CF7のバージョンアップへの追従まで、すべてを自分で作り、保ち続ける必要があります。
テーマに紐づくコードはフォームを直すたびに保守が発生し、担当者が変わると引き継ぎも難しくなりがちです。
よほど特殊な保存要件がある場合を除き、日々の運用でDB保存が欲しいだけなら、方法1の拡張プラグインのほうが結果的に手離れよく、安全です。

3つの方法を比較する

同じ「送信データを保存する」でも、手間・保守・その先の運用でかなり差が出ます。

観点方法1:拡張プラグイン(無料版)方法2:Flamingo / CFDB7方法3:自前実装
導入の手軽さ★★★(設定オンのみ・コード不要)★★☆(有効化のみ)★☆☆(コード実装が必要)
データベース保存○(自作)
管理画面で一覧・検索自作が必要
CSV全件出力○(UTF-8 BOM・無料版)Flamingo=標準では非対応/CFDB7=対応自作が必要
確認画面・マルチステップも1本で○(同一プラグインの無料版)別プラグインが必要自作が必要
外部通知・暗号化保存○(Pro版)別プラグインが必要自作が必要
保守のしやすさ◎(公式リポジトリ配信・更新継続)○(プラグイン依存)△(自己責任で追従)

保存という一点だけを見れば3つとも成立しますが、一覧管理・CSV出力・確認画面までを1本の設定画面にまとめられるぶん、増やすプラグインも保守対象も最小で済むのが方法1です。

保存したデータを活かす:一覧管理・CSV出力・外部連携

送信データは、保存して終わりではなく使えてこそ資産です。
データベースに残しておけば、その先の活用が一気に広がります。

一覧管理・検索。
管理画面で過去の送信を一覧表示し、日付やフォーム種別で絞り込んで見返せます。
メールボックスを掘り返す必要がなくなります。

CSV全件出力。
蓄積したログをUTF-8(BOM付き)のCSVでまとめて書き出せば、Excelで文字化けせず開け、集計・リスト共有・他システムへの取り込みに二次利用できます。
Frontierline Forms では無料版でCSV全件出力に対応しています(CSV出力ガイド)。

チーム通知・外部連携(Pro版)。
送信をリアルタイムでSlackやChatworkへ飛ばして着信をチーム全員で捉えたり、送信データをGoogleスプレッドシートへ自動追記して集計・共有をリアルタイム化したりできます(スプレッドシート連携ガイド)。
手作業の転記をなくし、複数サイト・複数案件を横断して同じ土台で回せます。

暗号化保存(Pro版)。
氏名・連絡先など個人情報を含むフォームでは、送信内容を暗号化して保存し、万一の際の情報漏えいリスクを抑えられます。

まず無料版でDB保存とCSV出力という「保存の基礎」を固め、通知やデータ連携・暗号化が必要になった段階でPro版に広げれば、初期コストを抑えながら運用を強化できます。
価格とプランの詳細は 製品ページ で確認できます。

WordPress Plugin & 受託開発

CF7 の問い合わせを、消えるメールから「蓄積する顧客データ」へ。

送信ログのデータベース保存・管理画面での一覧・CSV全件出力は、Contact Form 7 の拡張プラグイン Frontierline Forms の無料版で対応します(WordPress.org公式リポジトリで配信中)。Slack/Chatwork通知・Googleスプレッドシート連携・暗号化保存が必要なら Pro版(年額$39.99〜)を、決済画面でローンチ割引コード EARLYBIRD2026 を入力すると割引価格で導入できます。既存フォームの改修や、過去データの移行・保存設計ごと任せたい場合は、受託でまとめて対応します。

Frontierline Forms 無料版を入手 → フォーム改修を相談する

まとめ

Contact Form 7 は、送信内容をデータベースに保存せず、メールで送るだけの設計です。
そのため、通知を消したり見落としたり、到達性の問題で届かなかったりすると、問い合わせ=売上の入口をそのまま取りこぼします。
送信データを保存に切り替えれば、問い合わせは「流れて消える通知」から「一覧・検索・集計・共有できる顧客データ」へと変わります。

保存の方法は、拡張プラグインで送信ログをDB保存する(無料・最も手軽)、Flamingo や CFDB7 など保存系プラグインを使う、functions.php で自前実装する、の3つです。
一覧管理・CSV出力・確認画面までを1本にまとめられ、保守対象を増やさずに済む点で、拡張プラグインの無料版から始めるのが最も無理がありません。
まずは Frontierline Forms 無料版でDB保存を有効にし、必要になったら通知・連携・暗号化へ広げてください。
保存設計や改修ごとのご相談は お問い合わせフォーム からどうぞ。

なお、保存する前段として入力の負担そのものを下げたい場合は、Contact Form 7 で条件分岐(項目の出し分け)を実装する方法 も併せてご覧ください。
関係のない項目を出さないだけで、離脱を減らしながら必要な情報の密度を上げられます。

よくある質問

Q. Contact Form 7 は送信内容をデータベースに保存しますか?

いいえ、標準では保存しません。
Contact Form 7 は入力内容をメールで送るだけの設計で、送信データをWordPressのデータベースには残しません。
そのため、通知メールを削除したり見落としたりすると、問い合わせ本体そのものが失われます。
送信内容を保存・一覧管理するには、送信ログをDBに保存する拡張プラグインを使うのが最も手軽です。

Q. 送信データを保存する一番手軽な方法はどれですか?

拡張プラグインで送信ログをデータベースに保存する方法です。
Frontierline Forms の無料版なら、いま使っているCF7フォームを作り直さずに、送信内容を管理画面から一覧で確認できるようになります。
コードは不要で、設定画面でオンにするだけです。
CFDB7 や CF7作者製の Flamingo も保存に使えますが、確認画面やCSV出力・通知まで1本でまとめたい場合は統合型の拡張が無駄になりません。

Q. 保存した送信データをCSVでダウンロードできますか?

できます。
Frontierline Forms は無料版で送信ログのCSV全件出力に対応し、UTF-8(BOM付き)で書き出すためExcelでも文字化けせず開けます。
集計・リスト共有・他システムへの取り込みにそのまま二次利用できます。
CF7作者製の Flamingo は標準ではCSV出力を持たないため、書き出しまで必要ならプラグインの選定時に対応状況を確認してください。

Q. メールが届かない問題と、送信データが保存されない問題は同じですか?

別の問題です。
メールが届かないのは送信経路(SMTP・SPF/DKIMなどの到達性)の問題で、送信データが保存されないのはCF7がデータベースに記録しない設計上の問題です。
ただし両者は連動していて、送信ログをDBに保存しておけば、メールが不達でも問い合わせ本体は管理画面に残り、取りこぼしを後から確認できます。
メール到達性の対処は Contact Form 7 でメールが届かない原因と解決法 で解説しています。