My Top 5 Gravity Perks ‘perks’ to Improve My Gravity Forms

Author: Jeff Bianchi

For me, there are two unalterable truths when I create a website:

  1. I use Gravity Forms (GF) for all the forms I build, and I usually build at least 3 or 4 for each website.
  2. I extend GF's functionality with a software package called Gravity Perks.

There is virtually never a time when one of my GF forms cannot be made easier, safer, faster, prettier, more functional or just plain better by applying one or more ‘perks' to it from the large selection within the Gravity Perks offering.

Here are my top 5 Gravity Perks ‘perks':

1. GF Limit Dates

From my perspective, this is the Holy Grail of perks!

I'm a bit of a math geek anyway, and being able to do date math just plain rocks.

I have a client who has products he offers to his customers. The form I created for him has a date picker using the calendar interface.

My client allows his customers to select the due date for product delivery and his normal product delivery time is two business-days. So when the customer places an order, the earliest due date he can select is the current date + 2 days. This formula easily fits into the minimum date field on the Perks tab. Simple date math.

Since there is no future date that is too far out for his customer to select a due date, the maximum date field is left as is.

For a fee, my client also offers add-ons to his products, one of which is next business-day delivery. These add-ons are implemented with checkboxes. If the customer checks the ‘Next Business-day Delivery' checkbox, my form needs to limit the customer delivery date selection to the next business day.

I accomplish this by setting the minimum date to current date + 1 day. Since the customer is paying extra for next business-day delivery, I don't want the customer to be able to select a delivery date beyond the next business day. I accomplish this by setting the maximum date to the same value as the minimum date: current date + 1 day.

Two things you might be asking yourself:

  1. What are business days and how do you define them?
  2. How can you have to separate conditions for the minimum and maximum dates on the Perks tab?

Excellent questions! I have your answers:

  1. On the Perks tab, right under the Maximum date field, is the Days of the Week field. It defaults to ‘All days' by showing you a check mark in front of the value. When you hover your cursor over ‘All days' the check mark turns into an ‘x'. Click the ‘x' to turn off the default. Doing so displays the seven days of the week allowing you to select the days that you want to make as valid selections for the date picker. By selecting Mon, Tues, Wed, Thur and Fri I am establishing the business days for my client's customers to select for delivery.
  2. This one might be a little less obvious, at first, but when you read my answer you'll smack your forehead with the palm of your hand: “Of course!”. GF Date Limits doesn't allow you to set conditional logic on the minimum and maximum dates so the only way to allow for the differences I need for these fields is to use GF's default conditional logic on the date picker field itself! For my client's form I'm using two date picker fields, each using conditional logic based on the ‘Next Business-day Delivery' checkbox. If the customer leaves the checkbox unchecked, my form uses the date picker that specifies the minimum date field as current date + 2 days. If the customer checks the checkbox, my form uses the date picker that specifics the minimum and maximum date fields as current date + 1 day. Simple, right?

2. GF Conditional Logic Dates

It's no secret that I love working with dates and date math. Add conditional date logic to the equation and the options are endless.

I've used this perk to display form fields on, within, or outside the boundaries of certain dates. I've used it to display form fields within a timeframe: ‘Order from noon to 5pm Today Only!” I've used it to display form fields on Tuesdays, and weekends only.

I love this perk!

When setting your conditional date values you can use a special condition-logic-only merge tag: ‘today'.

This allows you to do date match such as: ‘today +1 day', ‘today +2 weeks', ‘today -1 month':

If you know how to use GF's default conditional logic you already know how to use this perk. Start thinking about your date-specific options now that you can use dates within your conditional logic.

While currently only supporting datepicker date fields, there are plans to support the other date field types.

3. GF Conditional Pricing

In addition to products he offers, another client offers subscriptions to his customers. Gold, Silver and Bronze subscriptions give his customers discounts of 45%, 30% and 15%, respectively on each of his products. Anyone can purchase his products, but only his subscribers get special pricing.

There are a couple of things that need to be in place for this to work:

  1. In order to keep track of the subscription level that a customer belongs to, we have to take a step back. At the point that a customer wants to order products, s/he must declare how they want to proceed – as a non-subscriber, or as a subscriber at a particular level (Gold, Silver or Bronze). Once that decision is made the user is registered via GF's User Registration Add-on. It's in this add-on that we can specify the customer's membership level be recorded in the User Meta data. I add a Custom Meta field called ‘Membership_level' and I set its value to the ‘What membership do you want to buy' field. One point that may not be obvious is that if the customer elects not to purchase a membership, but to instead continue as a non-member, the ‘Membership_level' user meta data still has a value: in this case, it's blank.
  2. For any of his customers to order products from my client, the customer must be logged into their account so that their membership level can be retrieved.

