This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Gravity Forms Repeater Add-On


This plugin is no longer maintained and is probably broken, go use Gravity Forms Nested Forms by Gravity Wiz instead!

A Gravity Forms add-on that allows specified groups of fields to be repeated by the user.

Supported Fields

  • Address
  • Checkboxes
  • Date
  • Drop Down
  • Email
  • Hidden
  • HTML
  • MultiSelect
  • Name
  • Number
  • Paragraph Text
  • Phone
  • Radio
  • Section
  • Single Line Text
  • Time
  • Website


  • Repeat groups of fields multiple times
  • Use multiple repeaters on the same form
  • Use shortcodes to display data to the user
  • Use Javascript to manipulate the repeater (See GitHub Page)
  • Customize the add and remove button’s HTML
  • Use Gravity Forms pre-populate hooks and filters like normal
  • Supports Conditional Logic!


  • Not all fields are currently supported.
  • Ajax enabled forms are not yet supported. (Ajax will be automatically disabled on forms with repeaters)


You can place shortcodes inside of input labels, input descriptions, and HTML blocks!

  • [gfRepeater-count] – Will output the current repeat number.
  • [gfRepeater-buttons] – Will output both the ‘+’ and ‘-‘ buttons.
  • [gfRepeater-add] – Will output the ‘+’ button.
  • [gfRepeater-remove] – Will output the ‘-‘ button.

CSS Classes

You can use these CSS classes in the in the “Custom CSS Class” setting to do different things.

  • gf_repeater_hide_add – Will hide the ‘+’ button if placed in the repeater end css setting.
  • gf_repeater_hide_remove – Will hide the ‘-‘ button if placed in the repeater end css setting.

Check out the source on GitHub!


  • Any supported fields placed between the Repeater and Repeater End will be repeated.
  • A minimum and maximum number may be set to limit how many times a Repeater can be repeated.
  • When activated, 2 new field type buttons will be added to Gravity Forms, Repeater and Repeater End.
  • A view of the front-end. The only visible difference will be the added + and - buttons.


  1. Upload the repeater-add-on-for-gravity-forms folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.


Installation Instructions
  1. Upload the repeater-add-on-for-gravity-forms folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
Can I use multiple repeaters in one form?


Can I nest repeaters?

Unfortunately nesting repeaters is not supported at this time.

Can I change the `+` and `-` buttons to text links?

Yes! Just go to the form editor and change the Add HTML and Remove HTML settings to <a>Your Link Text</a> and they should appear as regular links on your form!


Broke my form

This plugin broke my form, though my form was restored once I deleted the plugin. Must be out of date, not recommended.

No longer works correctly

This plugin does not work reliably. I highly discourage other developers from trying to use it. We have had multiple issues, including data not even being saved to the database.

Limited Functionality

Just a heads up: using Number fields with Currency formatting will result in loss of the currency format. A good start, but still quite limited.
Read all 24 reviews

Contributors & Developers

