「contact form 7 使い方」で検索する人の多くは、フォームの置き方そのものでつまずいているわけではありません。プラグインを有効化して、ショートコードを固定ページに貼るところまでは、慣れていれば10分ほどで終わります。困りやすいのはそのあとです。送信されたはずのメールが届かない、迷惑メールが日に何十通も来る、応募書類の添付が弾かれる、そして「あの問い合わせ、返したのは誰だったか」がわからなくなる。この記事では、WordPressの問い合わせフォームとして広く使われているこのプラグインの使い方を、公式ドキュメントに書かれている内容だけを土台に整理します。あわせて、置くだけで十分に足りるのはどういう使い方か、逆に受付の件数や関わる人が増えたときに何を決め直すことになるのかまで、受ける側の目線でまとめます。
フォームを置くところまでは、もう難しくない
問い合わせ、応募、申し込み、公募の受付。この10年ほどで、外向きの窓口はほぼフォームに置き換わりました。電話とファックスで受けていたものが、いまはURLひとつで受けられます。総務省や中小企業庁が公表している中小規模事業者のデジタル化に関する資料でも、業務のデジタル化は外向きの窓口から先に進む傾向が示されています。窓口をフォームにすること自体は、専門知識がなくても短時間で終わる作業になりました。
WordPressで作られたサイトの場合、その入口を担ってきたのがこのプラグインです。wordpress.orgのプラグインディレクトリへの登録は2007年8月2日。20年近く配布が続いている、かなり息の長いプラグインです。現行バージョンは6.1.7で、最終更新は2026年8月17日と記載されています(wordpress.orgのプラグイン情報より、2026年9月1日確認)。作者表記はRock Lobster Inc.、Contributorsはrocklobsterinc、takayukisterです。
ところが、フォームを置いたあとの実務が楽になったかというと、必ずしもそうではありません。窓口の担当者からしばしば出るのは、「フォームを作るのは簡単だったが、届いたメールを1件ずつさばくのがつらい」という話です。通知メールが受信箱に流れ込み、返信済みかどうかは自分の送信済みフォルダを見ないとわからない。応募者から「先日送った件はどうなりましたか」と催促が来て、初めて返し忘れに気づく。
これはプラグインの出来の問題ではありません。フォームの役割は「集めること」であって、「集めたあとを回すこと」は多くの場合、担当者の記憶とメールソフトが担っているからです。10件や20件なら記憶で回ります。現場では、100件を超えたあたりから受信箱では回らなくなると言われています。返信したかどうかが表に残らないと、二重返信と返し忘れは必ず起きます。
だから使い方を調べるときは、「どんな入力欄が置けるか」より先に、次の3つを確認したほうが実務に効きます。
・送信された内容はどこに残るのか。そもそも残るのか ・メールが届かなかったとき、何を手がかりに原因を切り分けられるのか ・返した/返していないの記録を、誰と共有できるのか
このプラグインは、1つ目について公式が非常にはっきりした説明をしています。まずは「置くだけで足りる場合」から順に見ていきます。
まず、置くだけで十分に足りる場合をはっきりさせる
乗り換えや追加の検討は、いまの道具で足りている人には不要です。次の条件に当てはまるなら、このプラグインを置くだけで問題なく回ります。
窓口が1つ、返す人も1人なら十分に足りる
会社案内サイトの「お問い合わせ」ページ、店舗の予約相談、士業事務所の初回相談窓口。届く件数が1日に数件で、受け取る人と返信する人が同じ1人なら、受信箱がそのまま案件一覧として機能します。誰が返したかを共有する必要がなく、履歴も自分の送信済みフォルダを見れば足ります。この規模では、管理画面をひとつ増やすほうがかえって手間になります。
技術的な自由度も高い部類です。フォームの中身はform-tagという独自の記法で書き、それをそのままHTMLの中に配置できるため、既存のテーマのデザインにCSSで合わせ込めます。ショートコードを貼る場所も、固定ページでも投稿でもウィジェットでも構いません。入力欄の並びやラベルの文言を細かく制御したい場合、テンプレートを直接編集できるのは強みです。
費用の面でも障壁がありません。wordpress.orgのプラグインディレクトリで配布されており、プラグインページにDownloadボタンが置かれています。公式readmeのライセンス表記は「License: GPLv2 or later」で、License URIとしてGNUのGPL v2ページが指定されています。有料版・有料プラン・価格表については、contactform7.comおよびwordpress.orgのプラグインページ上では確認できませんでした。公式サイトには寄付ページが用意されています。
設置までの流れは、実質3ステップ
使い方の骨組みはとても単純です。WordPressの管理画面からプラグインを検索して有効化すると、管理メニューに「お問い合わせ」(Contact)の項目が増えます。インストール直後から「コンタクトフォーム1」という既定のフォームが1つ用意されているので、まずはそれを開きます。
フォーム編集画面には、Form、Mail、Messages、Additional Settingsの4つのタブがあります。Formタブが入力欄の定義、Mailタブが送信されるメールの雛形、Messagesタブが画面に出る各種メッセージの文言、Additional Settingsが追加の設定です。既定のフォームには氏名、メールアドレス、題名、メッセージ本文の欄がすでに入っているので、項目を足す必要がなければ何も触らずに使えます。
編集画面の上部に表示されるショートコードをコピーし、問い合わせページの本文に貼り付けて公開すれば、その時点でフォームが動きます。ここまでで、入力欄を増やす場合を除けば追加の作業はありません。この手軽さが、長く使われ続けている理由のひとつです。
送信のしくみだけは押さえておく
送信ボタンが押されると、既定ではAjaxでページを再読み込みせずに送信されます。公式には「Contact Form 7 4.8 and later versions use the WordPress REST API for Ajax submission. 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をあきらめて通常の送信に切り替えることになります。
送信の結果は、フォームの下に色付きの枠で表示されます。緑枠は送信処理の成功、赤枠はメール送信の失敗、オレンジ枠はスパム判定です。この3色の意味を最初に覚えておくと、あとで「届かない」と言われたときの切り分けが一気に速くなります。それぞれの原因は後述します。
置く前に必ず知っておくこと。送信内容は標準では保存されない
ここが、このプラグインを使うすべての人が最初に知っておくべき仕様です。公式ドキュメントには次のように書かれています。
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. 出典: contactform7.com
公式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).」つまり、送信された内容はメールとして飛んでいくだけで、サイト側には何も残りません。
この仕様が実務で何を意味するか
意味するところは重いので、具体的に書きます。メールサーバに障害があった時間帯の問い合わせは、記録がどこにも残りません。Mailタブの宛先を1文字打ち間違えたまま公開していたら、その間に届いた応募はすべて消えています。迷惑メールフォルダに落ちていて気づかなかった分も、サイト側から取り出すことはできません。「送ったはずです」と言われても、突き合わせる手がかりが存在しないのです。
公開直後にテスト送信をして、実際に受信できることを確認するべき理由はここにあります。宛先の変更、サーバの移転、メールアドレスの廃止といった変更を加えたときも同様です。受け取れているかどうかを確かめる作業を省くと、失われた分は取り返せません。
なお、wordpress.orgのreadmeのPrivacy noticesでは、既定の構成においてこのプラグイン自体は「track users by stealth」「write any user personal data to the database」「send any data to external servers」「use cookies」のいずれも行わないと明記されています。個人データを溜め込まない設計であること自体は、取り扱いの観点では利点でもあります。ただし同じreadmeで、reCAPTCHA(Google)、Akismet(Automattic)、Constant Contact、Brevo、Stripe、Turnstile(Cloudflare)の機能を有効にした場合は、送信者のIPアドレスを含む個人データがサービス提供者に送られる可能性があると記載されています。応募者や利用者の個人情報を扱う窓口では、この点をプライバシーポリシーにどう書くかを含めて、所管の窓口や専門家に確かめてください。
Flamingo を入れると、送信内容がデータベースに保存される
保存が必要な場合に公式が案内しているのが、同じ作者によるFlamingoというプラグインです。公式の説明は「Flamingo saves all messages through contact forms into the database. Flamingo is a free WordPress plugin created by the same author as Contact Form 7.」で、readmeにも「Flamingo is a message storage plugin originally created for Contact Form 7, which doesn't store submitted messages.」と書かれています。こちらもwordpress.org配布で、ライセンス表記は「License: GPLv2 or later」。現行バージョンは2.6.4、最終更新は2026年8月18日です。
有効化すると管理画面のメニューにFlamingoが現れ、Flamingo > Inbound Messagesに送信内容の一覧が並びます。readmeには「After activation of the plugin, you'll find Flamingo on the WordPress admin screen menu. All messages through contact forms are listed there and are searchable.」とあり、一覧と検索が使えることが明記されています。
一覧にはSubjectとFromの欄があり、既定では標準入力欄のyour-subject、your-name、your-emailから値を取得します。フォームを自作して標準欄の名前を変えている場合は、Additional Settingsでflamingo_subject、flamingo_name、flamingo_emailにmail-tagを指定して差し替えます。ここを設定しないと、一覧の件名や差出人が空欄のまま並ぶことになるので、独自の項目名を使っているフォームでは最初に確認しておくとよい箇所です。
保存する以上、個人情報がサーバ上のデータベースに置かれることになります。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.」と明記されています。保存させたくないフォームがある場合は、そのフォームのAdditional Settingsに「do_not_store: true」を書きます。公式の説明は「This setting tells message storage modules, such as Flamingo, not to store messages through this contact form.」です。
似た設定に「skip_mail: on」がありますが、これはメール送信だけを飛ばすもので、「Unlike demo_mode, skip_mail doesn't affect other activities like storing messages with Flamingo.」と説明されています。保存は続けたいがメールは止めたい、という切り分けができるということです。Flamingo 2.6.4の動作要件はRequires at least WordPress 6.7、Requires PHP 7.4、Tested up to 7.1です。
なお、フォームの定義そのものはカスタム投稿(post type: wpcf7_contact_form)として保存されているため、Tools > ExportとTools > Importでフォームデータの書き出しと読み込みができるとFAQに記載があります。サイトを移転するときに、フォームの中身を作り直さずに済むということです。保存されないのは「送信された内容」であって、「フォームの設計」ではありません。この2つは分けて理解しておくと混乱しません。
Mailタブの使い方。届け先と自動返信を決める
Formタブで入力欄を決めたら、次はMailタブです。ここが実質的に、受付の運用を決める場所になります。
設定できる項目と、それぞれの注意点
編集できるのはTo、From、Subject、Additional headers、Message body、File attachmentsの6つで、いずれの欄にもmail-tagを埋め込めます。mail-tagはFormタブで定義した入力欄の値を差し込むための記法で、編集画面の上部に使えるタグの一覧が表示されます。
Toには受け取りたいアドレスを書きます。公式は「Specify values in the valid mailbox syntax, or you'll get a configuration error.」としています。書式が正しくないと設定エラーになるということです。
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.」で、サイトと同じドメインのアドレスにしないと設定エラーが出ます。よくやってしまうのが、Fromに送信者のメールアドレスのmail-tagを入れてしまう設定です。返信しやすくなる気がしますが、これは差出人の詐称にあたる形になり、迷惑メール判定の原因になります。送信者のアドレスに返信したいなら、Fromはサイトのドメインのアドレスにしたうえで、Additional headersにReply-Toを書きます。
Additional headersにはCcやBccなどのヘッダを1行1件で追加できます。複数の担当者に同じ通知を届けたいときは、ここにCcまたはBccを並べるのが公式に案内されている方法です。
Message bodyは既定でプレーンテキストです。HTMLで組みたい場合は「Use HTML content type」にチェックを入れます。「Exclude lines with blank mail-tags from output」にチェックを入れると、任意入力欄が空だった行を出力から除けます。任意項目が多いフォームで、空行だらけの通知メールが届くのを防げる設定です。
自動返信は Mail (2) で作る
送信者への自動返信は、Mail (2)という2通目のテンプレートで作ります。公式の説明は「Mail (2) is an additional mail template. It is often used as an autoresponder, but you can use it for any purpose. Mail (2) is sent only when the primary Mail has been sent successfully.」です。FAQでも「Yes, you can. Select Use Mail (2) in the Mail tab panel and set up Mail (2) as the template for autoresponder email.」と案内されています。
実務上大事なのは後半の一文です。Mail (2)は、1通目のMailが正常に送信されたときにだけ送られます。つまり管理者宛の通知が失敗すれば、送信者への自動返信も飛びません。逆に言えば、応募者から「自動返信が来ない」と連絡が来た時点で、管理者側の通知も届いていない可能性が高いということです。切り分けの手がかりとして覚えておくと役に立ちます。
自動返信の宛先には、送信者のメールアドレスのmail-tagを入れます。Mail (2)側でもReply-Toを指定でき、返信先を問い合わせ窓口のアドレスに向けておくと、応募者が自動返信にそのまま返信してきたときに受け取れます。ここを空のままにしておくと、返信が誰にも届かないアドレスに飛ぶことがあるので、公開前に確認しておきたい箇所です。
「送信されました」と出るのに届かないとき
赤枠のエラー「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.」続けて「If you can check the log of your mail server, it could give you some clues. Spam filter often causes this kind of problem.」とあり、メールサーバのログを確認すること、迷惑メールフィルタが原因になりやすいことが示されています。
オレンジ枠については「The orange border is a sign of spam. It indicates that one of the spam protection modules has detected suspicious activity in the form submission.」と説明されており、どのモジュールが止めたのかはspam logging featureで判別することが推奨されています。なお、メール送信の失敗とスパム判定で送信者に同じ文言を出しているのは、スパム判定であることを送信者に伝えない方針によるものだと公式に説明されています。
ここで、保存されない仕様がもう一度効いてきます。赤枠が出た送信も、緑枠が出て途中で消えたメールも、サイト側には何も残りません。原因を追う前に、まず記録が残る状態にしておくかどうかを決めることになります。
到達率を上げるために公式が案内している設定
届かない問題を減らすために、公式が具体的に挙げている項目は次のとおりです。
まずFromはサイトと同じドメインのアドレスにすること。「in the From field, use an email address that belongs to the same domain as the site.」と明記されています。返信先を分けたい場合はAdditional headersにReply-Toを書き、これはMailとMail (2)の両方で指定できます。
次に、実在するアドレスを用意すること。「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.」と続きます。存在しないアドレスからの送信をホスト側が止めることがある、ということです。
そしてSPFとDKIMの設定を使うこと。「you can utilize email authentication methods including SPF and DKIM, which are supported by most major mail service providers.」と案内されています。独自ドメインで運用しているなら、ここを整えるだけで迷惑メール判定はかなり減ります。
最後に、任意入力欄の値を使うときの注意です。空欄でもヘッダが有効なままかを確認すること、本文を空または短くしすぎないことが挙げられています。「It not only makes the mail look like spam, it makes mail sending function fail on some hosts.」と、短すぎる本文が迷惑メールらしく見えるだけでなく、ホストによっては送信そのものを失敗させると記載されています。
スパム対策の使い方。1つに頼らず組み合わせる
公開してしばらくすると、必ず迷惑メールが来ます。公式の方針は明確で、「Contact Form 7 provides several spam protection modules; we recommend utilizing different types in combination.」と、異なる種類を組み合わせることが推奨されています。
Akismet
公式が中心に据えているのがAkismetです。「Akismet is a powerful anti-spam service provided by Automattic that protects your contact forms. 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(URL欄)の3つで、「To get accurate results, you are advised to use as many options as possible.」と、できるだけ多く指定することが推奨されています。
送信されるデータの範囲も公式に書かれています。「Contact Form 7 sends data to Akismet when a user submits the form. The data are composed of all user inputs (not only the fields with an akismet:* option) and variables from the environments.」つまりオプションを付けた欄だけでなく、すべての入力値と環境の変数が送られます。個人情報を含むフォームでこの機能を使う場合は、その旨をどう扱うかを所管の窓口や専門家に確かめてください。
スパムと判定された場合、「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.」となります。動作確認用の値も用意されていて、名前欄に「viagra-test-123」、メール欄に「[email protected]」を入れると判定を試せます。
ここで注意したいのが誤判定の扱いです。公式には「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.」とあります。Flamingo > Inbound MessagesでInboxとSpamのリストを切り替え、Statusを変更するとAkismet APIへ報告が送られます。裏を返せば、保存の仕組みを入れていない状態では、本物の応募がスパムと判定されて消えたことに気づく手段がありません。応募や公募のように取りこぼしが許されない窓口では、この点が効いてきます。
Cloudflare Turnstile
公式が現在すすめているのがTurnstileです。「Turnstile is Cloudflare's smart CAPTCHA alternative. Contact Form 7 provides an integration module with Turnstile, which effectively protects your contact forms from spam bots. 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を取得し、WordPressのContact > IntegrationのTurnstileセクションに貼れば有効になります。既定ではウィジェットがフォームの先頭に配置されるため、位置を変えたい場合は[turnstile]というform-tagを差し込みます。指定できるオプションはaction、appearance、language、size、tabindexの各項目とthemeです。
reCAPTCHA (v3)
reCAPTCHAを使う場合、対応しているのはv3です。「Contact Form 7 5.1 and later uses this reCAPTCHA 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.」とあり、画像を選ばせたりチェックボックスを押させたりしない方式です。回答者に余計な操作をさせないのは、応募や申し込みの窓口では利点になります。
キーの取り違えには注意が必要です。「API keys for reCAPTCHA v3 are different from those for v2; keys for v2 don't work with the v3 API.」と明記されています。GoogleアカウントでreCAPTCHA Admin Consoleからサイトを登録し、site keyとsecret keyをContact > Integrationに登録します。
古い解説を見て[recaptcha]というform-tagを書いてしまうことがありますが、これは不要です。「[recaptcha] form-tags are no longer necessary. If [recaptcha] form-tags are found in a form template, Contact Form 7 5.1 or higher ignores them and replaces them with an empty string.」と、無視されて空文字に置き換えられます。
公式ページには費用に関する注意書きもあります。「Google has a plan to make all reCAPTCHA users migrate to reCAPTCHA Enterprise. This means a cost increase for many of you.」将来的な費用増の見通しが示されているということです。
Disallowed list と subscribers_only
WordPress本体の機能を流用する手もあります。「Contact Form 7 can also utilize it to blocklist specific words or IP addresses.」とあり、設定場所は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からの送信がスパム扱いになります。送信元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 since only welcome people are supposed to be able to use them.」と注意しています。このモードではスパム検証が行われません。社内向けの申請フォームなど、閲覧者を限定できる場面向けの設定です。
なお、公式のDocs一覧には「Really Simple CAPTCHA」も掲載されています。FAQでは全体の方針として「Contact Form 7 supports spam-filtering with Akismet. Cloudflare Turnstile blocks annoying spambots. Plus, using disallowed list, you can block messages containing specified keywords or those sent from specified IP addresses.」とまとめられています。
添付ファイルを受け取るときの使い方
履歴書、職務経歴書、見積書、写真。受付では添付が必要になる場面が多くあります。ここは仕様の数字がはっきりしている領域なので、正確に押さえておきます。
フォーム側の filetypes と limit
ファイル欄のform-tagは[file]と[file*]です。「file* is a required field and requires the user to upload a file.」で、アスタリスク付きが必須項目になります。
受け付ける種類はfiletypesオプションで指定します。拡張子とMIMEタイプが使え、複数はパイプ記号で区切ります。書き方の例はfiletypes:image/*|txt|application/pdfです。最大サイズはlimitオプションで指定し、kbまたはmbの接尾辞が使えます。省略するとバイト数として扱われます。ここで一点注意があり、「Note that you can't use a decimal point in it (i.e., like this: [file your-file limit:1.5mb]) and it will be ignored if it exists.」と、小数点は使えず、書いても無視されます。1.5MBのような中途半端な値を指定したいときは、kb単位で書くことになります。
実際の記述例は[file your-file filetypes:pdf|txt limit:2mb]のようになります。省略時の既定値も公式に明記されています。「The default filetypes: option value is audio/|video/|image/*, and the default limit: option value is 1mb.」つまり何も指定しないと、受け付けるのは音声・動画・画像のみで、上限は1MBです。
ここが、履歴書を受け取ろうとして最初につまずく場所です。既定の種別に文書ファイルが含まれていないため、PDFやWord文書は指定を書かないと弾かれます。応募者側には「送信できない」としか見えないので、問い合わせが来て初めて気づくことも起こります。公式も「Since these default values can change in future versions without notice, it is recommended to set the options explicitly.」と、既定値に頼らず明示的に指定することを推奨しています。ほかにcaptureオプションでcapture HTML属性を指定できます。なお、ファイル選択ボタンのラベル文言はブラウザ組み込みの表示のため変更できない旨がFAQに記載されています。
メール添付は合計25MBが上限
フォームで受け取ったファイルをメールに添付するには、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. You will receive a warning if your contact form configuration allows attached files that exceed this limit.」つまり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.」と、大量のデータ転送はメールの本来の用途ではないため専用のサービスを使うよう案内されています。
作品を提出させる公募や、写真を何枚も送ってもらう受付では、この上限が先に来ます。ファイル欄を複数置いて合計が25MBを超える設計にすると警告が出るため、事前に上限を決めて回答者に伝えておくのが実務的な回避策です。
サーバ上のファイルを添付する機能もあります。1行1パスで書き、絶対パスでない場合はwp-contentからの相対パスとして扱われます。「For security reasons, specifying files outside of the wp-content directory for email attachments is not allowed」と、wp-contentの外は指定できません。案内資料や規約のPDFを、返信メールに毎回同封したいときに使える機能です。
アップロードされたファイルはどこに置かれるか
処理の流れも公式に説明されています。PHPエラーの有無を確認し、ファイル種別とサイズを検証し、問題なければ一時フォルダへ移動する。そこでメールに添付して送信し、送信後に一時フォルダから削除する、という順です。
一時フォルダの場所は「The location of the temporary folder is wp-content/uploads/wpcf7_uploads by default. It may differ if you have changed upload path setting from wp-content/uploads.」とされています。フォルダは自動作成されますが、失敗することがあります。「The most possible reason for this is that the parent folder doesn't have sufficient writing permissions.」と、親フォルダの書き込み権限が最も多い原因として挙げられています。場所を変えたい場合は定数WPCF7_UPLOADS_TMP_DIRを定義しますが、絶対パスを指定してもコンテンツディレクトリ配下でなければ無視されます。
ここでも保存されない仕様が効きます。添付ファイルは送信後に一時フォルダから削除されるため、サーバ上に残るのはメールに付いたコピーだけです。応募書類を受け取る窓口では、そのメールを失うと書類そのものを失うことになります。
更新とメンテナンスの前提。要件は上がっていく
長く使う道具なので、これから何が変わるのかも押さえておきます。
現行バージョンの要件
Contact Form 7 6.1.7のreadmeに記載されている値は「Requires at least: 6.7」「Tested up to: 7.1」「Requires PHP: 7.4」「Stable tag: 6.1.7」です。最終更新は2026年8月17日。組み合わせて使うFlamingo 2.6.4も同じく、Requires at least 6.7、Tested up to 7.1、Requires PHP 7.4です。いずれも2026年9月1日にwordpress.orgのプラグインページで確認した値です。
サポート方針が改定されている
2025年12月2日付で、公式からWordPressサポート方針の改定がアナウンスされています。改定の理由はこう説明されています。
Our current WordPress support policy (supporting down to the second latest major version) was defined based on WordPress core's previous fast-paced major update release cycle (three times per year). However, the release cycle is slowing down now, and it is planned to release only once next year. 出典: contactform7.com
新しい方針は「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.」です。プラグインのメジャーリリース時点での最新のWordPressメジャーバージョン以上、PHPはそのWordPressが推奨するバージョン、という形になります。
次期メジャーの見通しも具体的に書かれています。「Contact Form 7's next major version, 6.2, will be released in the first half of 2026. The latest major WordPress version at the time will probably be 6.9; therefore, Contact Form 7 6.2 will support WordPress 6.9+. And, because WordPress 6.9 recommends PHP 8.3 or greater, Contact Form 7 6.2 will require PHP 8.3+ to work.」PHPの要件が7.4から8.3以上へ上がる見通しということです。この方針は「In addition to Contact Form 7, we will apply this new policy to any other WordPress plugin product we develop.」と、同じ作者の他のプラグインにも適用されます。
古いレンタルサーバでPHPのバージョンを上げずに運用している場合、ここで更新が止まります。フォームだけの問題ではなくサイト全体の保守に関わる話なので、PHPのバージョンをいつ上げるかは早めに見通しを立てておいたほうが安全です。
古い記事のコードをそのまま使わない
このプラグインは歴史が長いぶん、ネット上に古い前提の解説が大量に残っています。代表的なのがAdditional Settingsのon_sent_okとon_submitで、これらは「officially removed from Contact Form 7 5.0」であり、いまはDOMイベントを使うよう案内されています。送信完了後にサンクスページへ飛ばす処理をon_sent_okで書いてある解説を見かけたら、それは動かないコードです。
DOMイベントを使う場合の注意もあります。非Ajax送信モードでは、wpcf7mailsentやwpcf7submitといったDOMイベントが発火しません。Ajaxを切っている環境で計測タグや遷移処理を組もうとすると、ここで詰まります。
法令への適合についても公式の立場が明記されています。GDPRに関して「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).」と、プラグイン単体では法的な適合を提供できず、責任は利用者側にあるとされています。個人情報の取り扱いをどう設計するかは、所管の窓口や専門家に確かめてください。サポート窓口はcontactform7.comのDocsとFAQ、それで解決しない場合はwordpress.orgのサポートフォーラム、とreadmeに案内されています。
複数人で受けるようになったとき、どこで詰まるか
ここまでが、公式ドキュメントに書かれている使い方です。最後に、受付の規模が変わったときの話をします。
担当割り当てや対応状況の管理について
問い合わせ1件ごとに担当者を割り当てる機能、対応ステータス(未対応・対応中・完了)を管理する機能、対応履歴や個別返信の記録を残す機能については、contactform7.comのDocsとFAQ、およびwordpress.orgのプラグインページ上では確認できませんでした。機能が無いと断定するものではなく、公開資料の範囲では記載が見当たらなかった、ということです。
関連して公式に確認できるのは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」というページが用意されています。
通知メールを全員に配ると何が起きるか
Cc / Bccで全員に届ける方法は、たしかに受け取り漏れを防ぎます。ただし、届いたあとの動きは各自のメールソフトの中にしか残りません。3人で窓口を回している場合、同じ通知が3通の受信箱に入り、誰かが返信したという事実はどこにも共有されません。
その結果として起きるのが、二重返信と返し忘れです。2人が同時に同じ応募者へ返信してしまう。逆に「誰かが返しているだろう」と全員が思って、誰も返していない。返信の記録が個人の送信済みフォルダにしかないため、休みを取った人の担当分は、本人が戻るまで状況が確認できません。返信したかどうかが表に残らないと、この2つは必ず起きます。
回避策としてよく取られるのが、通知メールを見ながら表計算ソフトに転記していく運用です。受付日、氏名、内容、担当、状態、返信日といった列を作り、手で埋めていく。件数が少なければ回りますが、転記そのものが仕事になっていきます。しかも転記漏れが起きると、その1件は誰の目にも触れなくなります。100件を超えたあたりでこの表が回らなくなると言われるのは、転記の手間と漏れが同時に増えるからです。
この段階になると、決めるべきことはフォームの作り方ではありません。届いた1件ごとに、誰が担当で、いまどの状態で、いつ何を返したのかを、関係者が同じ画面で見られるかどうかです。送信されたあとの道具がそろっているかどうかで、受付にかかる時間はまるで変わります。
受付の型が違えば、必要になる手当ても変わる
フォームツールの比較は、機能の多さで並べても答えが出ません。同じ「フォーム」でも、受付の型が違えば効いてくる条件がまったく変わるからです。このサイトでは、受付の型ごとに何を決めればよいかを整理しています。自分の窓口がどれに近いかを見てから決めたほうが、早く着地します。
書類の受け取りと選考の進捗管理が同時に必要になるのが応募受付です。履歴書の添付容量、応募者ごとの状態、複数人での分担が一度に効いてくる型で、採用の応募受付で必要になる項目を整理しています。この記事で見たとおり、既定の受付種別に文書ファイルが含まれない点と、メール添付の合計上限が25MBである点は、応募受付でまず確認したい条件です。締切と要件確認が厳格に求められるのが公募で、受付番号の付与や不備連絡の履歴が要る助成金・公募の受付は、応募受付とはまた別の設計になります。件数は多いが1件あたりは短い問い合わせの受付では、返信済みかどうかの共有と振り分けが中心の課題になります。
短期間に集中して届く型もあります。定員と締切の管理が主役になるイベントの申し込み、回次ごとに同じ様式を立て直す講座の受講申し込み、予約枠と可否連絡が絡む施設利用の申請。いずれも、届いた直後に受け付けた事実を相手に返す速さが問われます。自動返信をMail (2)で組むかどうかが直接効いてくるのはこの型です。継続的な関係が始まる会員の入会申し込みや、状態が何度も動く修理・サポートの受付では、1件のやり取りが長く続くため、履歴が残るかどうかが決定的になります。送信内容が標準では保存されないという仕様は、この型でいちばん重くのしかかります。
他のツールと条件で比べたい場合の整理も用意しています。回答が自動的に表に溜まり集計に強いGoogleフォームとの比較、WordPressサイトに組み込む前提で自由度が高く、この記事で扱った仕様をそのまま条件表にしたContact Form 7との比較、Microsoft 365の環境内で完結させたいときに選ばれるMicrosoft Formsとの比較。どれも優劣ではなく、どういう条件のときにどれが合うかという整理です。
受け取ったあとに何ができると楽になるのかを具体的に知りたい場合は、できることに機能の一覧を、動くところを見るに実際の画面を置いています。費用の感覚をつかみたい場合は料金を、運用上の疑問はよくある質問を確認してください。
最後に、判断の順序を整理しておきます。窓口が1つで、返す人も1人で、届く件数が1日に数件なら、このプラグインを置くだけで十分に足ります。無理に何かを足す必要はありません。次に、送信内容を残す必要があるかを決めます。応募や公募のように取りこぼしが許されない窓口なら、Flamingoを入れて保存する構成にするか、別の手段を用意するかを先に決めておきます。そして、関わる人が2人以上になり、返した・返していないを共有する必要が出てきたら、そこが手当ての分かれ目です。この記事で挙げた仕様はすべて2026年9月1日時点でcontactform7.comおよびwordpress.orgのプラグインページに公開されていた内容です。仕様も要件も改定されます。設定を変える前には、必ず公式のDocsとFAQで最新の記載を確認してください。
Q1. Contact Form 7で送信された内容は、あとから管理画面で見られますか?
標準では見られません。公式FAQに「Contact Form 7 doesn't save the submitted messages.」と明記されており、送信内容はメールとして飛ぶだけでサイト側には残りません。管理画面で一覧と検索を使いたい場合は、同じ作者によるFlamingoを入れます。有効化するとFlamingo > Inbound Messagesに送信内容が保存され、検索できるようになります。
Q2. 自動返信メールはどう設定しますか?
MailタブでUse Mail (2)を選び、Mail (2)を自動返信用のテンプレートとして設定します。宛先には送信者のメールアドレスのmail-tagを入れます。注意点は、Mail (2)は1通目のMailが正常に送信されたときにだけ送られることです。応募者から自動返信が来ないと連絡があった場合、管理者宛の通知も届いていない可能性が高いと考えて切り分けてください。
Q3. 履歴書のPDFを受け取りたいのに送信できないと言われます。原因は何ですか?
既定値が原因の可能性が高いです。公式によると省略時のfiletypesはaudio/|video/|image/*で、文書ファイルが含まれていません。上限も既定では1MBです。[file your-file filetypes:pdf|txt limit:2mb]のように明示的に指定してください。なお、メール1通に添付できる合計サイズの上限は25MBで、これを超える構成では警告が表示されます。
Q4. 問い合わせごとに担当者や対応状況を管理できますか?
1件ごとの担当者割り当て、未対応・対応中・完了といった対応ステータス、対応履歴の記録については、公式のDocs・FAQおよびwordpress.orgのプラグインページで記載が確認できませんでした。公式に案内されているのは、Additional headersにCc / Bccを1行1件で追加して複数の担当者にメールを届ける方法です。返信済みかどうかを共有する必要が出てきたら、そこが手当てを考える分かれ目になります。
