他社との比較

Contact Form 7の保存は標準では行われない|消える前に決めること

2026年9月1日 ・ Halict編集部

「contact form 7 保存」で検索してこのページに来た人の多くは、届いたはずの問い合わせが見当たらない、あるいは管理画面のどこを探しても送信内容の一覧が出てこない、という状態にいます。結論から書くと、Contact Form 7は標準では送信されたメッセージをどこにも保存しません。これは設定の間違いでも不具合でもなく、公式ドキュメントに明記されている設計です。この記事では、公式の記述に沿って「何が保存されないのか」「Flamingoを入れると何がどの状態で残るのか」を正確に押さえたうえで、受付をひとりで回している人が次に何を決めればよいのかを整理します。

「保存されない」は不具合ではなく、公式に書かれた設計

まず事実を確認します。Contact Form 7の公式FAQには、送信されたメッセージを見られるかという質問への回答として次の記述があります。

Contact Form 7 doesn't save the submitted messages. To manage messages through Contact Form 7, you need to install Flamingo (another plugin created by the same developer). 出典: contactform7.com

さらに、Flamingoについて説明した公式ページには「Contact Form 7 doesn't store submitted messages anywhere. Therefore, you may lose important messages forever if your mail server has issues or you make a mistake in mail configuration.」と書かれています。日本語にすると、送信されたメッセージはどこにも保存されないため、メールサーバーに問題があったり、メールの設定を間違えたりすると、重要なメッセージを永久に失う可能性がある、という意味です。失われる可能性があることを、開発元自身が明示しているわけです。

この設計は、プライバシーの観点からは筋が通っています。wordpress.orgのプラグインディレクトリに掲載されているContact Form 7のreadmeには、既定の構成でこのプラグイン自体は次のことをしないと書かれています。ユーザーを隠れて追跡しない、ユーザーの個人データをデータベースに書き込まない、外部サーバーへデータを送らない、Cookieを使わない。個人データをサイトのデータベースに溜め込まないという方針が先にあり、その結果として「保存しない」が既定になっています。

ただし同じreadmeには例外も書かれています。reCAPTCHA(Google)、Akismet(Automattic)、Constant Contact、Brevo、Stripe、Turnstile(Cloudflare)の機能を有効にした場合は、送信者のIPアドレスを含む個人データがサービス提供者に送られる可能性がある、という記載です。「何も外に出ない」ではなく、「標準構成では外に出ないが、連携を有効にすると話が変わる」と読むのが正確です。

なお、保存されないのは送信されたメッセージであって、フォームの定義そのものは別です。フォームはカスタム投稿(post type: wpcf7_contact_form)として保存されているため、WordPressのTools > ExportとTools > Importでフォームデータの書き出しと読み込みができる、と公式FAQに記載があります。「フォームは残るが、そのフォームを通った内容は残らない」という切り分けを、最初に頭に入れておくと迷いません。

現行バージョンは6.1.7で、最終更新は2026年8月17日です(wordpress.orgのプラグイン情報より、確認日は2026年9月1日)。ディレクトリへの登録は2007年8月2日で、長く更新が続いているプラグインです。ライセンスはreadme記載で「GPLv2 or later」、作者表記は「Rock Lobster Inc.」となっています。contactform7.comおよびwordpress.orgのプラグインページ上では、有料版・有料プラン・価格表については確認できませんでした。

メールが届けば足りる使い方は、確かにある

保存されないと聞くと不安になりますが、乗り換えたり別のプラグインを足したりする理由が無い使い方もあります。乗り換えの判断を急ぐ前に、自分がどちらなのかを見極めるほうが先です。

メールだけで足りるのは、たとえば次のような使い方です。1つ目は、届く件数が月に数件で、受け取ったその場でメールソフト側から返信し、そのスレッドがそのまま記録になっている場合。この使い方では、メールボックスが実質的な保存先として機能しています。2つ目は、受け取った内容をその日のうちに別のシステム(顧客管理や表計算)へ手で転記する運用が既に回っていて、フォーム側に残す必要がない場合。3つ目は、受付そのものが目的ではなく、単に連絡先を知らせる窓口としてフォームを置いている場合です。

