Get 50% off all new Gravity Forms licenses today!

Buy Now
News & Updates -

Gravity Forms v2.0 Released

Carl Hancock By Carl Hancock Published June 14, 2016

Gravity Forms v2.0 is now available to new customers and via manually updating. It can be downloaded on the downloads page. We will be releasing Gravity Forms v2.0 via automatic update to existing users next week.

This is a major feature release that introduces new features and enhancements, extensive changes under the hood to the core plugin, the API and the Add-On Framework and enhanced security hardening.

Like the WordPress core team, we use iterative development to improve our product. Feature releases introduce new user facing features and functionality, while maintenance releases focus on developer focused enhancements, bug fixes and security. This major feature release also sets the stage for both Add-Ons currently in development and future feature releases to Gravity Forms itself.

We have a lot planned for the future and are looking forward to continuing to watch Gravity Forms and our incredible ecosystem continue to grow! Keep reading for a rundown of what is new in Gravity Forms v2.0.

Conditional Logic Enhancements

Conditional Logic has been updated and enhanced to support fields it did not previously support. You can now utilize conditional logic on multi-input fields such as the Name Field and the Address Field.

The underlying conditional logic functionality has also been enhanced to make adding support for additional fields and upcoming Add-Ons which will utilize conditional logic easier to implement.

Responsive Admin UI Enhancements

Gravity Forms makes extensive use of core WordPress functionality to display data such as forms and entries. As WordPress has evolved it has introduced new underlying features that we can take advantage of.

We have updated admin interfaces such as the Form List and Entry List to utilize the new responsive table functionality introduced in WordPress. This makes it easier to browse the Gravity Forms admin within the WordPress Dashboard on mobile devices.

Sorting for columns has also been added to tables that did not previously support them, such as on the Forms page that lists all of your Gravity Forms. The WordPress UI Screen Options feature has been implemented in areas such as the Entries page to give you more control over the number of entries that are shown, and the Entry Detail page to configure what metaboxes are displayed.

Just like WordPress does with the UI in the Post Editor, the Entry Detail page when viewing an entry has been updated to support re-arranging metaboxes via drag-n-drop to suit your needs.

The Gravity Forms navigation toolbar has also been updated to adopt the look and feel of the horizontal navigation found within the Themes and Plugin area of the WordPress Dashboard.

Our team will continue to enhance and refine the Gravity Forms admin interface to bring it further in line with how WordPress itself does things to provide users (and their clients) with a consistent user experience within the WordPress Dashboard.

Responsive Form Enhancements

The Gravity Forms markup and styles have been updated to better support mobile devices. We will continue to do so on an iterative basis to limit the disruption this may bring to existing custom styling existing users may have applied via CSS. But some changes will be unavoidable in order to provide a mobile first responsive design philosophy. So be sure to test out the new version with your theme.

reCAPTCHA v2.0

The reCAPTCHA field has been updated to utilize reCAPTCHA v2.0. In order to implement the new reCAPTCHA you will need to update the API keys in the main Settings of Gravity Forms.

Existing sites may continue to use reCAPTCHA v1.0 or switch to v2.0 via Settings, however new Gravity Forms sites will only be able to use reCAPTCHA v2.0 going forward.

Rich Text Editor Field Support

The Paragraph Field and the Post Body Field have been updated to support integrating the rich text editor built into WordPress. You can enable this option via the field settings.

We have limited the available options that are displayed as part of the rich text editor to just the basic controls that would typically be needed. This behavior and the available controls can be customized via hooks.

WordPress Toolbar Menu

The Form Switcher UI when working with a form has been deprecated and removed. In it’s place we have introduced a new toolbar that appears in the WordPress admin toolbar. This toolbar menu allows you to access the most recent forms you have worked with and takes the place of the Form Switcher.

The Forms menu in the WordPress toolbar can be turned on or off via the main Gravity Forms Settings. It is turned off by default for sites that are updating. If you would like to enable it you may do so via the Settings page.

Accessibility Enhancements

Accessibility is important. It is also hard. We have made enhancements to Gravity Forms to improve upon it’s existing accessibility and will continue to do so on an ongoing basis.

We have also improved the RTL localization support in Gravity Forms for those languages that utilize an RTL format.

Security Hardening