With those two tidbits explained, we can continue with setting up GF Conditional Pricing.

To set the conditional pricing logic, you must first add a product field to your form, and only then will you see the Conditional Pricing menu item in the form settings menu.

Once you're on the Conditional Pricing settings panel you can choose the product field for which you want to set conditional pricing from the ‘Select a product' dropdown.

From here, this looks very much like the typical conditional logic fields on most GF fields. The difference, of course, is instead of displaying a field if the conditions are met you're setting ‘The product costs' field to a specific value. When you set product pricing this way, it's said that you're creating (adding) a ‘pricing level'.

For my client's needs, I had to add four specific conditional pricing levels to set the price of each product based on the customer's subscription level. Using pseudo-code, the price for each product is determined like this:

  1. If Membership_level is Gold, the price is $110.
  2. If Membership_level is Silver, the price is $140.
  3. If Membership_level is Bronze, the price is $170.
  4. If Membership_level is “” (blank), the price is $200.

This is all good and well, but you might be asking how the form even knows about the customer's membership level in the first place! Simple — the first field I put on my form is a hidden, Single Line Text field. On the Advanced tab I set its default value as pictured:

When the customer logs into their account to place an order, their membership level is retrieved from the user meta data and made available to the order form. Based on the value of their membership level, the product pricing is set accordingly.

It all works beautifully!

4. GF Reload Form

As simple as automatically reloading a form is, doing so is quite important. Of course, after a user clicks the submit button on a form they should be presented with the typical confirmation message or page. But why leave it there?

I always reload my forms after an 8 second delay. This is the perfect timing that allows the user to read my short confirmation message before the page automatically reloads my form.

The GF Reload Form perk does this easily and is implemented on the Form Settings panel, at the very bottom.

By checking the Automatically Reload Form checkbox, a new field appears asking for the number of Seconds Until Reload. I enter 8 into all my forms.

But we're still not done. In order for this perk to be able to perform its magic one more thing needs to be done.

Only forms submitted via Ajax can be reloaded automatically, so when adding your form to a page, you must check the Enable Ajax checkbox. Once this is done and after your user submits the form, your form will reload at the time interval of your choice.

Graceful, easy, professional. Good stuff!

There is one thing to be mindful of: if you use a reCaptcha on your form to reduce SPAM entries, reloading your form will not work. For some reason, adding the reCaptcha disables Ajax functionality.

You can get the best of both worlds however if you use the anti-spam honeypot (found on the Form Settings near the bottom) instead of reCaptcha. This technique does not disable Ajax functionality.

5. GF Read Only

However, as mentioned this selector isn't for all form field types. For a comprehensive list of the selectors to use with other field types, plus additional details, you can see more in this Gravity Perks article.

Using this perk with conditional date logic and math can give you some pretty powerful options when creating your forms.


Virtually all websites need to collect some kind of data from their visitors. The typical method of doing so is with forms. For me, no other forms creation plugin is as powerful and flexible as is Gravity Forms (GF), which I consider to be the complete solution for creating website forms. Every website I create uses GF.

That said, Gravity Perks makes GF even complete…er!

I would use GF if Gravity Perks didn't exist. But thankfully, Gravity Perks does exist and I simply cannot think of a single reason why I would ever use GF without Gravity Perks.

Honorable Mention

  • GF Copy Cat – Copy the content of one field to another, including sub-fields manually or automatically!
  • GF Disable Entry Creation – Pseudo-disable, actually. After the form is submitted the entry is deleted.
  • GF Post Content Merge Tags – Use this to incorporate form data into page redirects and confirmations.
  • GF Unique ID – Generate a unique ID value for use in orders, subscriptions, invoices, etc.
  • GF Email Users – Not exactly an email campaign manager, but you can send emails to everyone who filled out a particular form.


I am anxiously awaiting a perk I just heard about: Nested Forms!

Forms within forms. Think of an order form where you don't know how many products the customer wants to order. You create an ‘Add item' button the user can click and when they do – up pops another form! Use this child form to add items to the parent form.

Lots of possibilities! I am ridiculously anxious for this functionality.

Gravity Forms is must-have software, in my opinion. But they left out a lot of functionality. I'll never have a GF install without the extras that Gravity Perks provides.