The gform_post_form_duplicated action in Gravity Forms is triggered after a form is duplicated, allowing further actions to be performed. The hook provides the ID of the form duplicated and the ID of the new form created.
Usage
add_action('gform_post_form_duplicated', 'my_function', 10, 2);
Parameters
- $form_id(int): The ID of the form being duplicated.
- $new_id(int): The ID of the newly created, duplicate form.
More information
See Gravity Forms Docs: gform_post_form_duplicated This hook replaces the deprecated “gform_after_duplicate_form” hook. Source code location: GFFormsModel::duplicate_form() in forms_model.php.
Examples
Send an email notification when a form is duplicated
function send_email_on_form_duplication($form_id, $new_id) {
    $subject = 'A form has been duplicated';
    $message = "Form with ID: {$form_id} has been duplicated. New form ID is: {$new_id}.";
    $to = '[email protected]';
    wp_mail($to, $subject, $message);
}
add_action('gform_post_form_duplicated', 'send_email_on_form_duplication', 10, 2);
Update a custom table with duplicate form information
function update_custom_table_on_duplication($form_id, $new_id) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'your_custom_table';
    $data = array('form_id' => $new_id, 'duplicated_from' => $form_id);
    $wpdb->insert($table_name, $data);
}
add_action('gform_post_form_duplicated', 'update_custom_table_on_duplication', 10, 2);
Log form duplication to a custom file
function log_form_duplication($form_id, $new_id) {
    $logfile = 'gravity_forms_duplication.log';
    $log_entry = date('Y-m-d H:i:s') . " - Form ID: {$form_id} duplicated to form ID: {$new_id}" . PHP_EOL;
    file_put_contents($logfile, $log_entry, FILE_APPEND | LOCK_EX);
}
add_action('gform_post_form_duplicated', 'log_form_duplication', 10, 2);
Change form title after duplication
function change_form_title_on_duplication($form_id, $new_id) {
    $form = GFAPI::get_form($new_id);
    $form['title'] = $form['title'] . ' (Duplicated)';
    GFAPI::update_form($form);
}
add_action('gform_post_form_duplicated', 'change_form_title_on_duplication', 10, 2);
Add a prefix to all field labels in the duplicated form
function prefix_field_labels_on_duplication($form_id, $new_id) {
    $form = GFAPI::get_form($new_id);
    foreach ($form['fields'] as &$field) {
        $field->label = 'Dup: ' . $field->label;
    }
    GFAPI::update_form($form);
}
add_action('gform_post_form_duplicated', 'prefix_field_labels_on_duplication', 10, 2);