Our team has been hard at work making sure Gravity Forms is as secure as possible. We have made numerous enhancements to the core to further mitigate the potential for vulnerabilities. These are proactive measures to further enhance the security of Gravity Forms as a whole going forward.

As part of our security hardening the Gravity Forms codebase has undergone multiple 3rd party code reviews and security audits. We take security very seriously and want to make our product as secure as possible.

Note To Developers

Please be sure to view the changelog below. We have deprecated some developer focused features, and removed backwards compatibility for features in versions of WordPress prior to v3.3.

Buckle up! The complete changelog for Gravity Forms v2.0 is below…

Gravity Forms v2.0 Changelog

  • Security enhancement: Fixed security issues in the admin pages.
  • Security enhancement: The location of uploaded files is now hidden by default.
  • Security enhancement: Added the gform_sanitize_confirmation_message filter. Return true to sanitize the entire confirmation just before rendering. This is an additional layer of security to ensure that values from merge tags used inside HTML are encoded properly and all scripts are removed. Useful for super-admins in multisite installations where site admins are not trusted.
  • Accessibility enhancement: Added alternative content for AJAX form iframe.
  • Accessibility enhancement: Added ARIA invalid and required attributes to donation, email, hidden, name, number, password, phone, post custom field, post excerpt, post tags, post title, price, select, text, textarea and website fields.
  • Accessibility enhancement: Fixed an accessibility issue with list field when styling was called with an inline element.
  • Accessibility enhancement: Fixed an accessibility issue with onkeypress attributes not accompanying onclick attributes.
  • Styling enhancement: Improved RTL support.
  • Styling enhancement: Improved responsive/adaptive support.
  • Styling enhancement: Improved vertical alignment.
  • Added “Duplicate” and “Trash” to form menu to maintain consistency with form list actions.
  • Added ‘forms per page’ screen option to the form list.
  • Added GFEntryDetail::set_current_entry() for updating the cached entry on the entry detail page.
  • Added the Forms Toolbar bar menu.
  • Added the Toolbar menu setting.
  • Added the gform_entry_detail_meta_boxes filter allowing custom meta boxes to be added to the entry detail page.
  • Added filter gform_progress_steps to allow modifying/replacing the progress steps markup.
  • Added support for Loco Translate which stores translations in WP_LANG_DIR/plugins/.
  • Added filter gform_progress_bar to allow modifying/replacing progress bar markup.
  • Added the gform_phone_formats filter and form specific version allowing custom phone formats to be defined.
  • Added JS filter gform_spinner_target_elem to allow changing the element after which the AJAX spinner is inserted.
  • Added a dismissible message to the confirmation page which is displayed if merge tags are used as values for attributes.
  • Added an Event column to the Notifications list if the form has multiple notification events registered.
  • Added support for preventing Admin Only fields from being selected in Form Editor conditional logic; changing field already used in conditional logic to Admin Only will result in a confirmation prompt (like deleting a field used in conditional logic).
  • Added support for excluding current field from conditional logic; prevents field from applying conditional logic against itself.
  • Added ‘gform_list_field_parameter_delimiter’ filter.
  • Added the gform_disable_print_form_scripts filter.
  • Added support for the entries per page screen option in the entry list.
  • Added support for conditional logic on multi-input fields (specifically Name and Address field).
  • Added support for future conditional logic changes where order of various GF JS events can be specified.
  • Added sorting on the form list for the entry count, view count and conversion columns.
  • Added support for reCAPTCHA 2.0.
  • Added support for Rich Text Editor on Paragraph and Post Body fields.
  • Added the gravityforms_cron daily task. Performs self-healing, adds empty index files, deletes unclaimed export files, old logs and orphaned entries.
  • Added new filter: gform_addon_feed_settings_fields.
  • Updated English translations (AU, GB, NZ, ZA). Credit: Ross McKay.
  • Updated the permissions required to import forms. Both gravityforms_create_forms and gravityforms_edit_forms capabilities are now required in order to import forms.
  • Updated the entry list to hide the filters and and the search UI when the form has no entries.
  • Updated Chinese (China) translation. Credit: Edi Michael.
  • Updated the default number of user accounts in the impersonation setting for the Web API to 3000.
  • Updated the Address field state dropdown to support optgroups.
  • Updated layout/styling for note meta (looked wonky for system notes where no email address is specified).
  • Updated payment details section to use the Entry Detail meta box system.
  • Updated the daily clean-up to delete log files older than one month.
  • Updated the way the Paragraph field saves values – fields that expect HTML will save safe values. Paragraph fields that don’t expect HTML will accept values exactly as they are submitted.
  • Updated the payment results to display results for days with zero results when date range is not set.
  • Updated form editor to display placeholder content when all fields have been removed.
  • Updated multi-page form validation. If any invalid fields are found when submitting the final page of a form, the form will jump to the first page with an invalid field.
  • Updated the entry detail page to display the Entry Info, Notifications and Notes boxes as WordPress meta boxes. Added support for screen options.
  • Updated the value column in the lead_detail table to longtext to fix an issue with entry search. The longtext table is now no longer used.
  • Updated the toolbar styles.
  • Updated the entry search filter styles to display the filter below the entry list on smaller screens.
  • Updated the way email fields are validated. GFCommon::is_valid_email() now uses the WordPress function is_email() instead of the PHP FILTER_VALIDATE_EMAIL Filter. Use the is_email WordPress filter to adjust behavior.
  • Updated the settings page to use the GF_MIN_WP_VERSION constant as the minimum WordPress version.
  • Updated the way product fields are saved to improve performance when saving the product info meta.
  • Fixed an issue with the styles of the form settings, entry list and plugin settings pages for narrow screens.
  • Fixed an issue with the entry list where searches by Entry Date may return incorrect results for sites in time zones different to UTC.
  • Fixed some untranslated strings.
  • Fixed typos in some translated strings.
  • Fixed notice when using reCAPTCHA field.
  • Fixed issue where address-based state/country conditional logic did not correctly display select of available choices.
  • Fixed an issue saving and displaying entry values for checkbox fields with a choice value of 0.
  • Fixed an issue where conditional logic value selects for Addresses would generate errors when selected.
  • Fixed an issue with the conditional logic dependency check when configuring a new choice if there is a conditional logic rule based on the field placeholder.
  • Fixed caching of the form array for the entry detail page.
  • Fixed an issue with the entry list when no fields on the form support the entry list page. E.g. List fields.
  • Fixed an issue with the width of the Product field quantity input when using the 3 column classes.
  • Fixed an issue loading translations when using a custom directory name for the plugin.
  • Fixed an issue with the sanitization of the phone format setting on some hosting environments.
  • Fixed flash of unstyled content issue in form preview (due to stylesheet being loaded after content).
  • Fixed an issue where fields close in the form editor upon keypress within a text or textarea input field.
  • Fixed a typo in the Hungarian choice of the Captcha field language setting.
  • Fixed an issue with the entry detail actions which can prevent third-party content from displaying properly.
  • Fixed an issue with the font size for the Total field value.
  • Fixed an issue with the styles for the List field add/delete row buttons on the entry detail edit page.
  • Fixed an issue with the styles on some admin pages that get stuck in the browser cache after upgrade.
  • Fixed issue where Single Product quantity input displayed on initial load in admin even when quantity was disabled.
  • Fixed issue where default Date field has a single input but no Datepicker.
  • Fixed a JavaScript error in the form editor when configuring the max chars setting.
  • Fixed an issue with the base URL in the Web API developer tools UI.
  • Fixed the inconsistent widths in the page content below the toolbar.
  • Fixed an issue with the styles on the entry detail page for narrow screens.
  • Fixed an issue with the form settings pages where the non-minified version of the admin.css file is loaded instead of the minified file.
  • Fixed missing label attribute in date field.
  • Fixed “_wrapper” not being appended to all custom form CSS classes when more than one CSS class was provided.
  • Fixed an issue with the export page where large numbers of entries may cause the export process to hang.
  • Deprecated GFFormsModel::get_field_value_long(). The longtext table is no longer used.
  • Deprecated GFEntryDetail::payment_details_box().
  • Removed ‘gform_enable_entry_info_payment_details’ hook.
  • Removed the form switcher. Use the new WordPress Toolbar menu which can be enabled in Gravity Forms Settings instead.
  • Removed the unused ‘credit_card_icon_style_setting’ field setting which was a duplicate of ‘credit_card_setting’.
  • Removed recaptcha script enqueues from GFFormDisplay::enqueue_form_scripts() and GFFormDisplay::print_form_scripts() (script is enqueued when the field content is generated).
  • Removed backwards compatibility for Thickbox for versions of WordPress prior to 3.3.
  • Removed backwards compatibility in GFCommon::replace_variables_prepopulate() for versions of WordPress prior to 3.3.
  • Removed caching from GFFormsModel::get_lead_field_value().
  • Removed styling for “Add Form” button for versions of WordPress prior to 3.5.
  • Removed textarea fallback for the visual editor for versions of WordPress prior to 3.3.