Contact Form 7のMailタブは、この使い方に必要なものはひととおり用意されています。To、From、Subject、Additional headers、Message body、File attachmentsを編集でき、いずれの欄にもmail-tagを埋め込めます。Additional headersにはCcやBccを1行1件で追加できるので、複数人の受信箱に同じ内容を落とすこともできます。自動返信も、Mailタブで「Use Mail (2)」を選び、Mail (2)を自動返信用のテンプレートとして設定すれば実現できると公式FAQに書かれています。Mail (2)については「Mail (2) is sent only when the primary Mail has been sent successfully.」という記載があり、1通目が正常に送信できたときだけ2通目が送られる仕様です。

つまり、届いた内容を人が受け取って返すところまでは、標準の機能でひととおり成立します。困るのはその先、「届いたものが後から確認できない」「誰がどこまで対応したか分からない」という段階に入ってからです。この記事の残りは、その段階に入った人のための内容として読んでください。窓口の担当者からしばしば出るのは、件数が増えたわけではなく、休みを挟んだ日や引き継ぎのタイミングで初めて困った、という話です。

Flamingoを入れると、何がどの状態で保存されるのか

公式が案内している保存の手段はFlamingoです。Contact Form 7と同じ開発者が作った無料のWordPressプラグインで、wordpress.orgで配布されています。readmeの記載は「License: GPLv2 or later」、現行バージョンは2.6.4、最終更新は2026年8月18日です(確認日は2026年9月1日)。

保存される場所は自分のサーバーのデータベース

Flamingoの公式ページには「Flamingo saves all messages through contact forms into the database.」と書かれています。readmeの説明はより端的で、「Flamingo is a message storage plugin originally created for Contact Form 7, which doesn't store submitted messages.」となっています。もともとContact Form 7が保存しないことを前提に、その保存を担う目的で作られたプラグインだということです。

保存先は外部サービスではありません。FlamingoのreadmeのPrivacy Noticesには「This plugin stores submission data collected through contact forms, which may include the submitters' personal information, in the database on the server that hosts the website.」と明記されています。送信者の個人情報を含みうるデータが、サイトをホストしているサーバー上のデータベースに保存される、という意味です。ここは重要なので後段でもう一度触れます。保存を始めるということは、これまでメールの中にしかなかった個人情報が、自分のサーバーの中にも置かれるようになるということです。

有効化するとWordPressの管理画面メニューにFlamingoが現れ、readmeの記述では「All messages through contact forms are listed there and are searchable.」となっています。一覧表示と検索ができる、という範囲です。

Inbound Messagesの一覧と、SubjectとFromの欄

管理画面のメニューはFlamingo > Inbound Messagesです。一覧にはSubjectとFromの欄があり、既定ではContact Form 7の標準入力欄であるyour-subject、your-name、your-emailから値を取得します。

ここで詰まりやすいのが、フォームを作り込んでいる場合です。項目名を自由に変えていて標準の入力欄が無いフォームでは、SubjectやFromの欄に何も出ないという状態になります。この場合の対処も公式に書かれていて、フォームのAdditional Settingsで flamingo_subject、flamingo_name、flamingo_email にそれぞれmail-tagを指定して差し替えます。一覧が空欄だらけで使いものにならないと感じたときは、プラグイン側の不具合を疑う前にこの設定を確認するのが早い道です。

一覧に出る欄がSubjectとFromである、という点も押さえておく価値があります。受付の実務でぱっと見て判別したいのは、多くの場合「誰から」「何の件で」の2つなので、フォームの設計側でその2つが一覧に出るようにmail-tagを割り当てておくと、あとの探しやすさが変わります。

InboxとSpamという2つのリスト