“Gravity Forms Repeater Add-On” is open source software. The following people have contributed to this plugin.




  • Fixed bug where in some cases a PHP error would occur when attempting to automatically disable ajax on a form.
  • Fixed bug where sometimes a javascript error would occur on date fields with a calendar icon.
  • Fixed bug where removing a specific repeatId would cause some weird things to happen.
  • Fixed bug where repeaters in a multipage form that are not on the first page would appear to have failed validation even if the form hasn’t been submitted.
  • Fixed bug where repeaters in a muttipage form that are not on the first page would forget their saved data and ignore their start setting.
  • Fixed hideButtons setting.
  • Added [gfRepeater-buttons], [gfRepeater-add], and [gfRepeater-remove] shortcodes.
  • Added custom CSS option to repeater start and end fields.
  • Added gf_repeater_hide_add and gf_repeater_hide_remove CSS classes.
  • Added gfRepeater_select javascript function.
  • Added ‘gform_repeater_init_done’ trigger to window and individual forms.
  • Changed ‘beforeRepeat’, ‘afterRepeat’, ‘beforeUnRepeat’, and ‘afterUnRepeat’ triggers to ‘gform_repeater_before_repeat’, ‘gform_repeater_after_repeat’, ‘gform_repeater_before_unrepeat’, and ‘gform_repeater_after_unrepeat’.
  • Repeated fields now respect conditional logic from outside the repeater.
  • Applying conditional logic on a repeated section field now also applys that logic on repeated fields under that section.
  • When exporting entries, repeater child data is now exported in a comma-separated list.


  • Fixed bug where sometimes for some reason an input name would be sent as an array and cause a PHP error to display.
  • Fixed bug where sometimes validation message would be displayed multiple times for same field.
  • Fixed bug where filters would not be loaded if Repeater was the first field on the form.
  • Fixed bug where sometimes captured repeater input data would be applied to other forms in cases where there are multiple forms on one page.
  • Fixed prepopulation for checkbox and radio fields.
  • Changed the way settings and field data is sent to Javascript so now monkey patching the input mask script is no longer necessary.
  • Field input masks are now stored in gfRepeaters data. (gfRepeaters[repeaterId][‘children’][childId][‘inputMask’])
  • Added support for conditional logic enabled fields!
  • Added support for Repeater merge tags.
  • Cleaned up formatting for text-only email notifications.
  • Changed Repeater End Setting from ‘doNotUse’ to ‘hideButtons’.
  • Added Repeater Start Setting ‘Hide Label & Description’ to appearance tab.
  • Repeater label now defaults to ‘Repeater’ instead of blank and adminLabel now defaults to blank instead of ‘Repeater’.
  • Repeater Javascript now initiates after ‘gform_post_render’ has been triggered instead of on window load.

  • Fixed saved repeater field data during validation. (Accidently broke it in the patch)

  • Fixed a bug where repeater would break multipage forms. (Sorry about that!)


  • Fixed bug where field order was not saved when a form was submitted.
  • Fixed syntax error for older versions of PHP.
  • Repeated fields now have their tabindex set to the one that was assigned to the repeater start field.
  • Repeater start field tabindex now stored in gfRepeaters data. (gfRepeaters[repeaterId][‘data’][‘tabIndex’])
  • Repeater is now repeated if a paremeter is set for a specific field that is higher than the start repeat count.
  • Highest set paremeter number is now stored in gfRepeaters data. (gfRepeaters[repeaterId][‘data’][‘paremCount’])
  • Repeater dependencies, actions, and filters are now only loaded on forms that have a repeater field.
  • Field type is now set for hidden and section fields in gfRepeaters data.
  • Ajax is now automatically disabled on forms that have a repeater field. (Until I come up with a fix for ajax enabled forms)
  • Added support for Andy Fragen’s GitHub Updater. (See readme for more info)
  • CSS is now minified.
  • gfRepeaters data now contains the form ID number as a root and the repeater Id as a subroot. (See readme for more info)


  • Fixed repeater ‘start’ setting. (Apparently it’s been broken for awhile?)
  • Fixed datepicker ui for repeated date fields.
  • Fixed bug where repeater plugin wouldn’t allow page settings to display in the form editor.
  • Fixed entry detail formatting for emails and non-html views.
  • Repeated field labels are no longer saved in the database with the entries and are now looked up by field ID.
  • Added support for Hidden field type.
  • Added the ability to change the repeater ‘start’ setting by using the built in Gravity Froms pre-populate filters and hooks.
  • Added the ability to pre-populate repeated fields using the built in Gravity Forms filters and hooks. (See readme for more info)
  • Field ID number is now stored in gfRepeaters data. (gfRepeaters[repeaterId][‘children’][childId][‘idNum’])
  • Field input pre-populate value is now stored in GfRepeaters data. (gfRepeaters[repeaterId][‘children’][childId][‘inputs’][inputId][‘prePopulate’]) (See readme for more info)
  • Plugin now requires Gravity Forms 1.9 or later.


  • Fixed bug where sometimes not all repeated, required fields would be validated.
  • Fixed bug where repeated fields that are set to ‘adminOnly’ would have that setting switched off upon form validation.
  • Added support for MultiSelect, Radio, and Time fields.
  • Added upgrade function to clean up entries from older versions.
  • Repeater field admin label now defaults to ‘Repeater’ instead of blank.
  • All repeated values are now stored as arrays besides special cases such as Section fields.
  • Field types are now stored in gfRepeaters data. (gfRepeaters[repeaterId][‘children’][childId][‘type’])
  • Name and Address fields now only require the normally required fields.
  • Added plugin page link to row meta.
  • A few misc things and code clean up.


  • Fixed bug with number field where a PHP error would show up if a form failed validation.
  • Fixed bug where a javascript error would occur if no repeater children were marked as required.
  • Fixed bug where a PHP error would sometimes occur on the entries page in the admin panel if a repeated field was submitted blank.
  • Added support for Section field type.
  • Default validation functions are now bypassed for repeater children.
  • gfRepeater-count shortcode now shows up for field titles on the entires page in the admin panel.
  • Blank repeated fields now show up if “Show Empty Fields” is enabled.
  • Repeater children and repeater end fields no longer display duplicated results on the entries page in the admin panel.
  • Added a little bit of backwards compatibility for fetching saved repeater child entry data.


  • Fixed bug where repeated fields would look like they failed validation if any repeated fields before them failed.
  • Fixed bug with validation on fields with multiple inputs.
  • Fixed bugs with form editor and setting repeater children required option.
  • Added beforeRepeat, afterRepeat, beforeUnRepeat, and AfterUnRepeat form triggers.
  • Added a stylesheet with some default styles for repeater releated stuff.
  • Added keypress event and tab index to add and remove buttons.
  • Added a little bit of error handing to the javascript just in case the admin forgets to add a repeater-end or trys to nest repeaters.
  • Repeater start field label now defaults to blank instead of “Untitled”.


  • Fixed bug where if any fields in a form with a repeater in it would be unsubmittable.
  • Fixed repeater field validation.
  • Added custom validation message feature.
  • Added repeater “start” number feature.
  • Added repeater label and description options.
  • Added custom Add and Remove button HTML feature.
  • Added “Do not use add and remove buttons” feature.
  • Added new “[gfRepeater-count]” shortcode.


  • Added support for Address, Checkboxes, Name, and Number fields.
  • Added View details and GitHub links to row meta.
  • Fixed input masks!


  • Initial Release