Gravity Forms v2.0 Add-On Framework Changelog

  • Security enhancement – Added value checks to the validation of radio, checkbox, select, select_custom, text, textarea, field_select, checkbox_and_select and feed condition settings. Added “fix it” buttons.
  • Added option to enqueue scripts and styles on form list page.
  • Fixed an issue with the styles on the form and feed settings pages.
  • Added GFPaymentAddOn::complete_authorization() to update entry with authorization details.
  • Updated GFPaymentAddOn::process_capture() to use GFPaymentAddOn::complete_authorization() if payment was authorized and a capture transaction did not occur.
  • Added subscription id to the transaction table.
  • Fixed an issue with the check for updates when the check doesn’t run in an admin context. e.g. WP-CLI.
  • Updated the delayed payment choices on the PayPal feed to appear under the ‘Post Payment Actions’ setting instead of ‘Options’.
  • Added GF_Addon::get_slug().
  • Added the gform_post_process_feed action hook.
  • Removed GFPaymentAddon::disable_entry_info_payment() method.
  • Added gform_gf_field_create filter to allow modifying or replacing the GF_Field object after it has been created.
  • Fixed an issue when upgrading due to feed order column name.
  • Fixed issue processing PayPal feeds.
  • Added GFAddon::pre_process_feeds() method to handle applying new ‘gform_addon_pre_process_feeds’ filter.
  • Fixed an issue with GFFeedAddOn::is_feed_condition_met().
  • Added $_supports_feed_ordering property to GFFeedAddOn. When enabled, users can sort feeds on the feed list page to determine what order they are processed in.
  • Added Customizer to supported admin_page types for enqueueing scripts.
  • Updated Add-On feed table schema to support feed ordering.
  • Updated GFFeedAddOn::maybe_process_feed() to update entry object if the returned value from the GFFeedAddOn::process_feed() call is an array that contains an entry ID.
  • Updated all protected methods in GFAddOn, GFFeedAddOn and GFPaymentAddOn to be public methods.
  • Fixed issue where no other script enqueue rules would run if first rule was a callback.
  • Fixed an issue with the payment results page summary, chart and table where transactions are ignored if they don’t complete before midnight on the same day the entry is submitted.
  • Fixed an issue where add-on framework tables don’t get deleted when a site is deleted in multisite installations.
  • Added aliases support to field select settings field to recommend the default field choice based on field label.

Gravity Forms v2.0 API Changelog

  • Updated the Web API tools to load the JS files locally.
  • Fixed an issue with GFFormsModel::save_lead() where fields hidden by conditional logic get saved when updating an existing entry outside the entry detail context e.g. during submission if the entry had previously been created using the Partial Entries Add-On.
  • Updated the way the date_created field filter and the start_date & end_date criteria are handled in entry searches. The dates are converted to UTC based on the site’s time zone offset set in the gmt_offset option during the construction of the query.
  • Added support for sticky dismissible admin messages displayed on all Gravity Forms admin pages.
  • Updated GF_Field::sanitize_entry_value() to sanitize the value only if HTML is enabled for the field or activated using the gform_allowable_tags filter. Fields should override this method to implement field-specific sanitization.
  • Updated the way GF_Field handles input and output values. Input values are now not sanitized on input unless the HTML tags are allowed, in which case values are passed through wp_kses_post() and then through gform_allowable_tags filter and then through strip_tags() if required. Updated the way the Address, Checkbox, Multiselect, Name, Radio, Select, Text and Textarea fields handle input and output to account for the change.
  • Added <= to the list of supported operators in the entry search.

Don’t own a Gravity Forms Yet? What are you waiting for? Purchase a copy today!