

<strong>CF7 Editor Button:</strong> A vibrant 'Repeater' button is now natively integrated into your Contact Form 7 tag generator area.
Code and Core Repeater Fields for Contact Form 7 takes your classic Contact Form 7 forms to the next level by allowing users to add an unlimited, or strictly limited, number of dynamic field blocks.
Whether you are collecting an unknown number of attendees for an event, gathering past employment history records, dynamically submitting multiple file uploads, or tracking an indefinite list of inventory items the Repeater Extension seamlessly integrates directly into your Contact Form 7 editor, providing the ultimate solution for complex form data collection.
If you are looking to create highly converting, dynamic WordPress forms, the Code and Core Repeater Fields for CF7 plugin is an essential add-on. Gone are the days of creating tedious, hard-coded long forms with dozens of unnecessary inputs. By allowing your website visitors to recursively duplicate form field groups or “add more rows” on the fly, you instantly streamline the user experience, improve your form submission rates, and collect cleanly structured data arrays.
This lightweight, developer-friendly CF7 repeater extension is fully optimized for performance and modern WordPress site architecture. Whether you urgently need a ‘CF7 add more fields’ button, dynamic repeatable multipart form rows, or a frontend input cloner, our extension handles it flawlessly. It acts as the perfect dynamic form builder solution to collect complex nested data like family member details, employment histories, or multiple product order requests directly inside your existing Contact Form 7 setup.
[attendees]), and the plugin automatically prints out the gathered fields!This plugin connects to a third-party service at https://wordpress-plugins.pro/ for the following purposes:
This service is provided by “WordPress Plugins Pro”: General Conditions, Privacy Policy.
Here are the two primary ways to implement the Repeater Field based on your dynamic form requirements:
In this mode, users click “Add” to add new rows and “Remove” to delete them. This is ideal for general lists like attendees or work experience.
[repeater contact-list initial:1 max:10 add_text:"Add row" remove_text:"Remove row"]
<label> Full Name: [text* contact-name] </label>
<label> Phone: [tel* contact-phone] </label>
[/repeater]
This mode automatically generates a specific number of rows based on a numeric value from another field (e.g., a dropdown or number input). It removes the manual “Add Row” button for a more streamlined experience.
<label> How many guests are coming?
[select guest-count "1" "2" "3" "4" "5"] </label>
<!-- Linking to guest-count via the trigger attribute -->
[repeater guests trigger:guest-count]
<label> Guest Name: [text guest-name] </label>
[/repeater]
To show the collected repeater data in your email notifications, go to the Mail tab in Contact Form 7 and use the repeater’s ID (e.g., [guests]) inside the Message Body:
Hello Admin, here is the submitted data:
[guests]
The plugin will automatically render the data as a professional HTML Table or a formatted List depending on your configuration.
Want your data as a bulleted list instead of a table? Simply pass the mail_format attribute directly into your form shortcode!
[repeater attendees mail_format:"list"]
...
[/repeater]
If you want complete control over how the repeating fields look in your email notifications, you can override the default template safely from your theme!
code-and-core-repeater-fields-for-contact-form-7/templates/code-and-core-repeater-fields-mail.php from our plugin’s /templates/ directory into this newly created folder.Custom Template Code Example (code-and-core-repeater-fields-mail.php):
Our PHP template natively exposes $sub_fields (an array of your CF7 field names) and $rows (a 2D array containing every user submission). You can elegantly loop through them like this:
<?php
// Our custom overridden code-and-core-repeater-fields-mail.php template natively loading from our Theme!
foreach ($rows as $index => $row) {
echo '<div style="background: #f1f1f1; padding: 10px; margin-bottom: 5px;">';
echo '<h4>Attendee #' . ($index + 1) . '</h4>';
foreach ($sub_fields as $field_name) {
$value = isset($row[$field_name]) ? $row[$field_name] : 'N/A';
echo '<p><strong>' . esc_html($field_name) . ':</strong> ' . esc_html($value) . '</p>';
}
echo '</div>';
}
?>
The plugin will automatically detect and load your beautiful custom theme layout instead of the default HTML table!