E-mail Action

The Email Action is a template to generate and send advanced e-mails on form submission.

Dynamic Form

Add actions on form submission

Click the "Add action" button below to start creating your layout
0 Custom action

Set a unique action slug

0 Email action
0 Option action

(Optional) Target this action using hooks.

Choose which ACF fields should be saved to this option

Fill inputs with values

Choose which ACF fields should have their values loaded

0 Post action

(Optional) Target this action using hooks.

Click to initialize TinyMCE

Choose which ACF fields should be saved to this post

Fill inputs with values

Choose which ACF fields should have their values loaded

0 Redirect action

(Optional) Target this action using hooks.

The URL to redirect to. See "Cheatsheet" tab for all available template tags.

0 Term action

(Optional) Target this action using hooks.

Click to initialize TinyMCE

Choose which ACF fields should be saved to this term

Fill inputs with values

Choose which ACF fields should have their values loaded

0 User action

(Optional) Target this action using hooks.

Click to initialize TinyMCE

Choose which ACF fields should be saved to this user

Fill inputs with values

Choose which ACF fields should have their values loaded

1 Email action

E-mail Settings

Setting nameDescription
Action nameAlias name allowing to use targeted hook
FromThe sender e-mail address
Format: Name <[email protected]>
ToThe recipient address
Reply toThe address to reply to
CcCopy carbon
BccBlind copy carbon
SubjectThe e-mail subject
ContentThe e-mail content
Dynamic filesE-mail attachments (mapping a field)
Static filesStatic e-mail attachments

Validation

By default, there is no validation for this Action. You can use the acf/validate_value hook to validate each fields individually.

To validate the whole form, you can use the acfe/form/validation/email hook and throw errors with the acfe_add_validation_error() function. Usage example:

/*
 * E-mail Validation
 * 
 * @array   $form     Form settings
 * @string  $post_id  Post ID (where the form is displayed)
 * @string  $action   Action name
 */
 
action('acfe/form/validation/email',                 $form, $post_id, $action);
action('acfe/form/validation/email/form=my-form',    $form, $post_id, $action);
action('acfe/form/validation/email/action=my-email', $form, $post_id, $action);
add_action('acfe/form/validation/email/form=my-form', 'my_form_validation', 10, 3);
function my_form_validation($form, $post_id, $action){
    
    // Get field input value
    $my_field = get_field('my_field');
    
    if($my_field === 'Company'){
        
        // Add validation error
        acfe_add_validation_error('my_field', 'The value Company is not allowed');
        
    }
    
}

Prepare

The preparation phase is triggered after the form validation and before its submission. Returning false will stop the Action and go to the next one. Usage example:

/*
 * E-mail Prepare
 * 
 * @bool    $prepare  True/false
 * @array   $form     Form settings
 * @string  $post_id  Post ID (where the form is displayed)
 * @string  $action   Action name
 */
 
filter('acfe/form/prepare/email',                 $prepare, $form, $post_id, $action);
filter('acfe/form/prepare/email/form=my-form',    $prepare, $form, $post_id, $action);
filter('acfe/form/prepare/email/action=my-email', $prepare, $form, $post_id, $action);
add_filter('acfe/form/prepare/email/form=my-form', 'my_form_prepare', 10, 4);
function my_form_prepare($prepare, $form, $post_id, $action){
    
    // Do not send e-mail if user isn't logged in
    if(!is_user_logged_in()){
        
        $prepare = false;
        
    }
    
    // return
    return $prepare;
    
}

E-mail Arguments

The acfe/form/submit/email_args hook let you change the e-mail arguments right before it is sent by wp_mail(). Returning false will stop the e-mail from being sent. Usage example:

/*
 * E-mail Arguments
 * 
 * @array   $args    Email arguments
 * @array   $form    Form settings
 * @string  $action  Action name
 */
 