Flamingoに保存されたメッセージは、InboxとSpamの2つのリストに分かれます。公式ページでこのリストの切り替えとStatusの変更が説明されているのは、Akismetへの誤判定報告の手順としてです。Flamingo > Inbound MessagesでInboxとSpamのリストを切り替え、Statusを変更するとAkismet APIへ報告が送られる、という文脈で書かれています。

この構造から読み取れることが2つあります。1つ目は、スパムと判定された送信も、Flamingoが入っていれば消えずにSpam側に残るということです。届かなかったメールの中身を後から確認できるのは、この保存があるからです。2つ目は、Statusという言葉が出てくるものの、公式ページ上でそれが説明されているのは誤判定報告の手順としてであり、対応状況の管理として説明されているわけではない、ということです。ここを混同すると期待がずれます。

保存させたくないフォームがあるときの設定

すべてのフォームを保存したいとは限りません。たとえば、機微な内容を受ける専用フォームだけはサーバーに残したくない、という判断もあります。その場合は、そのフォームのAdditional Settingsに do_not_store: true を書きます。公式の説明は「This setting tells message storage modules, such as Flamingo, not to store messages through this contact form.」で、Flamingoのような保存モジュールに対して、このフォームを通ったメッセージを保存しないよう伝える設定です。

似た設定に skip_mail: on がありますが、こちらは役割が違います。公式には「Unlike demo_mode, skip_mail doesn't affect other activities like storing messages with Flamingo.」と書かれており、メール送信だけを飛ばす設定で、Flamingoによる保存には影響しません。「メールは送らずに保存だけしたい」ときは skip_mail、「保存だけしたくない」ときは do_not_store、という使い分けになります。2つを取り違えると、意図と逆のデータが残ることになるので、設定を書く前に確認してください。

Flamingo 2.6.4の動作要件は、Requires at least WordPress 6.7、Requires PHP 7.4、Tested up to 7.1 です。古いWordPressのまま運用しているサイトでは、保存を始める前に本体側の更新が先に必要になる場合があります。

保存していないと、届かなかったときに何も残らない

「保存されない」ことの本当の怖さは、一覧が見られないことではなく、メールが届かなかったときの復旧手段が無いことです。公式が挙げている「届かない原因」を見ると、それが運任せの領域を含んでいることが分かります。

赤枠のエラー「There was an error trying to send your message.」について、公式は「The red border means that Contact Form 7 tried to send mail with wp_mail(), but it failed.」と説明しています。原因としては「There could be various reasons such as the mail setup wasn't valid.」「The sending would also fail if the mail server was down, inaccessible or experiencing other problems.」が挙げられており、ホスティング事業者に問い合わせてエラーログを確認してもらうよう案内されています。「In some cases, it is possible to solve this issue by using another mail server.」という記述もあります。つまり、サイト側の設定が正しくても、メールサーバー側の事情で失敗しうるということです。

さらに厄介なのが、緑枠が出ているのに届かないケースです。公式の説明はこうです。「Showing the green border message means that the PHP function for sending the mail has certainly completed successfully. So if you can't receive the mail, it's highly possible that the mail has been kidnapped or killed after that.」送信関数は成功しているので、その後の経路でメールが失われた可能性が高い、という意味です。あわせて「Spam filter often causes this kind of problem.」とも書かれています。送信した側には「送信ありがとうございました」と表示され、受け取る側には何も届かない。保存していなければ、この事故は誰にも気づかれないまま終わります。

到達率を上げるために公式が案内している設定は、押さえておく価値があります。1つ目、Fromはサイトと同じドメインのアドレスにすること。Fromの欄の説明にも「This field value should be an email address that belongs to the same domain as the web site. Otherwise you'll get a configuration error.」とあり、違うドメインを入れると設定エラーになります。2つ目、返信先を分けたい場合はAdditional headersにReply-Toを書くこと。MailとMail (2)の両方で指定できます。3つ目、「It is recommended you prepare a real wordpress@{your-site-domain} address on your host.」という案内で、既定のメールテンプレートがこのアドレスをFromに使うためです。「Some hosts also block outgoing mail from this address if it doesn't exist.」という注意も付いています。4つ目、SPFとDKIMという認証方式を利用すること。5つ目、本文を空または短くしすぎないこと。「It not only makes the mail look like spam, it makes mail sending function fail on some hosts.」と書かれています。

