Conditional Fields 2.2.9 introduced the action hook wpcf7cf_step_completed
. This hook is triggered each time a step is validated. The hook is not triggered on the last step, because at this point the entire form is validated.
Example: send email when first step is completed
Let’s say you have created a multistep form like this:
Form
Form Code
[step]
<label> Your name [text* your-name] </label>
<label> Your email [email* your-email] </label>
[step]
<label> Subject [text* your-subject] </label>
<label> Your message (optional) [textarea your-message] </label>
[step]
See this example in action here: <a href="https://conditional-fields-cf7.bdwm.be/wpcf7cf_step_completed/">https://conditional-fields-cf7.bdwm.be/wpcf7cf_step_completed/</a>
[summary]
[submit "Submit"]
Edit this form in the form tester
You can then insert the form with this shortcode:
[contact-form-7 id="98" title="My form"]
Take note of the form ID. In this case it’s 98, but make sure to change it to your own ID if you copy the code below.
Now open your theme’s functions.php file and add this code:
add_action('wpcf7cf_step_completed', function($result) {
$form_id = $_POST['_wpcf7'];
if ($form_id !== '98') { // <--- enter your form ID here
return;
}
$posted_data = $_POST;
$steps = json_decode( stripslashes( $posted_data['_wpcf7cf_steps'] ), true );
if ($steps['currentStep'] !== 1) { // <--- only trigger after completing first step
return;
}
$message = "
Hi admin,
someone has completed step 1.
Name: {$posted_data['your-name']}
Email: {$posted_data['your-email']}
Kind regards,
your form
";
wp_mail('admin@example.com', 'A user completed step 1', $message);
}, 10, 1);