Gravity Forms Premium WordPress Form Plugin

$3.99

Description

Official Theme/Plugin Demo

Gravity Forms is one of the most powerful form plugins on the WordPress platform, designed for users who need highly customized forms. It allows you to create various complex forms, including contact forms, surveys, order systems, user registration forms, and more. The plugin offers a rich variety of form field types, such as radio buttons, checkboxes, dropdown menus, file uploads, etc., to meet different needs.

Gravity Forms also supports conditional logic features, allowing you to dynamically show or hide form fields based on user selections, greatly enhancing user experience. The plugin has a powerful form validation mechanism built-in to ensure the accuracy of submitted data. In addition, it supports various actions after form submission, such as sending email notifications, redirecting to specific pages, and integration with third-party services.

For developers, Gravity Forms provides a rich API and hooks for easy secondary development and feature expansion. The plugin also supports multiple languages, allowing for easy creation of international forms. Continuous updates ensure the plugin’s security and stability, fixing known issues and continuously optimizing performance.

Whether for corporate websites, e-commerce platforms, or personal blogs, Gravity Forms can meet your form needs. Its intuitive interface and powerful features make it the preferred form plugin for WordPress users.

🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹 Version Update Record 🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹🔹

The update log for the Gravity Forms plugin is as follows:
v2.9.6 | April 8, 2025
- Improved performance by displaying only the most recent 10 forms.
- Updated the [`gform_form_switcher_forms`] filter to allow developers to filter the forms displayed in the form switcher search results.
- Updated the dropdown menu in the admin for consistency.
- Fixed an issue where fields in tabs did not call `save_callback`.
- Fixed an issue where the submit button was replaced with the next step button when the last page of a multi-page form was hidden by conditional logic and validation failed.
- Fixed an issue where field map settings did not take effect when conflict mode was enabled.
- Fixed an issue where submitting the form or showing the next page when clicking the previous button that does not contain the `gform_previous_button` class. Note: When using filters like `gform_submit_button`, `gform_next_button`, or `gform_previous_button` to replace input elements with button elements, make sure to retain the attributes of the original elements.
- Fixed a JavaScript error that occurred when trying to calculate and the calculation field had no input.
- API: Added inline documentation for the base layer of the theme framework.
- API: Added a temporary blocking mechanism when the version.php API call returns a server error (5xx) to prevent excessive failed requests.
- API: Updated the general map settings field to support using a text area when mapping to custom values.

### 2.9.5.2
- Fixed an issue where field mapping settings did not work properly when conflict mode was not enabled.
- API: Added documentation for the base layer of the theme framework.
- API: Added a temporary blocking mechanism when the version.php API call returns a server error (5xx) to prevent excessive failed requests.

### 2.9.5.1
- Fixed an issue where submitting a form or displaying the next page would cause problems if the previous button did not contain the gform_previous_button class. Note: When replacing input elements using filters like gform_submit_button, gform_next_button, or gform_previous_button, ensure to retain the original element's attributes. [Example code](https://docs.gravityforms.com/gform_submit_button/#h-1-change-input-to-button).
- Updated instances of some dropdown components to use more modern HTML dropdown components.
- Fixed a JavaScript error that occurred when trying to calculate if the calculation field had no input.
- API: Updated the generic mapping settings field to support using a textarea when mapping to custom values.