これらを設定しても、メールが経路の途中で失われる可能性はゼロにはなりません。だからこそ、公式のFlamingoページが「重要なメッセージを永久に失う可能性がある」という表現を使っているわけです。メール以外にもう1つ受け皿を持つかどうかが、ここでの判断になります。

スパム判定と保存は、切り離せない関係にある

スパム対策を入れると、今度は「止められた送信の中身が確認できない」という問題が出てきます。ここでも保存の有無が効いてきます。

Contact Form 7の公式方針は「Contact Form 7 provides several spam protection modules; we recommend utilizing different types in combination.」で、複数の種類を組み合わせて使うことを推奨しています。用意されているのは主に次の手段です。

Akismetは「Spam filtering with Akismet forms the centerpiece of our spam prevention strategy.」と位置づけられているサービスで、プラグイン本体はWordPressに同梱されているため手動インストールは不要です。プラグイン画面で「Akismet Anti-Spam」を有効化し、APIキーを設定します。キーについては「If you use it on a personal blog, you can get an API key for free. For corporate or commercial sites, paid subscriptions are available.」と書かれており、個人ブログは無料、法人・商用サイトは有料の購読という区分です。フォーム側ではform-tagに akismet:author、akismet:author_email、akismet:author_url といったオプションを付け、「To get accurate results, you are advised to use as many options as possible.」と案内されています。送信されるデータについては「The data are composed of all user inputs (not only the fields with an akismet:* option) and variables from the environments.」と明記されていて、オプションを付けた欄だけでなく、入力内容すべてと環境変数が送られます。

そして、この記事の軸と直結するのが誤判定の扱いです。公式にはこう書かれています。「To report false detections to Akismet, you need the Flamingo plugin activated because Contact Form 7 doesn't come with the ability to store submission data into the database.」誤判定をAkismetに報告するにはFlamingoが必要で、その理由はContact Form 7が送信データをデータベースに保存する機能を持たないから、という説明です。保存していなければ、報告する対象そのものが存在しません。スパム判定で止まった本物の問い合わせは、そのまま消えます。

スパム判定時の見え方も知っておく必要があります。「Contact Form 7 will suspend the email and show a message saying, "There was an error trying to send your message," surrounded by an orange border.」オレンジ枠で、赤枠と同じ文言が表示されます。公式はこれを意図的にそうしていて、スパム判定であることを送信者に伝えない方針である旨の説明があります。受付側から見ると、赤枠と同じ文言なので、送信者から「エラーが出て送れませんでした」と連絡を受けたとき、それがメール失敗なのかスパム判定なのかは、その報告だけでは区別できません。どのモジュールが止めたかはspam logging featureで判別することが推奨されています。

Akismet以外の手段も公式に案内があります。Cloudflare Turnstileについては「Unlike Google reCAPTCHA, Turnstile is available for free. We recommend Turnstile unless you have reasons to use reCAPTCHA.」と書かれていて、reCAPTCHAを使う理由が特に無ければTurnstileを勧める、という立場です。ウィジェットのモードは「choose the Managed mode as recommended」、Cloudflare側でsite keyとsecret keyを取得してContact > Integrationに貼ります。既定ではフォーム先頭に配置され、位置を変えたい場合は [turnstile] form-tagを差し込みます。

reCAPTCHAはバージョン5.1以降がv3のAPIを使っており、「reCAPTCHA v3 works in the background so users don't need to read blurred text in an image or even tick the "I'm not a robot" checkbox.」と説明されています。v2のキーはv3では動きません。公式ページには「Google has a plan to make all reCAPTCHA users migrate to reCAPTCHA Enterprise. This means a cost increase for many of you.」という注意書きも付いています。

