{"id":317357,"date":"2026-07-09T08:15:42","date_gmt":"2026-07-09T08:15:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/confirm-step-for-contact-form-7\/"},"modified":"2026-07-09T08:15:07","modified_gmt":"2026-07-09T08:15:07","slug":"bpotech-confirm-step-for-contact-form-7","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bpotech-confirm-step-for-contact-form-7\/","author":23145937,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.3","stable_tag":"1.1.3","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"BPOTech Confirm Step for Contact Form 7","header_author":"BPO Tech WP Team","header_description":"Adds a confirmation step that lets visitors review the data they entered in a Contact Form 7 form before final submission. Requires Contact Form 7.","assets_banners_color":"fefefe","last_updated":"2026-07-09 08:15:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/bpotech-confirm-step-for-contact-form-7","header_author_uri":"https:\/\/bpotech.com.vn\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":25,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.3":{"tag":"1.1.3","author":"wphuebpo","date":"2026-07-09 08:15:07"}},"upgrade_notice":{"1.1.3":"<p>Hot fix. Requires Contact Form 7.<\/p>","1.1.1":"<p>Maintenance release. Requires Contact Form 7.<\/p>","1.1.0":"<p>First release on WordPress.org. Requires Contact Form 7.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3601146,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3601146,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3601146,"resolution":"1544x500","location":"assets","locale":"","width":1546,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3601146,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3601146,"resolution":"1","location":"assets","locale":"","width":1439,"height":912},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3601146,"resolution":"2","location":"assets","locale":"","width":1477,"height":836},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3601146,"resolution":"3","location":"assets","locale":"","width":1214,"height":575}},"screenshots":{"1":"Confirm tab with enable checkbox, confirm template, and tag buttons.","2":"Confirm Settings metabox (scroll class and offset).","3":"Step status markers help on the Confirm tab."}},"plugin_section":[],"plugin_tags":[5445,19336,1152,110,39820],"plugin_category":[42,53],"plugin_contributors":[232932],"plugin_business_model":[],"class_list":["post-317357","plugin","type-plugin","status-publish","hentry","plugin_tags-cf7","plugin_tags-confirm","plugin_tags-contact-form-7","plugin_tags-review","plugin_tags-two-step","plugin_category-contact-forms","plugin_category-ratings-and-reviews","plugin_contributors-wphuebpo","plugin_committers-wphuebpo"],"banners":{"banner":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/banner-772x250.jpg?rev=3601146","banner_2x":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/banner-1544x500.jpg?rev=3601146","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/icon-128x128.jpg?rev=3601146","icon_2x":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/icon-256x256.jpg?rev=3601146","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/screenshot-1.jpg?rev=3601146","caption":"Confirm tab with enable checkbox, confirm template, and tag buttons."},{"src":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/screenshot-2.jpg?rev=3601146","caption":"Confirm Settings metabox (scroll class and offset)."},{"src":"https:\/\/ps.w.org\/bpotech-confirm-step-for-contact-form-7\/assets\/screenshot-3.jpg?rev=3601146","caption":"Step status markers help on the Confirm tab."}],"raw_content":"<!--section=description-->\n<p><strong>Confirm Step for Contact Form 7<\/strong> adds a review step between filling in a form and sending it. Visitors see a confirmation screen with their answers (using the same mail-tags as your emails), can go back to edit, or submit for real.<\/p>\n\n<p>All options are managed <strong>inside each Contact Form 7 form<\/strong> (a <strong>Confirm<\/strong> tab in the form editor). There is no separate settings page in WordPress admin.<\/p>\n\n<p><strong>Requires <a href=\"https:\/\/wordpress.org\/plugins\/contact-form-7\/\">Contact Form 7<\/a> to be installed and active.<\/strong> If CF7 is missing, this plugin deactivates itself and shows an admin notice.<\/p>\n\n<h4>How it works (front end)<\/h4>\n\n<ol>\n<li>The visitor completes the <strong>input step<\/strong> (your normal Form tab template) and clicks the <strong>Confirm<\/strong> button (<code>[confirm]<\/code>).<\/li>\n<li>Contact Form 7 validates the input. The plugin <strong>does not send mail yet<\/strong>; the response switches to the <strong>confirm step<\/strong>.<\/li>\n<li>The confirm template (Confirm tab) is shown with values filled in via mail-tags.<\/li>\n<li>The visitor clicks <strong>Submit<\/strong> (<code>[submit]<\/code>) to send, or <strong>Back<\/strong> (<code>[back]<\/code>) to return to the input step without reloading the page.<\/li>\n<li>After a successful send, the form returns to the input step.<\/li>\n<\/ol>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Per-form enable<\/strong> \u2014 Checkbox \u201cEnable confirm step\u201d on the Confirm tab; disabled forms behave like plain CF7 forms.<\/li>\n<li><strong>Confirm tab<\/strong> \u2014 Dedicated template textarea, mail-tag helper, and tag generator buttons for Submit and Back.<\/li>\n<li><strong>Form tags<\/strong> \u2014 <code>[confirm]<\/code> (step 1, Form tab generator), <code>[submit]<\/code> (CF7 core, insert from Confirm tab), <code>[back]<\/code> (step 2, Confirm tab generator). Labels and classes follow CF7 conventions.<\/li>\n<li><strong>Step status markers<\/strong> \u2014 Add <code>cf7cfstep-status-class<\/code> or <code>cf7cfstep-status-class-{formid}<\/code> to any page element; the plugin toggles <code>cf7cfstep-status-input<\/code> \/ <code>cf7cfstep-status-confirm<\/code> for theme CSS (progress text, sidebars, etc.).<\/li>\n<li><strong>Confirm Settings<\/strong> \u2014 Optional scroll target <strong>class<\/strong> and <strong>offset (px)<\/strong> when entering the confirm step only (positive offset scrolls further down, negative scrolls further up; leave class empty to disable).<\/li>\n<li><strong>Editor UX<\/strong> \u2014 Confirm tab panel hides when disabled; admin styles and collapsible help\/settings boxes on the Confirm tab.<\/li>\n<li><strong>Legacy-compatible storage<\/strong> \u2014 Confirm body and options use the same meta keys as the earlier function-based plugin where applicable.<\/li>\n<\/ul>\n\n<h4>For developers<\/h4>\n\n<ul>\n<li>PHP <strong>8.0+<\/strong>, namespaced class architecture (<code>CF7ConfirmStep\\<\/code>), no Composer dependency.<\/li>\n<li>Front-end script is vanilla JavaScript (no jQuery on the public site).<\/li>\n<li>Form-specific scroll options are passed via <code>window.cf7csFormSettings[formId]<\/code> when a scroll class is configured.<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<ol>\n<li><strong>Confirm tab<\/strong> \u2014 Enable confirm step, write the review template with mail-tags, add <code>[submit]<\/code> and <code>[back]<\/code>, save.<\/li>\n<li><strong>Form tab<\/strong> \u2014 Add your fields and a <code>[confirm]<\/code> button (tag generator: <strong>Confirm Button<\/strong>). Use <code>[submit]<\/code> only on the confirm step if you want a single send action.<\/li>\n<li><strong>Confirm Settings<\/strong> (optional) \u2014 Scroll target class + offset when entering the confirm step; leave class empty to skip scrolling.<\/li>\n<li><strong>Step status markers<\/strong> (optional) \u2014 Add <code>cf7cfstep-status-class<\/code> or <code>cf7cfstep-status-class-{formid}<\/code> on page elements; style with <code>cf7cfstep-status-input<\/code> \/ <code>cf7cfstep-status-confirm<\/code>.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>Contact Form 7<\/strong>.<\/li>\n<li>Upload the <code>bpotech-confirm-step-for-contact-form-7<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install from the WordPress plugin directory when available).<\/li>\n<li>Activate <strong>Confirm Step for Contact Form 7<\/strong> under <strong>Plugins<\/strong>.<\/li>\n<li>Edit a contact form, open the <strong>Confirm<\/strong> tab, enable the confirm step, and configure the template and settings.<\/li>\n<li>On the <strong>Form<\/strong> tab, add a <code>[confirm]<\/code> button (use the <strong>Confirm Button<\/strong> tag generator). Save the form.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20without%20contact%20form%207%3F\"><h3>Does this work without Contact Form 7?<\/h3><\/dt>\n<dd><p>No. CF7 must be active. Otherwise the plugin will not run (and will deactivate on load if CF7 was removed).<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20only%20some%20forms%3F\"><h3>Can I use it on only some forms?<\/h3><\/dt>\n<dd><p>Yes. Enable <strong>Enable confirm step<\/strong> only on the forms that need a review step.<\/p><\/dd>\n<dt id=\"when%20is%20email%20actually%20sent%3F\"><h3>When is email actually sent?<\/h3><\/dt>\n<dd><p>Only when the visitor submits from the <strong>confirm step<\/strong> with <code>[submit]<\/code> (step 2). The first <code>[confirm]<\/code> click only validates and shows the review screen.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20disable%20%E2%80%9Cenable%20confirm%20step%E2%80%9D%3F\"><h3>What happens if I disable \u201cEnable confirm step\u201d?<\/h3><\/dt>\n<dd><p>The form submits in one step like normal CF7.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20wrap%20fields%20manually%3F\"><h3>Do I need to wrap fields manually?<\/h3><\/dt>\n<dd><p>No. The input wrapper is added when the form is rendered. The confirm wrapper is built from the Confirm tab template automatically.<\/p><\/dd>\n<dt id=\"can%20i%20have%20multiple%20cf7%20forms%20on%20one%20page%3F\"><h3>Can I have multiple CF7 forms on one page?<\/h3><\/dt>\n<dd><p>Yes. Each form has its own step state. Global status markers (<code>cf7cfstep-status-class<\/code>) reflect the last confirm-enabled form that changed step; use <code>cf7cfstep-status-class-{formid}<\/code> to scope styling per form.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20remove%20form%20data%3F\"><h3>Does uninstalling remove form data?<\/h3><\/dt>\n<dd><p>Uninstall does not delete confirm templates or per-form meta stored on contact forms. Remove or disable confirm in each form before uninstall if you want a clean editor state.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Hot fix.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>i18n: use plugin text domain consistently in the CF7 editor.<\/li>\n<li>Front-end: scope mail error response handling to the submitting form only.<\/li>\n<li>Readme: PHP 8.0, WordPress 7.0 tested, tag limit compliance.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>First release on WordPress.org.<\/li>\n<li>Two-step confirm flow for Contact Form 7 (<code>[confirm]<\/code>, review template, <code>[submit]<\/code> \/ <code>[back]<\/code>).<\/li>\n<li>Confirm tab settings: per-form enable, step status markers, optional scroll on confirm step.<\/li>\n<\/ul>","raw_excerpt":"Adds a confirmation step so visitors can review Contact Form 7 input before the message is sent.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/317357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=317357"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wphuebpo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=317357"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=317357"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=317357"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=317357"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=317357"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=317357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}