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

Documentation

Contact Form 7 の送信内容をデータベースに保存する方法

Contact Form 7(CF7)は標準では送信内容を保存しない。フォーム送信をデータベースに保存し管理画面で履歴を一覧する方法を解説。コード不要で設定画面だけで保存する方法と、自前実装の方法を比較。

Contact Form 7(CF7)は、標準では送信内容を一切保存しない
メール通知が文字化けしたり迷惑メール判定で消えたりすると、問い合わせ内容が丸ごと失われます。
「先週、誰から何が届いた?」に答えられません。

送信をデータベースに保存して管理画面で履歴を残せば、この取りこぼしをゼロにできます。

なぜ送信内容のDB保存が必要か

メールは消えます。
サーバーの送信失敗、Gmail側の迷惑メール振り分け、担当者の誤削除——どれが起きても、保存していなければ復旧できません。
重要なリードや見積もり依頼を失うのは事業の直接的な損失です。
DBに残しておけば、メールと二重で記録が残り、後から検索・集計もできます。

方法1:設定画面だけで完結させる(コード不要・おすすめ)

functions.php を触らず、WordPress管理画面の設定だけで送信内容をDB保存できます。
Frontierline Forms を使えば、次の手順で完了します。

保存・検索・閲覧・CSV出力(全件)は 無料版 で利用可。送信データのAES-256暗号化保存は Pro版 です。

手順

  1. 保存を有効化:設定で送信内容のデータベース保存をオンにします。
  2. 保存項目を確認:名前・メール・内容・送信日時など、保存される項目を確認。
  3. 履歴を一覧:管理画面の一覧から送信履歴を検索・閲覧します。
  4. テスト送信:フォームを送信し、一覧に記録が追加されるか確認。

保存先テーブルの設計やサニタイズはプラグインが処理するので、コードの保守が要りません。
保存した履歴はそのまま CSV全件出力 で書き出せます。

データベースに保存された送信ログの一覧画面。キーワード検索とCSV出力に対応
送信ログは管理画面で一覧・検索でき、CSVでの書き出しもここから行えます。

方法2:wpcf7_before_send_mail で自前実装する(上級者向け)

自分でコードを書く場合、CF7の wpcf7_before_send_mail フックで送信データを受け取り、カスタムテーブルへ保存します。

add_action('wpcf7_before_send_mail', function ($form) {
  global $wpdb;
  $submission = WPCF7_Submission::get_instance();
  $data = $submission ? $submission->get_posted_data() : [];

  $wpdb->insert($wpdb->prefix . 'cf7_entries', [
    'created_at' => current_time('mysql'),
    'name'       => sanitize_text_field($data['your-name'] ?? ''),
    'email'      => sanitize_email($data['your-email'] ?? ''),
    'message'    => sanitize_textarea_field($data['your-message'] ?? ''),
  ]);
});

事前に dbDelta() で保存用テーブルを作っておく必要があります。

手動実装でつまずく点

  • テーブル設計と作成が必要:プラグイン有効化時に dbDelta() でテーブルを作る処理を別途書きます。
  • 一覧・検索UIを自作:保存しただけでは閲覧できません。管理画面に一覧・検索・詳細表示を自前で実装する手間が大きいです。
  • サニタイズ漏れのリスク:入力値の無害化を怠ると、保存値の表示時にXSSなどの脆弱性になります。

保存は数行でも、閲覧UIまで作ると一気に重くなります
実用に耐える管理画面を自作するより、設定で完結する方法1が現実的です。

Lite版とPro版の違い

Lite(無料)Pro
保存件数全件・永続全件・永続
検索・絞り込み
CSV出力(全件)
暗号化保存

保存・一覧・CSV出力までは無料で完結。
送信データの暗号化保存や外部通知・自動返信が必要ならPro版へ。

まとめ

CF7は標準で送信内容を保存しないため、メール不達で内容が消えるリスクがあります。
wpcf7_before_send_mail での自前実装も可能だが、閲覧UIの自作が重いです。
設定だけで保存・一覧・出力まで完結させたいなら、対応プラグインが速いです。
保存・一覧・CSV出力は無料で試せます。

送信ログのDB保存に加え、CSV全件出力、Slack/Chatwork/スプレッドシート通知、マルチステップまで設定だけで実装したいなら、Frontierline Forms の導入を検討してください。

Frontierline Forms

この設定、管理画面のチェックだけで完了。

通知・送信ログ・CSV出力・マルチステップを、コードを書かず設定画面だけで実装。制作会社向けの5サイト/無制限ライセンスなら、複数案件のフォーム保守をまとめて巻き取れる。決済と同時にライセンスキーを即時発行。

価格・購入を見る → 機能の詳細