Disallowed list(旧Comment blacklist)は、WordPressのSettings > Discussionにある「Disallowed Comment Keys」を流用する仕組みです。1行に1語または1IPを入れると、「Messages containing the word or sent from the IP address in the list you've created will be treated as spam by Contact Form 7 and will not be delivered.」となります。送信元IPを調べるには、メール本文に特殊mail-tagの [_remote_ip] を入れる方法が案内されています。

そのほか、Additional Settingsの subscribers_only: true はログイン済みユーザーだけが送信できるモードです。ただし公式は「No anti-spam verification will be provided for contact forms in the subscribers-only mode」と注意していて、このモードではスパム検証が行われません。応募や問い合わせの窓口としては、送信する側にアカウント登録を求めることになるため、そこで離脱する人が出る点も含めて判断が要ります。回答者に登録を求めるかどうかは、問い合わせの受付のように不特定多数から受ける場面ほど重く効いてきます。

添付ファイルは、そもそも残らない前提で受け取る

送信内容の保存とあわせて誤解されやすいのが、添付ファイルの扱いです。ここは仕様がはっきりしています。

アップロードされたファイルの処理の流れは、公式にこう説明されています。PHPエラーの有無を確認し、ファイル種別とサイズを検証し、問題なければ一時フォルダへ移動する。そこでメールに添付して送信し、送信後に一時フォルダから削除する。つまり、ファイルはメールに乗せて送り出すための一時的な置き場を通るだけで、サイト側には残りません。一時フォルダの場所は既定で wp-content/uploads/wpcf7_uploads です(uploadsのパス設定を変えている場合は異なります)。このフォルダは自動作成されますが失敗することがあり、「The most possible reason for this is that the parent folder doesn't have sufficient writing permissions.」と原因が示されています。場所を変えるには定数 WPCF7_UPLOADS_TMP_DIR を定義しますが、絶対パスを指定してもコンテンツディレクトリ配下でなければ無視されます。

フォーム側の指定も押さえておきます。ファイル欄のform-tagは [file] と [file*] で、アスタリスク付きは必須項目です。受け付ける種類は filetypes: オプションで指定し、拡張子とMIMEタイプが使えて、複数はパイプ記号で区切ります。最大サイズは limit: オプションで、kbまたはmbの接尾辞が使え、省略するとバイト数です。「Note that you can't use a decimal point in it」とあり、小数点は使えず、書いても無視されます。記述例は [file your-file filetypes:pdf|txt limit:2mb] のような形です。

