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.

Fill inputs with values

0 Post action

(Optional) Target this action using hooks.

Click to initialize TinyMCE

Fill inputs with values

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

Fill inputs with values

0 User action

(Optional) Target this action using hooks.

Click to initialize TinyMCE

Fill inputs with values

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;
    
}