How to hook into Contact Form 7 Before Send

I have a plugin I am writing that I want to interact with Contact Form 7. In my plugin I added the following action add_action

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");

function wpcf7_do_something_else(&$wpcf7_data) {

    // Here is the variable where the data are stored!

    // If you want to skip mailing the data, you can do it...
    $wpcf7_data->skip_mail = true;


I submitted the contact form but the add_action I had did nothing. I'm unsure how to make my plugin intercept or do something when Contact Form 7 does something. Any, help on how to do this?


I had to do this to prevent Email from being sent. Hope it helps.

    Prevent the email sending step for specific form
add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");  
function wpcf7_do_something_else($cf7) {
    // get the contact form object
    $wpcf = WPCF7_ContactForm::get_current();

    // if you wanna check the ID of the Form $wpcf->id

    if (/*Perform check here*/) {
        // If you want to skip mailing the data, you can do it...  
        $wpcf->skip_mail = true;    

    return $wpcf;

This code assumes that you are running the latest version of CF7 your code above used to work until a couple months ago when they went and did some refactoring of the code. [Apr 28 '15]

I'd like to add that you could just use the wpcf7_skip_mail filter:

add_filter( 'wpcf7_skip_mail', 'maybe_skip_mail' );

function maybe_skip_mail( $skip_mail, $contact_form ) {

    if( /* your condition */ )
        $skip_mail = true;

    return $skip_mail;

}, 10, 2 );

You can turn Demo Mode on in additional settings and this will prevent emails from being sent. See below from the CF7 Docs.

If you set demo_mode: on in the Additional Settings field, the contact form will be in the demo mode. In this mode, the contact form will skip the process of sending mail and just display “completed successfully” as a response message.

Need Your Help

What's the Maximum Value of smallint(6) unsigned in MySQL?

sql mysql types

What's the maximum value of smallint(6) unsigned in MySQL?

Decorator pattern versus sub classing

design-patterns decorator

I can solve the problem of adding functionality by adding sub classing then why should I use decorator pattern what's the real advantage of decorator pattern ?