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