{"id":352797,"date":"2026-08-23T01:41:48","date_gmt":"2026-08-23T01:41:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/confirm-flow-for-contact-form-7\/"},"modified":"2026-08-23T04:30:40","modified_gmt":"2026-08-23T04:30:40","slug":"plugear-review-step-for-contact-form-7","status":"publish","type":"plugin","link":"https:\/\/th.wordpress.org\/plugins\/plugear-review-step-for-contact-form-7\/","author":23542300,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Plugear Review Step for Contact Form 7","header_author":"Plugear","header_description":"Adds a confirmation step (input \u2192 confirm \u2192 send) to your Contact Form 7 forms.","assets_banners_color":"5c6474","last_updated":"2026-08-23 04:30:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plugear.net\/docs\/plugear-review-step-for-contact-form-7\/en\/","header_author_uri":"https:\/\/plugear.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":110,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"plugear","date":"2026-08-23 01:41:29"},"1.0.1":{"tag":"1.0.1","author":"plugear","date":"2026-08-23 04:30:40"}},"upgrade_notice":{"1.0.1":"<p>Comment cleanup only. No functional changes.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3661301,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3661301,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3661301,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3661301,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3661301,"resolution":"1","location":"assets","locale":"","width":1400,"height":2070},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3661301,"resolution":"2","location":"assets","locale":"","width":1400,"height":1374},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3661301,"resolution":"3","location":"assets","locale":"","width":1556,"height":1142},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3661301,"resolution":"4","location":"assets","locale":"","width":1400,"height":2334}},"screenshots":{"1":"The form as the visitor fills it in. This is your own form \u2014 the plugin does not change the markup.","2":"The confirmation. Every input is replaced in place by the value that was typed, so the table rows, labels and required badges stay exactly where they were. Edit and Send are built from your own submit button.","3":"The Confirm Screen tab on the form editor. Turning the confirmation on is a single checkbox; the rest is optional wording and scrolling.","4":"A validation error. The message appears in Contact Form 7's own markup, so the styling your theme already has for form errors keeps working."}},"plugin_section":[],"plugin_tags":[19336,8381,601,5622,724],"plugin_category":[42],"plugin_contributors":[274984],"plugin_business_model":[],"class_list":["post-352797","plugin","type-plugin","status-publish","hentry","plugin_tags-confirm","plugin_tags-confirmation","plugin_tags-forms","plugin_tags-japanese","plugin_tags-validation","plugin_category-contact-forms","plugin_contributors-plugear","plugin_committers-plugear"],"banners":{"banner":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/banner-772x250.png?rev=3661301","banner_2x":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/banner-1544x500.png?rev=3661301","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/icon-128x128.png?rev=3661301","icon_2x":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/icon-256x256.png?rev=3661301","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/screenshot-1.png?rev=3661301","caption":"The form as the visitor fills it in. This is your own form \u2014 the plugin does not change the markup."},{"src":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/screenshot-2.png?rev=3661301","caption":"The confirmation. Every input is replaced in place by the value that was typed, so the table rows, labels and required badges stay exactly where they were. Edit and Send are built from your own submit button."},{"src":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/screenshot-3.png?rev=3661301","caption":"The Confirm Screen tab on the form editor. Turning the confirmation on is a single checkbox; the rest is optional wording and scrolling."},{"src":"https:\/\/ps.w.org\/plugear-review-step-for-contact-form-7\/assets\/screenshot-4.png?rev=3661301","caption":"A validation error. The message appears in Contact Form 7's own markup, so the styling your theme already has for form errors keeps working."}],"raw_content":"<!--section=description-->\n<p>Contact Form 7 sends a message the moment the visitor presses submit. There is\nno chance to look at what was typed. Plugear Review Step puts a confirmation\nstep in between: the visitor presses the button, sees the values they entered,\nand only then sends.<\/p>\n\n<p>You turn it on with one checkbox in a <strong>Confirm Screen<\/strong> tab on the form you\nalready have. There is no second form to keep in sync, no confirmation page to\ncreate, and nothing to add to the form template.<\/p>\n\n<h4>The confirmation looks like your form<\/h4>\n\n<p>The confirmation is not a separate panel. Each input is replaced <strong>in place<\/strong>\nby the value that was typed, so labels, table rows, fieldsets and every bit of\nmarkup you wrote stay exactly where they were. A form laid out in a table stays\na table. A two-column layout stays two columns.<\/p>\n\n<p>The Edit and Send buttons are built from your existing submit button, so they\ninherit whatever your theme gives it.<\/p>\n\n<h4>Nothing is sent until the visitor confirms<\/h4>\n\n<p>The confirmation step runs Contact Form 7's own validation rules on the server\nand returns the result \u2014 nothing else. No mail is sent, no spam check is\ncharged, and none of the <code>wpcf7_*<\/code> submission hooks fire. Other plugins that\nact on a submission cannot be triggered twice.<\/p>\n\n<p>When the visitor presses Send, Contact Form 7 runs its normal submission\nexactly once. The mail you receive is the same mail you would have received\nwithout this plugin.<\/p>\n\n<h4>Errors look the way they always did<\/h4>\n\n<p>If something is invalid, the message appears in the same place, with the same\nmarkup and the same accessibility wiring that Contact Form 7 uses itself. Your\ntheme's styling for form errors keeps working, and screen readers announce\nerrors the same way.<\/p>\n\n<h4>Settings<\/h4>\n\n<p>Per form, in the <strong>Confirm Screen<\/strong> tab:<\/p>\n\n<ul>\n<li>Turn the confirmation step on or off<\/li>\n<li>Button labels for Confirm, Edit and Send<\/li>\n<li>Whether to show a placeholder for fields left empty, and what that text says<\/li>\n<li>Whether to scroll to the top of the form when entering and leaving the\nconfirmation<\/li>\n<\/ul>\n\n<h4>Full-width numbers are fixed for you<\/h4>\n\n<p>On a Japanese phone keyboard, typing a number produces full-width digits. A phone\nnumber entered that way is rejected by Contact Form 7's own validation, and the\nvisitor is sent back to retype it without being told why.<\/p>\n\n<p>Plugear Review Step converts full-width letters, digits and spaces to half-width\n<strong>at the moment the visitor presses the confirm button<\/strong> \u2014 never while they are\ntyping, which would break Japanese input mid-conversion. Phone, number, email and\nURL fields are handled by default; any other field can opt in with a <code>hankaku<\/code>\noption on the form tag.<\/p>\n\n<p>Number fields are the one exception: the browser itself discards full-width digits\nfrom a number input before any script can see them, so there is nothing left to\nconvert.<\/p>\n\n<h4>For developers<\/h4>\n\n<ul>\n<li><code>plg_prscf7_scroll_offset<\/code> \u2014 gap kept above the form when scrolling\n(default <code>10vh<\/code>, i.e. 10% of the viewport)<\/li>\n<li><code>plg_prscf7_load_css<\/code> \u2014 return false to drop the bundled stylesheet<\/li>\n<li><code>plg_prscf7_normalize_fields<\/code> \u2014 which fields are converted to half-width<\/li>\n<li><code>plg_prscf7_safe_validation<\/code> \u2014 skip third-party <code>wpcf7_validate_*<\/code> callbacks\nduring the confirmation step<\/li>\n<\/ul>\n\n<p>The confirmation markup uses <code>plg_prscf7_<\/code>-prefixed classes\n(<code>plg_prscf7_confirming<\/code>, <code>plg_prscf7_value<\/code>, <code>plg_prscf7_actions<\/code>,\n    plg_prscf7_back, <code>plg_prscf7_send<\/code>) that are safe to style.<\/p>\n\n<p>Only two rules ship as CSS: spacing between the two buttons, and a secondary\nlook for the Edit button. Everything else is left to your theme.<\/p>\n\n<h4>\u65e5\u672c\u8a9e<\/h4>\n\n<p>Contact Form 7 \u306b<strong>\u78ba\u8a8d\u753b\u9762<\/strong>\uff08\u5165\u529b\u78ba\u8a8d\uff09\u3092\u8ffd\u52a0\u3059\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u3059\u3002\u9001\u4fe1\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\n\u5165\u529b\u5185\u5bb9\u306e<strong>\u78ba\u8a8d\u30da\u30fc\u30b8<\/strong>\u304c\u8868\u793a\u3055\u308c\u3001\u305d\u3053\u3067\u521d\u3081\u3066\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002\u5165\u529b\u30df\u30b9\u3068<strong>\u4e8c\u91cd\u9001\u4fe1<\/strong>\u3092\n\u6e1b\u3089\u305b\u307e\u3059\u3002<\/p>\n\n<p><strong>\u30d5\u30a9\u30fc\u30e0\u306f 1 \u3064\u306e\u307e\u307e\u3067\u3059\u3002<\/strong> \u78ba\u8a8d\u7528\u306e\u30d5\u30a9\u30fc\u30e0\u3092\u8907\u88fd\u3057\u305f\u308a\u3001\u78ba\u8a8d\u30da\u30fc\u30b8\u3092\u5225\u306b\u4f5c\u3063\u305f\u308a\n\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u65e2\u5b58\u306e\u30d5\u30a9\u30fc\u30e0\u306e\u300c\u78ba\u8a8d\u753b\u9762\u300d\u30bf\u30d6\u3067\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n\n<p>\u78ba\u8a8d\u753b\u9762\u306f\u5225\u753b\u9762\u3092\u4f5c\u3089\u305a\u3001<strong>\u5165\u529b\u6b04\u304c\u3042\u3063\u305f\u305d\u306e\u5834\u6240<\/strong>\u3092\u5165\u529b\u5024\u306b\u5dee\u3057\u66ff\u3048\u307e\u3059\u3002\u30e9\u30d9\u30eb\u30fb\n\u8868\u7d44\u307f\u30fb\u5165\u308c\u5b50\u306e HTML \u306f\u305d\u306e\u307e\u307e\u6b8b\u308b\u306e\u3067\u3001\u30c6\u30fc\u30de\u3067\u6574\u3048\u305f\u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u5d29\u308c\u307e\u305b\u3093\u3002\n\u300c\u4fee\u6b63\u3059\u308b\u300d\u300c\u9001\u4fe1\u3059\u308b\u300d\u306e\u30dc\u30bf\u30f3\u306f\u65e2\u5b58\u306e\u9001\u4fe1\u30dc\u30bf\u30f3\u304b\u3089\u4f5c\u308b\u305f\u3081\u3001\u30c6\u30fc\u30de\u306e\u898b\u305f\u76ee\u3092\n\u305d\u306e\u307e\u307e\u53d7\u3051\u7d99\u304e\u307e\u3059\u3002<\/p>\n\n<p>\u78ba\u8a8d\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u30e1\u30fc\u30eb\u3092\u9001\u3089\u305a\u3001\u30b9\u30d1\u30e0\u5224\u5b9a\u3082\u8d70\u3089\u305b\u307e\u305b\u3093\u3002\u691c\u8a3c\u306f Contact Form 7 \u81ea\u8eab\u306e\n\u30eb\u30fc\u30eb\u3092\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u5b9f\u884c\u3057\u3066\u7d50\u679c\u3092\u8fd4\u3059\u3060\u3051\u3067\u3059\u3002\u30a8\u30e9\u30fc\u8868\u793a\u3082 Contact Form 7 \u3068\u540c\u3058\u5f62\u3067\n\u51fa\u308b\u306e\u3067\u3001\u30c6\u30fc\u30de\u306e\u30b9\u30bf\u30a4\u30eb\u3068\u8aad\u307f\u4e0a\u3052\u304c\u305d\u306e\u307e\u307e\u52b9\u304d\u307e\u3059\u3002<\/p>\n\n<p><strong>\u5168\u89d2\u534a\u89d2<\/strong>\u306e\u6b63\u898f\u5316\u3082\u5165\u3063\u3066\u3044\u307e\u3059\u3002\u30b9\u30de\u30db\u306e\u304b\u306a\u5165\u529b\u3067\u6253\u3063\u305f\u5168\u89d2\u6570\u5b57\uff08<code>\uff10\uff19\uff10\u2026<\/code>\uff09\u306f\nContact Form 7 \u306e\u691c\u8a3c\u3067\u5f3e\u304b\u308c\u307e\u3059\u304c\u3001\u78ba\u8a8d\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u6642\u70b9\u3067\u534a\u89d2\u306b\u76f4\u3059\u306e\u3067\u3001\u5229\u7528\u8005\u304c\n\u6253\u3061\u76f4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u5165\u529b\u4e2d\u306b\u306f\u89e6\u3089\u306a\u3044\u306e\u3067\u3001\u65e5\u672c\u8a9e\u5165\u529b\u306e\u5909\u63db\u3092\u58ca\u3057\u307e\u305b\u3093\u3002\n\u96fb\u8a71\u30fb\u6570\u5024\u30fb\u30e1\u30fc\u30eb\u30fbURL \u306f\u6307\u5b9a\u306a\u3057\u3067\u5bfe\u8c61\u3001\u305d\u308c\u4ee5\u5916\u306f\u30d5\u30a9\u30fc\u30e0\u30bf\u30b0\u306b <code>hankaku<\/code> \u3068\n\u66f8\u3051\u3070\u5bfe\u8c61\u306b\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057 <code>[number]<\/code> \u3060\u3051\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u304c\u5168\u89d2\u6570\u5b57\u3092\u53d7\u3051\u53d6\u3063\u305f\u6642\u70b9\u3067\n\u5024\u3092\u6368\u3066\u3066\u3057\u307e\u3046\u305f\u3081\u76f4\u3057\u3088\u3046\u304c\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n<p>\u65e5\u672c\u8a9e\u306e\u7ffb\u8a33\u306f WordPress.org \u306e\u7ffb\u8a33\u30b5\u30a4\u30c8\uff08translate.wordpress.org\uff09\u3067\u63d0\u4f9b\u3057\u307e\u3059\u3002\n\u7ffb\u8a33\u304c\u5c4a\u304f\u524d\u3067\u3082\u3001\u78ba\u8a8d\u753b\u9762\u306e\u30dc\u30bf\u30f3\u6587\u8a00\u306f\u30d5\u30a9\u30fc\u30e0\u3054\u3068\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>Contact Form 7<\/strong> (version 5.7 or later) first. On\nWordPress 6.5 and later this is required: WordPress will not let you\nactivate this plugin while Contact Form 7 is inactive.<\/li>\n<li>Install this plugin and activate it.<\/li>\n<li>Open <strong>Contact \u2192 Contact Forms<\/strong> and edit the form you want a confirmation\nstep on.<\/li>\n<li>Open the <strong>Confirm Screen<\/strong> tab, tick <em>Show a confirmation step before\nsending<\/em>, and save.<\/li>\n<\/ol>\n\n<p>That is all. The form on your site now shows a confirmation step. Nothing in\nthe form template has to change.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20need%20contact%20form%207%3F\"><h3>Does this need Contact Form 7?<\/h3><\/dt>\n<dd><p>Yes. Contact Form 7 5.7 or later must be installed and active. On WordPress 6.5\nand later this plugin declares Contact Form 7 as a dependency, so WordPress\nblocks activation until Contact Form 7 is active, and it will not let you\ndeactivate Contact Form 7 while this plugin is active. On older WordPress, and\nwhenever the installed Contact Form 7 is older than 5.7, this plugin simply\ndoes nothing and tells you so on the admin screen \u2014 your site keeps working\nnormally.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20create%20a%20second%20form%20or%20a%20confirmation%20page%3F\"><h3>Do I have to create a second form or a confirmation page?<\/h3><\/dt>\n<dd><p>No. One form, one shortcode. The confirmation happens on the same page.<\/p><\/dd>\n<dt id=\"will%20i%20receive%20two%20emails%3F\"><h3>Will I receive two emails?<\/h3><\/dt>\n<dd><p>No. The confirmation step never sends mail. Contact Form 7's normal submission\nruns once, when the visitor presses Send.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20recaptcha%2C%20turnstile%20or%20akismet%3F\"><h3>Does it work with reCAPTCHA, Turnstile or Akismet?<\/h3><\/dt>\n<dd><p>Yes. Those run at the spam-check stage, which the confirmation step does not\nenter at all. They do their usual work when the message is actually sent.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20file%20uploads%3F\"><h3>Does it work with file uploads?<\/h3><\/dt>\n<dd><p>Yes. The confirmation shows the file name that was chosen, and the file is\nuploaded with the final submission as usual.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20javascript%20is%20unavailable%3F\"><h3>What happens if JavaScript is unavailable?<\/h3><\/dt>\n<dd><p>The confirmation step is skipped and the form behaves like plain Contact Form\n7 \u2014 the message is still delivered. Nothing breaks.<\/p><\/dd>\n<dt id=\"can%20i%20change%20how%20the%20confirmation%20looks%3F\"><h3>Can I change how the confirmation looks?<\/h3><\/dt>\n<dd><p>Yes. The confirmation reuses your own markup, so most of it is already styled\nby your theme. For the parts this plugin adds, style the <code>plg_prscf7_<\/code> classes\nlisted in the description, or drop the bundled CSS entirely with the\n    plg_prscf7_load_css filter.<\/p><\/dd>\n<dt id=\"which%20php%20version%20should%20i%20be%20on%3F\"><h3>Which PHP version should I be on?<\/h3><\/dt>\n<dd><p>The plugin runs on PHP 7.4 and later, and every release is tested down to 7.4\nso that sites still on it are not left behind. That said, PHP 7.4 reached end\nof life and no longer receives security fixes, so please ask your host to move\nyou to a supported version (8.1 or later) when you can. Nothing in this plugin\nrequires it \u2014 the recommendation is about your site's security, not about the\nconfirmation step.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>Not tested on multisite. It is not blocked from activating, but it is outside\nwhat this plugin is verified against.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20settings%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to my settings when I delete the plugin?<\/h3><\/dt>\n<dd><p>Nothing is deleted by default. Your forms and their settings are left alone.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Housekeeping: cleaned up source code comments. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Add a confirmation step to your Contact Form 7 forms. Turn it on per form. No second form, no extra page, no shortcode to add.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=352797"}],"author":[{"embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/plugear"}],"wp:attachment":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352797"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352797"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352797"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352797"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352797"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}