### 2.9.5 | 2025-03-20
- Fixed a JavaScript error that occurred when using multiple forms with conditional logic on the same page.
- Fixed a PHP error that occurred when trying to copy a form's copy. Thanks to the GravityKit team.
- Fixed a JavaScript error that occurred when retrieving pricing field metadata after rendering when no selected option was found.
- Fixed an issue where the total amount was not updated when the form was embedded via shortcode and the selection of the selected option field was modified by query parameters.
- Fixed various issues with the new Ajax submission feature, ensuring hooks and filters work properly and validation messages display correctly.
- Fixed a PHP notice that occurred when an embedded form was deleted while displaying a post or page.
- Updated the form import confirmation message to display the number of forms that failed and succeeded, and include a link to the list of imported forms.
- Removed hidden fields that provided instructions in the form template.
- AF: Fixed a PHP notice that occurred when creating or editing coupons.
- API: Added a new user selection field to the settings API.
- API: Updated the submission process to support changing the submission method via the [gform/submission/pre_submission](https://docs.gravityforms.com/gform-submission-pre_submission/) filter.
- API: Removed support for the custom submission method SUBMISSION_METHOD_CUSTOM.

v2.9.4.2
- Fixed various issues in the new Ajax submission feature to ensure hooks and filters function correctly and validation messages display appropriately.
- Removed hidden fields that provided instructions in the form template.
- API: Updated general map settings fields to support using text areas when mapping to custom values.
- API: Added a new user selection field in the settings API.

v2.9.4.1
- Fixed the issue of JavaScript errors being thrown when using multiple forms with conditional logic on the same page.
- Fixed a bug that caused PHP errors when attempting to copy an already copied form. Thanks to the GravityKit team.
- Fixed a JavaScript error that occurred when retrieving price field metadata after form rendering if the selected option was not found.
- Fixed the issue where the total amount was not updated when embedding forms with shortcodes, especially when modifying selected option field options through form filters based on query parameters.

v2.9.4 | 2025-02-25
- Added the [`gform_feed_settings_before_fields`](http://docs.gravityforms.com/gform_feed_settings_before_fields/) filter, allowing developers to change the content displayed before the Feed settings page.
- Fixed an issue where field-specific validation no longer runs when the "No Duplicates" setting is enabled.
- Fixed an issue with the form editor not working properly when the form does not have a configured submit button.
- Fixed a styling issue in the general field mapping settings where merge tag links overlap input boxes.
- Fixed an issue where the Gravity Forms block does not render or work correctly in the site editor (embedded block editor).
- Updated the form switcher to remain on the same settings page when switching forms.
- Updated the minimum WordPress version to 6.5.
- Updated the minimum PHP version to 7.4.
- Updated the supported minimum WordPress version on the system status page to 6.6.
- API: Added GFAPI::update_entry_feed_status(), GFAPI::get_entry_feed_status(), and GFAPI::get_entry_feed_status_key().
- AF: Added GFFeedAddOn::save_entry_feed_status(), GFFeedAddOn::post_process_feed(), and GFFeedAddOn::fulfill_entry().
- AF: Updated GFFeedAddOn::maybe_process_feed() to support saving Feed processing results for compatible plugins. This depends on the value returned by the plugin's process_feed() method:
- `void` or `null` when not saving Feed status.
- `false` or `WP_Error` when saving the failed status. The `code`, `message`, and `data` properties of `WP_Error` will also be saved.
- `true` or `$entry` when saving the successful status.

v2.9.3.1
- Fixed an issue where field-specific validation no longer runs when the "No Duplicates" setting is enabled.

v2.9.3 | 2025-02-11
- Added the [`gform_file_upload_tmp_dir`](http://docs.gravityforms.com/gform_file_upload_tmp_dir/) filter, allowing developers to change the temporary directory used for file uploads.
- Fixed an issue with conditional logic when formatting numbers as dates or times.
- Fixed an issue that sometimes caused entry list display problems on mobile device screens.
- Fixed an issue where certain icons were missing in the compact view of the form editor.
- Fixed an issue where Ajax submission might abort when field value blocking settings contain multiple parameters or use tabindex of -1.
- Fixed an issue where Ajax submission might abort when third-party embed methods pass a string instead of a boolean value to the $display_title or $display_description parameters of the gravity_form function.
- Fixed an issue where calculations based on image selection fields only ran when clicking the input box instead of clicking the image.
- Fixed a JavaScript error that occurred on the form list page if the user did not have `gravityforms_create_form` permission.
- Fixed an issue where file upload fields could bypass validation checks when using maximum file limits.
- Fixed an issue where the product field used the price for `:value` in calculations when submitting the form.
- Fixed an issue that could lead to fatal errors when changing the 'gform_sticky_admin_messages' database value.
- Fixed an issue where product fields would not update the total price when tags were updated via custom code.
- Removed the "Send you a birthday cake" custom validation message from the template library form.
- Updated the image processing method for image selection fields to only generate thumbnail sizes for images used in that field.
- Updated the form preview to use the Orbital theme.
- API: Updated React components to support the new internal component icon suite.

### 2.9.2.3
- Updated the processing of images in the image selection field to only generate thumbnail sizes for images used in the field.
- Fixed an issue where calculations based on image selection fields only ran when clicking the input box instead of the image.
- Fixed a JavaScript error thrown when users were unable to create forms.

### 2.9.2.2
- Fixed an issue where Ajax submission could be aborted when the field value block settings contained multiple parameters or used tabindex of -1.
- Fixed an issue where Ajax submission could be aborted when third-party embedding methods passed a string instead of a boolean value to the $display_title or $display_description parameters of the gravity_form function.

### 2.9.2.1
- Fixed an issue with conditional logic when formatting numbers as dates or times.
- Fixed an occasional display issue with the entry list on mobile screens.
- Fixed an issue where the compact view form editor field UI was missing icons.
- Updated React components to support the newly created internal component icon pack.

v2.9.2 | January 16, 2025
- Added screen reader hints in the form editor to improve accessibility when new fields are added to the form.
- Increased security enhancements. Thanks to: mikemyers via Wordfence.
- Added "Sort Column" and "Sort Order" settings in the "Screen Options" settings on the form list page.
- Added [`gform_check_empty_index_file_exists`](https://docs.gravityforms.com/gform_check_empty_index_file_exists) filter that allows developers to check for the existence of empty index files before creating new index files.
- Added [`gform_value_pre_duplicate_check`](https://docs.gravityforms.com/gform_value_pre_duplicate_check) filter that allows for filtering before checking if field values are duplicates.
- Fixed an issue where `GFFormDisplay::is_last_page()` returned incorrect results when there were validation errors on the last page.
- Fixed an issue that could cause fatal errors if assets were not properly enqueued.
- Fixed an issue with survey single line text fields having invalid `aria-describedby` attributes.
- Fixed an issue where JS events were not triggered when clicking images in image selection fields.
- Fixed an issue where the description location setting was not displayed in the form editor before saving the form.
- Fixed an issue where the [`gform_progressbar_start_at_zero`](https://docs.gravityforms.com/gform_progressbar_start_at_zero) filter did not work.
- Fixed an issue where the page dropdown menu on the confirmation settings page could not find pages when permalinks were set to "Plain".
- Fixed an issue where custom progress bars implemented with the [`gform_progress_bar`](https://docs.gravityforms.com/gform_progress_bar) filter might throw errors in Gravity Forms 2.9.
- Fixed a fatal error that could occur when the `GFCommon::replace_variables_prepopulate()` function was called with non-string values.
- Fixed an issue where product quantity labels did not match input fields.
- Fixed an issue where form validation errors occurred when the product field count was 0 and the form contained shipping and total fields.
- Fixed an issue where custom messages were not using the [`gform_field_validation`](https://docs.gravityforms.com/gform_field_validation) filter for duplicate subfields.
- Fixed an issue where the total was not calculated in certain cases (including when using the product dropdown menu with 'Enhanced User Interface' enabled).
- Fixed an issue where Hooks.js was not added to the header in certain hosting environments.
- Fixed an issue where notification styles were not applied.
- Fixed an issue where empty error messages were displayed if the theme or other plugins output empty lines when responding to resend notification AJAX requests.
- Fixed an issue where the form block theme setting was visible when the default form theme was not Orbital.
- Fixed an issue where inserting field merge tags with double quote labels did not work properly.
- Fixed an issue where invalid data on multi-file upload fields could cause entry export to fail on PHP 8+. Thanks: GravityKit team.
- Fixed an issue where the [`gform_allowable_tags`](https://docs.gravityforms.com/gform_allowable_tags) filter was not applied when not using the optional `$form_id` attribute.
- Fixed an issue where the license status message was not displayed correctly on the system settings update page.
- Fixed an issue where remarks added by custom anti-spam filters were overwritten when Akismet integration was enabled.
- Fixed an issue where the total field was not calculated correctly in forms with conditional logic animations enabled.
- Fixed an issue where the value of the custom generic_map settings field was not populated on the form settings page.
- Fixed an issue where unnecessary form count queries were executed outside of Gravity Forms pages.
- Updated number fields to display the `aria-describedby` attribute when the range is defined and validation fails.
- Updated the preview of reCAPTCHA fields in the form editor.
- Removed the deprecated `GFForms::filter_query()` method from 2.8.13.
- API: Added `GFAPI::maybe_process_feeds()`, `GFAPI::get_processed_feeds_meta()`, and `GFAPI::update_processed_feeds_meta()`.- API: Added the [`gform_allow_async_feed_reprocessing`](https://docs.gravityforms.com/gform_allow_async_feed_reprocessing) filter.
- API: Fixed the issue where the entry endpoint "_labels" did not respect the admin label context of survey fields.
- API: Updated the state management JS module to return a shallow copy of the object retrieved via the get method.
- API: Added an action hook to add field settings to the select options section of the form editor sidebar.

#### Version 2.9.1.3

- **Bug Fixes:**
- Resolved a bug that prevented JS events from triggering when clicking on images in the Image Choice field.
- Fixed an issue that could cause errors in the custom progress bar implemented with the `gform_progress_bar` filter in Gravity Forms 2.9.
- Corrected the issue where the value of the custom generic_map settings field was not populated on the form settings page.
- Removed the deprecated GFForms::filter_query() method (since version 2.8.13).
- Fixed the issue where GFFormDisplay::is_last_page() returned incorrect results when there were validation errors on the last page.
- Resolved the issue where the page dropdown menu on the confirmation settings page could not find pages when the permalink was set to 'simple'.
- Fixed a problem that caused a fatal error if resource files were queued to load incorrectly.
- Resolved the issue where repeated subfields did not use the `gform_field_validation` filter for custom messages.
- Corrected the issue where an empty error message was displayed when the theme or another plugin output an empty line for the resend notification AJAX request.
- **API:** Corrected the issue where the entries endpoint "_labels" did not respect the admin label context of survey fields.
- Fixed a fatal error that could occur when passing non-string values to the GFCommon::replace_variables_prepopulate() function.
- Resolved the issue of unnecessary form count queries being executed outside of Gravity Forms pages.
- Corrected the issue where, in some cases, including the product dropdown menu with 'Enable enhanced user interface' enabled, the total could not be calculated.

#### Version 2.9.1.2

- **Bug Fixes:**
- Resolved an issue where invalid data from multi-file upload fields caused entry export to be interrupted in PHP 8+ environments. *Thanks: GravityKit Team*
- **API:** Added GFAPI::maybe_process_feeds(), GFAPI::get_processed_feeds_meta(), and GFAPI::update_processed_feeds_meta() functions.
- **API:** Added `gform_allow_async_feed_reprocessing` filter.
- Fixed an issue where notification styles could not be applied due to spelling errors.
- Resolved an issue where comments added by custom anti-spam filters were overridden when Akismet integration was enabled.
- Fixed a validation error in forms when the product field count is 0 and the form includes shipping and total fields.

#### Version 2.9.1.1

- **Bug Fixes:**
- Fixed an issue where Hooks.js was not added to the header in certain hosting environments.
- Corrected an accessibility issue affecting the matching of product quantity labels with input fields.
- Added “Sort Column” and “Sort Order” options in the Screen Options settings on the form list page.
- Resolved an issue where the `gform_allowable_tags` filter was not applied when used without the optional `$form_id` attribute. *Thanks: Gravity PDF Team*
- Fixed an issue where form block theme settings were still visible when the default form theme was not Orbital.
- Fixed a bug preventing the `gform_progressbar_start_at_zero` filter from working.
- Updated reCAPTCHA fields to use SVG images.
- **API:** Updated state management JS module to return a shallow copy of objects retrieved via the get method.
- Added `gform_check_empty_index_file_exists` filter to allow developers to check if an empty index file already exists before creating a new empty index file.

### Version 2.9.1 | December 12, 2024

- **Added SQLite database detection** to the system report.
- **Added focus state for links in validation summary** and added auto-focus functionality to the validation summary to improve accessibility.
- **Increased screen reader support in the password strength indicator of the password field**.
- **Updated read-only numeric fields** to use read-only styles.
- **Improved the styling of failed payment and subscription cancellation entry comments**.
- **Updated the currency dropdown menu on the plugin settings page**, no longer using Select2 for better accessibility.
- **Updated the license verification message** to provide more specific prompts when server errors or API rate limit errors occur.
- **Updated the minimum supported WordPress version** on the “System Status” page to 6.5.
- **Fixed a PHP notice issue that could occur when viewing the settings of existing forms**. Thanks to the GravityKit team.
- **Fixed a fatal error that could occur when adding additional files to multi-file upload fields**.
- **Fixed accessibility issues with date dropdown fields** by adding hidden labels to the dropdown list.
- **Fixed the misalignment of the Notes meta box on the Entry Details screen in Safari 18.0**.
- **Fixed an issue where the total price field sometimes wouldn’t update when certain products had conditional logic rules**.
- **Fixed an issue where forms or confirmation messages were not styled when AJAX was enabled**.
- **Fixed an issue where delayed feeds could be executed twice in certain cases**.
- **Fixed an issue that prevented `gform_ajax_spinner_url` from working**.
- **Fixed an issue that prevented the `gform_price_change` event from being triggered**.
- **Fixed an issue where Gravity Forms checked for mode upgrades on every page load**.
- **Fixed an issue where the default selection had an empty label when the field had no value**.
- **Fixed an issue where clicking the “Next” button on multi-page forms containing payment fields caused console errors**.
- **Fixed a fatal error that occurred if the modified status input value was an array upon submission**.
- **Fixed a fatal error that occurred when the page query parameter was an array**. Thanks to Automattic.
- **Fixed a fatal memory error that could occur in certain hosting environments when there were a large number of forms on the form settings page**.
- **Fixed an issue where apostrophes in page names in pagination options were incorrectly cleaned**.
- **Fixed an issue where the aria attributes of list fields were not translated**.
- **Fixed an issue where disabled image option inputs could still be selected/unselected**.
- **Fixed the issue where the email field in notification settings did not validate when using merge tags**.
- **Fixed the issue where certain options could not be removed during the uninstallation process**.
- **Fixed the issue where the original HTML was displayed in the tooltip of the column selection icon on the entry page**.
- **Fixed the issue where strings were not translated in the block editor**.
- **Fixed the issue where the submit and pagination buttons with the onclick attribute containing `gform.submission.handleButtonClick(this)` were missing the trailing semicolon**.
- **Fixed the issue where the export personal data tool might export entries unrelated to the user when editing forms using the Gravity Forms CLI add-on**.
- **Fixed the issue where the predefined options modal was not translated**.
- **Fixed the issue where the database update process could cause fatal errors when no update was needed**.
- **Fixed the issue where default styles were still output even when disabled from global settings**.
- **Fixed the issue where the `{embed_url}` and `{referer}` merge tags output incorrect values when submitting forms using the new AJAX submission method**.
- **Fixed the issue where wptexturize added extra curly quotes in the text area**.
- **Fixed the issue with conditional logic when the default currency uses a comma as the decimal separator**.
- **Fixed the issue where custom submit buttons could prevent honeypot and reCAPTCHA V3 from functioning properly**.
- **Fixed the issue in conditional logic field settings where multiple rules were added even though the + button was only clicked once**.
- **Fixed the issue where the new AJAX functionality caused confirmation messages to lose styling in certain cases**.
- **AF: Fixed the issue where undefined array key warnings occurred if the `gform_admin_pre_render` filter was called in a context without available forms**.
- **AF: Updated the Payment Add-On base class to allow payment add-ons like Stripe to enable payment status rules in confirmation conditional logic**.
- **AF: Updated frontend feed data with additional related feed information that can be used for Payment Add-Ons**.
- **API: Added the `gform_disable_dom_parser` filter to disable the DOM parser**.
- **API: Removed the following global CSS API properties from the form theme framework**: `--gf-ctrl-shadow-color-focus`, `--gf-ctrl-shadow-size-focus`, `--gf-ctrl-shadow-offset-color-focus`, `--gf-ctrl-shadow-offset-size-focus`, `--gf-ctrl-shadow-focus`。
- **API: Updated the form theme framework to use box shadows instead of outlines for focus states to improve accessibility**.