filter('acfe/form/submit/email_args',                 $args, $form, $action);
filter('acfe/form/submit/email_args/form=my-form',    $args, $form, $action);
filter('acfe/form/submit/email_args/action=my-email', $args, $form, $action);
add_filter('acfe/form/submit/email_args/action=my-email', 'my_form_email_args', 10, 3);
function my_form_email_args($args, $form, $action){
    
    /*
     * $args = array(
     *     'from'          => '[email protected]',
     *     'reply_to'      => '[email protected]',
     *     'to'            => '[email protected]',
     *     'cc'            => '[email protected]',
     *     'bcc'           => '[email protected]',
     *     'subject'       => 'Subject',
     *     'content'       => 'Content',
     *     'headers'       => array(
     *         'From: [email protected]',
     *         'Reply-to: [email protected]',
     *         'Cc: [email protected]',
     *         'Bcc: [email protected]',
     *         'Content-Type: text/html',
     *         'charset=UTF-8'
     *     ),
     *     'attachments'   => array(
     *         '/path/to/file.jpg'
     *     )
     * );
     */
    
    /*
     * Get the form input value named 'my_field'
     */
    $my_field = get_field('my_field');
    
    if($my_field === 'Company'){
    
        // Change Recipient
        $args['to'] = '[email protected]';
    
    }
    
    /*
     * Get previous Post Action output
     */
    $prev_post_action = acfe_form_get_action('post');
    
    if(!empty($prev_post_action)){
    
        if($prev_post_action['post_title'] === 'Company'){
            
            // Change Recipient
            $args['to'] = '[email protected]';
            
        }
    
    }

    // Do not send E-mail
    // return false;
    
    // return
    return $args;
    
}

Submit

Trigger a custom action after the e-mail was sent using the acfe/form/submit/email hook. Usage example:

/*
 * E-mail Submit
 * 
 * @array   $args    Email arguments
 * @array   $form    Form settings
 * @string  $action  Action name
 */
 
action('acfe/form/submit/email',                 $args, $form, $action);
action('acfe/form/submit/email/form=my-form',    $args, $form, $action);
action('acfe/form/submit/email/action=my-email', $args, $form, $action);
add_action('acfe/form/submit/email/form=my-form', 'my_form_submit', 10, 3);
function my_form_submit($args, $form, $action){
    
    /*
     * Get the form input value named 'my_field'
     */
    $my_field = get_field('my_field');

    if($my_field === 'Company'){

        // do_something();

    }

    /*
     * Get previous Post Action output
     */
    $prev_post_action = acfe_form_get_action('post');

    if(!empty($prev_post_action)){

        if($prev_post_action['post_title'] === 'Company'){

            // do_something();
    
        }

    }
    
}

Output

The Action Output let developers retrieve the action data in a future action within the Form UI or a PHP hook. For example, the Template Tag {action:email:content} will output the latest E-mail Action “Content” setting.

If the action is named, the Template Tag will use it. Ie: {action:my-email:content}. The equivalent function in PHP is acfe_form_get_action('email').

It is possible to change the output of an E-mail Action using the acfe/form/output/email filter. Usage example:

/*
 * E-mail Output
 * 
 * @array   $data    Email arguments
 * @array   $form    Form settings
 * @string  $action  Action name
 */
 
filter('acfe/form/output/email',                 $data, $form, $action);
filter('acfe/form/output/email/form=my-form',    $data, $form, $action);
filter('acfe/form/output/email/action=my-email', $data, $form, $action);
add_filter('acfe/form/output/email/form=my-form', 'my_form_output', 10, 3);
function my_form_output($data, $form, $action){
    
    /*
     * $data = array(
     *     'from'          => '[email protected]',
     *     'reply_to'      => '[email protected]',
     *     'to'            => '[email protected]',
     *     'cc'            => '[email protected]',
     *     'bcc'           => '[email protected]',
     *     'subject'       => 'Subject',
     *     'content'       => 'Content',
     *     'headers'       => array(
     *         'From: [email protected]',
     *         'Reply-to: [email protected]',
     *         'Cc: [email protected]',
     *         'Bcc: [email protected]',
     *         'Content-Type: text/html',
     *         'charset=UTF-8'
     *     ),
     *     'attachments'   => array(
     *         '/path/to/file.jpg'
     *     )
     * );
     */
    
    // Get field input value
    $my_field = get_field('my_field');
    
    if($my_field === 'Company'){
    
        // Set a custom key
        $data['custom_key'] = 'custom_value';
    
    }
    
    // return
    return $data;
    
}