省略時の既定値は明記されていて、filetypes: の既定は audio/|video/|image/*、limit: の既定は 1mb です。ただし公式は「Since these default values can change in future versions without notice, it is recommended to set the options explicitly.」と付記しています。将来のバージョンで予告なく変わりうるので、明示的に指定することが推奨されています。履歴書や企画書を受け取る採用の応募受付のような場面で、既定のまま運用していると画像と音声と動画しか通らないことになります。ここは必ず自分で書いてください。

メールへの添付は、Mailタブの File attachments 欄に対応するmail-tag(form-tagではありません)を入れます。複数ある場合は [your-file][your-another-file] のように並べます。ここに上限があり、公式の記述は「Keep in mind that there is an upper limit (25 MB) on the total size of files attached to an email.」です。1通のメールに添付するファイルの合計サイズに 25MB の上限がある、という意味で、設定がこれを超えうる場合は警告が出ます。あわせて「Transferring a large amount of data is not the primary purpose for which the email system is designed. You should instead use a specialized service such as Dropbox.」と、大きなデータの受け渡しには専用のサービスを使うよう案内されています。サーバー上のファイルを添付する方法もありますが、「For security reasons, specifying files outside of the wp-content directory for email attachments is not allowed」という制約があります。

受付の実務として重要なのは、この一連の仕様が「メールが届かなければファイルも消える」という結果を招くことです。本文はFlamingoで残せても、添付されたファイルは一時フォルダから削除されます。書類を伴う受付では、送信者に再送を依頼できる状態にしておくか、ファイルの受け渡しを別の手段に分けるかを、運用を始める前に決めておく必要があります。助成金・公募の受付のように締切がある受付では、締切後に「送ったはずだが届いていない」と分かっても取り返しがつきません。

複数人で受けるとき、公式資料で確認できることと、できないこと

受付をひとりで抱えなくなった段階で出てくるのが、担当の割り当てと対応状況の管理です。ここは、公式資料で確認できる範囲を正確に書きます。

問い合わせ1件ごとに担当者を割り当てる機能、対応ステータス(未対応 / 対応中 / 完了)を管理する機能、対応履歴や個別返信の記録を残す機能については、contactform7.comのDocsおよびFAQ、wordpress.orgのプラグインページ上では確認できませんでした(確認日は2026年9月1日)。機能が存在しないという断定ではなく、公開されている資料の中に記載を見つけられなかった、という意味です。実装や別プラグインでの拡張については、それぞれの提供元の資料を確認してください。

関連して公式に確認できるのは、次の2点です。

1点目は、前述のFlamingoのInbound Messagesです。メッセージ一覧と検索があり、InboxとSpamのリスト間でStatusを変更できます。ただし公式ページ上でこのStatusが説明されているのは、Akismetへの誤判定報告の手順としてであり、対応状況の管理として説明されているわけではありません。「ステータスを変えられる」という記述だけを見て、対応管理に使えると期待すると、想定と違う結果になります。

2点目は、複数の担当者にメールを届ける手段です。MailタブのAdditional headersにCc / Bccを1行1件で追加する方法があり、Docsには「Adding Cc, Bcc and other mail headers」「Selectable recipient with pipes」というページがあります。後者は、選択肢に応じて宛先を切り替える仕組みです。

この2点でできるのは、「同じ内容を複数人に届ける」ことと、「選択された内容に応じて宛先を振り分ける」ことです。届いたあとに誰が拾ったのか、いつ返したのか、まだ返していないのはどれか、を記録として残す部分は別の話になります。同じ受信箱を複数人で見る運用では、返信したかどうかが表に残らないと、二重返信と返し忘れは必ず起きます。件数が少ないうちは声を掛け合って回りますが、担当が3人を超えたあたり、あるいは休みが挟まったタイミングで破綻します。イベントの申し込み修理・サポートの受付のように、返答の速さがそのまま印象になる受付では、この部分の設計が効いてきます。

保存を始めると、個人情報の置き場所が変わる

Flamingoを入れる判断は、機能を1つ足す話であると同時に、個人情報の保管場所を1つ増やす話でもあります。これは軽く扱えません。

FlamingoのreadmeのPrivacy Noticesにあるとおり、保存されるのは「submission data collected through contact forms, which may include the submitters' personal information」であり、置かれるのは「the database on the server that hosts the website」です。氏名、メールアドレス、電話番号、応募書類に書かれた経歴といった情報が、これまでメールボックスの中にしかなかったのが、サイトのデータベースにも置かれることになります。サイトの管理画面にログインできる人は、その一覧を見られる状態になる、ということでもあります。

Contact Form 7の公式にも、この種の責任について明確な記述があります。GDPRに関するFAQの回答は「Ultimately, no WordPress plugin in itself can provide legal compliance, and the responsibility for making your contact forms compliant with legislation lies with the user (you).」です。プラグインそのものが法令順守を提供することはできず、フォームを法令に適合させる責任は利用する側にある、と書かれています。

実務としては、保存を始める前に少なくとも次を決めておく必要があります。1つ目、どのフォームを保存し、どのフォームは do_not_store: true で保存しないか。2つ目、保存したデータをいつまで残し、誰が削除するか。3つ目、管理画面にログインできる人の範囲と権限。4つ目、プライバシーポリシーの記載を更新する必要があるか。これらは法律の解釈を含む判断になるため、個別の可否については所管の窓口や専門家に確かめてください。制度そのものの解説は個人情報保護委員会の公開情報が出発点になります。

更新とメンテナンスの前提も、あわせて確認しておく

保存の仕組みを足すということは、動かし続ける対象が増えるということでもあります。バージョン要件は事前に見ておいてください。

Contact Form 7 6.1.7のreadme記載値は、Requires at least: 6.7、Tested up to: 7.1、Requires PHP: 7.4 です。Flamingo 2.6.4も同じ要件になっています。

さらに、2025年12月2日付で公式からサポート方針の改定がアナウンスされています。改定の理由として挙げられているのは、従来の方針(2つ前のメジャーバージョンまでをサポート)がWordPress本体の速い更新周期を前提に決められたものであり、その周期が緩やかになっていることです。新しい方針は「WordPress: The latest major version (at the time of the plugin's major release) and greater.」「PHP: Versions recommended by the latest major version of WordPress.」となっています。

次期メジャーの見通しについても具体的な記述があります。Contact Form 7の次のメジャーバージョン6.2は2026年前半にリリース予定で、その時点の最新のWordPressメジャーバージョンはおそらく6.9になる。したがって6.2はWordPress 6.9以上をサポートし、WordPress 6.9がPHP 8.3以上を推奨するため、Contact Form 7 6.2の動作にはPHP 8.3 以上が必要になる、という内容です。この方針はContact Form 7以外の同社のWordPressプラグイン製品にも適用されると書かれています。

古いPHPのまま動かしているサイトでは、プラグインの更新に合わせてサーバー側の対応が必要になります。受付が止められない時期に更新が重なると厄介なので、いつ何が必要になるかは早めに把握しておく価値があります。

そのほか、動作の前提として公式が記載していることを2点補足します。1点目、Ajax送信はWordPress REST APIを利用します。「If the REST API isn't available on your site, you have to give up using Ajax submission. You can still use non-Ajax submission.」とあり、REST APIが使えない環境ではAjax送信を諦めることになります。非Ajax送信モードでは wpcf7mailsent や wpcf7submit といったDOMイベントが発火しません。2点目、Additional Settingsの on_sent_ok と on_submit はバージョン5.0で公式に削除されており、代わりにDOMイベントを使います。古い解説記事を見ながら設定を写すと、動かない記述をそのまま入れてしまうことがあります。

サポート窓口については、contactform7.comのDocsとFAQ、それで解決しない場合はwordpress.orgのサポートフォーラム、とreadmeに案内されています。無料で配布されているプラグインなので、返答の時期を約束するような窓口ではない点も、運用の前提として見込んでおくところです。

保存の次に詰まるところを、先に見ておく

ここまでを踏まえて、いま何を決めればよいかを整理します。判断は3段階に分かれます。

第1段階は、保存が要るかどうかです。届いた内容をメールで受けてその場で返し、それが記録として足りているなら、追加は不要です。この段階にいる人が乗り換えを考える必要はありません。

第2段階は、保存だけで足りるかどうかです。「届かなかったときに中身が残っていない」「スパム判定で止まったものを確認できない」が困りごとの中心なら、Flamingoを入れる判断が素直です。無料で、同じ開発者が作っていて、公式が案内している方法です。InboxとSpamの2つのリストに残るので、消えたと思っていた送信を確認できるようになります。

第3段階は、受けたあとを回せるかどうかです。ここが、フォームを入れ替えるかどうかの分かれ目になります。判断材料の大半はこの一点に集まります。具体的には次の3つが自分の運用で必要かどうかを見てください。1つ目、1件ごとに担当を決めて、その人の担当だと分かる状態にすること。2つ目、未対応 / 対応中 / 完了のような対応状況が一覧で見えること。3つ目、いつ誰が何を返したかという履歴が、1件の中に紐づいて残ること。Contact Form 7とFlamingoについては、これらの機能に関する記載を公開資料の中で確認できませんでした。必要かどうかを決めるのは運用側です。

この3つが要らないなら、保存を足すだけで十分に回ります。要るなら、探すべきものは「フォームを作る道具」ではなく「送信されたあとを回す道具がそろっていること」です。作る側の機能で比べていると、この違いは見えません。フォームの作りやすさで選んで、届いたあとで詰まる、という順序をたどることになります。

受付の種類によって、詰まる位置は変わります。締切と件数が集中する講座の受講申し込み会員の入会申し込みでは、対応状況よりも先に「重複した申し込みをどう見分けるか」が問題になります。書類のやり取りが複数回発生する施設利用の申請では、1件に紐づく履歴が無いと、何度目のやり取りなのかが分からなくなります。どの受付でも共通しているのは、件数そのものより、担当が複数になった瞬間に一気に破綻するという点です。それぞれの場面で何が起きるかを見比べると、自分がどの型に近いかを判断しやすくなります。

他の道具との違いを具体的に見たい場合は、比較のページも用意しています。表計算に流し込む運用との違いはGoogleフォームとの比較に、この記事で扱ったプラグインとの違いはContact Form 7との比較に、社内のアカウント基盤と組み合わせる場合の違いはMicrosoft Formsとの比較にまとめてあります。受付から対応までを1つの画面で扱うと何がどう変わるのかはできることで機能ごとに整理していて、実際の画面の動きは動くところを見るで確認できます。費用の考え方は料金に、導入前によく出る疑問はよくある質問に置いてあります。

最後に、この記事の出発点にもう一度戻ります。Contact Form 7が保存しないのは、個人データをサイトのデータベースに書き込まないという方針の裏返しであり、それ自体は一貫した設計です。問題が起きるのは、その前提を知らないまま、保存されていると思って運用してしまうときです。いま自分のサイトがどちらの状態なのかを確かめて、保存が要るなら公式が案内している方法で足す。そのうえで、受けたあとを回す部分が足りているかを別の問題として見る。この順序で見ていけば、判断を間違えずに済みます。

Q1. Contact Form 7で送った問い合わせは、あとから管理画面で見られますか?

標準では見られません。公式FAQに「Contact Form 7 doesn't save the submitted messages.」と明記されており、送信内容はデータベースに保存されないためです。あとから確認したい場合は、同じ開発者が作ったFlamingoを入れると、Flamingo > Inbound Messagesに一覧として保存され、検索もできるようになります。

Q2. Flamingoを入れると、どこに何が保存されますか?

サイトをホストしているサーバーのデータベースに、フォームで集めた送信データが保存されます。Flamingoのreadmeには、送信者の個人情報を含みうると明記されています。一覧はInboxとSpamの2つのリストに分かれ、SubjectとFromの欄には既定でyour-subject、your-name、your-emailの値が入ります。

Q3. スパム判定で止まった問い合わせの中身は確認できますか?

Flamingoが有効なら、Spamのリストに残るので中身を確認できます。逆にFlamingoが無い状態では、送信データがどこにも保存されないため確認できません。公式も、Akismetへ誤判定を報告するにはFlamingoの有効化が必要だと説明しています。理由は、Contact Form 7が送信データを保存する機能を持たないためです。

Q4. フォームに添付されたファイルも保存されますか?

保存されません。公式の説明では、アップロードされたファイルは検証後に一時フォルダへ移され、メールに添付して送信したあと、その一時フォルダから削除されます。メール添付には合計25MBの上限もあります。書類を受け取る受付では、再送を頼める状態にしておくか、ファイルの受け渡しを別の手段に分けるかを先に決めておくのが安全です。

ガイド一覧へ

Contact Form 7の保存は標準では行われない|消える前に決めること|Halict