This plugin hasn’t been tested with the latest three 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
  • E-mail
  • 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 “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.


Change log


  • 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