I used to use a few different contact form plugins (most often Contact Form 7) that did the job, but more recently have started using Gravity Forms for all forms needed on client sites. It’s just easier to style one plugin’s elements with CSS than having to support several, and GF can handle anything from complex multi-page forms down to the simplest contact form.

Gravity Forms isn’t free, but it’s worth every penny. For an individual website it’s $39, but I’ve had a Developer License ($199) for over a year that allows me to install it in unlimited sites.

What I love about Gravity Forms:

  • It has a clean, simple interface out of the box;  a lot of CSS styling isn’t necessary, but it’s set up with classes to make it easy if you do need to do extensive styling;
  • Conditional sections (that appear only when certain conditions in the form are met) are easy to set up;
  • WordPress user registration can be included in any form;
  • Has a pretty nice form widget;
  • Supports auto-responders;
  • Export entries to Excel/csv without an additional plugin;
  • Integrates with Mailchimp, Aweber and Campaign Monitor (pro and business versions);
  • Accepts payments by integrating with Paypal, Authorize.net or Freshbooks (pro and business versions);
  • Has new features coming out fairly regularly (most recently – signatures through touch-screen devices, polls, and SMS notifications for form submittals;
  • Has great tech support and user community.

That last list item is the reason I decided to go with a Developer license. I’ve gotten very detailed help from the support community on a number of projects.

If you’ve used a number of different form or form widget plugins and are looking for one stable and comprehensive one that can do it all, I’d recommend checking out Gravity Forms. It’s definitely worth the cost.

This series is for helping fellow WordPress designers add useful  functionality to their websites by pointing out some of the great plugins I run across while building client websites. I hope this helps you!

I love Gravity Forms, it’s one of my go-to plugins for all WordPress installs. Last week a client gave me the form fields for a new form and some of them needed a word counter to limit words to 300 in textareas. I found two possible solutions for adding maximum word count in Gravity Forms after a bit of searching, but neither worked for me (not being a programmer, I didn’t know how to fix them). But my programmer friends at CodeGeek stepped in and came up with this solution.

Here’s the Javascript which is saved in /themes/mytheme/js/ (it could also be put in an HTML block within the form itself, but we may want to use it on several other forms so made it available site-wide):

Then in functions.php, call the script:

Then in the Gravity Form for fields that need the word count, add the class ‘els-word-count[300]’ in the Advanced tab for CSS Class Name. Change [300] as needed for the maximum words that can be added to that particular field.

Recently I had the opportunity to work with a favorite client on a private content section of his WordPress site targeting the real estate industry. While the amount of protected content is actually very small, there were some specific requirements/constraints for the registration process and membership management tools:

  • Dead simple account approval process that allows my client to vet new applicants quickly
  • Allows custom fields in the registration form
  • Has the ability to export the membership data to CSV, and import new member data
  • Robust enough for larger membership databases, 25,000+ members
  • The ability to email all members or groups of members about product updates and news

After trying a few membership plugins for WordPress and being less than happy with the lack of a built-in account approval process, we went another direction. I got a trial version of aMember Pro, standalone membership software that’s been around for years. At $179.95 it’s not the cheapest solution, but the more I tested it the more I was sure my client would approve – and he did.

aMember Setup

Setting up aMember took some time, but it was not terribly difficult. I did have to check in with tech support once or twice (they are fast and responsive, by the way), mostly about how to hide some sections in the registration form template related to payments and membership levels; we didn’t need them because there’s only one level and it’s free. Setting it to manually approve new members is straightforward – just tick a checkbox – and all system emails are editable.

Adding custom fields to the registration form also required a little tinkering in the template file to change the order of a few fields.

aMember is not pretty right out of the box, but it is quite ready for integrating with HTML and CSS styling. My client only needed to show one page from aMember – the registration form. Styling it to complement the WordPress site was very easy, and that was all that was required for this particular project.

The Registration Process

A potential member registers by clicking a link on my client’s New Members page. He or she is then taken to the aMember registration form, they fill it out and submit it, and they get a confirmation email that states that all applications are manually approved and they’ll be notified of the decision soon. My client also receives an email letting him know that there’s a new application in the pool.

Clicking a link in the email takes him to aMember’s admin site. After logging in he clicks on Not Approved Users to see who’s new there. He can quickly view an application – they need to verify company info per their terms of service – then approve/deny one or more new members. When they’re approved, they’ll get an email with their new login info (which they’ll use to login to WordPress with some help from a plugin I’ll talk about a little later).

One thing to note: there is no way to automatically email an applicant who’s not approved, but you can click their email address in the Not Approved Users table to be taken to an email form. Pasting a pre-written denial notice that uses aMember shortcodes is a quick way to handle denied applications and this was a small issue my client was willing to live with.

Controlling the Private Content

Now back to WordPress. We needed to have approved aMember members be able to login here and see protected content, which includes a marketing page and an order form. aMember offers a plugin for this, but after hunting around in the forums for a while I decided on the $67 commercial plugin amProtect because of the many recommendations for it.

This turned out to be very fortuitous for reasons I’ll go into in the last part of this post!

amProtect does the following:

  • Integrates aMember products (like a membership level) into WordPress
  • Allows you to protect content for each product (i.e. hide a page unless you have a membership of a certain level)
  • Protect specific parts of a page’s content instead of entire pages
  • Allows for drip content
  • Provides a login widget

amProtect was easy to install and set up. I used it to protect parts of two pages in WordPress in seconds and it worked perfectly.

The Last Piece of the Puzzle

Finally, we get to the Gravity Forms part. I love Gravity Forms, I’d recommend it for anything but the most basic of form needs. It’s $39 and worth every penny.

This is not technically part of the private content area setup, but it connects. Trust me.

We used GF to create the order form that lives on one of the private content pages. There’s a little bit of intro text that is viewable by any visitor, then we show the form for members registered through aMember.

Why we used GF:

  • Supports multi-page forms
  • Conditional content – specific content is displayed only when certain form inputs are chosen or filled in (GF has a subtle sliding animation for this using jQuery if you like)
  • Can hide the submit button until the TOS are agreed to via a checkbox
  • The ability to dynamically populate fields based on the logged-in user’s data
  • Looks nice out of the box, and CSS styling, where needed, was straightforward

GF has a very nice visual editor and setting up the 2-page form was pretty simple.

The Problem We Ran Into…

The problem came when the client requested we prefill a set of contact info fields based on the members’ aMember registration data.

Urk. We discovered that dynamically populating from the aMember database, which is totally separate from the WordPress one, was not going to work without some help. I contacted Ken Gary, the developer of amProtect (remember our plugin that allows aMember logins in WordPress?).

amProtect has the ability to dynamically populate fields from aMember in Contact Form 7, another popular WordPress form plugin. I told him my problem on a Friday morning, and we went back and forth with a few emails where he tried to give me some code snippets that would both pull in aMember data and also work with Gravity Forms’ syntax for dynamic population. No joy.

Ken seemed to be as intrigued by the problem as I was. He bought a copy of Gravity Forms and told me he’d be in touch.

Late that same night I got an email from Ken with a new version of amProtect – he’d spent part of the day revising his plugin to also pull in aMember fields in a way that Gravity Forms could understand. I installed it and went back into GF, and had no problems getting the contact info fields to populate with the user’s aMember registration data.

Ken Gary ROCKS. I highly recommend his amProtect plugin if you’re considering a WordPress/aMember site, plus he has a number of other aMember-related plugins available. I’m glad that our problem led to the opportunity for him to offer an upgraded plugin – having support for both Contact Form 7 and Gravity Forms is a big deal.

A Workable System

For this particular client’s requirements, the WordPress/aMember setup fit the bill well.

One of the reasons for the need to quickly approve/deny applicants manually comes from the client’s trade shows – it’s not uncommon for them to have several thousand registrations in a day, and aMember provided the simplest way for them to handle the influx while still maintaining control of the membership.

The ability to tie together aMember, WordPress and Gravity Forms is a big plus for this setup. I hope this post proves useful for you if you’re looking for info on building membership sites in WordPress. Let me know if it does.