Some time ago I was asked to create a website where Church youth could register for Stake activities. Our Stake takes part in a regional youth Prom where several Stakes come together to make a special evening for the Youth. This “Mormon Prom” provides a good, wholesome, modest environment for youth to celebrate a special evening with their friends—both members and non-members alike. In addition, we have our yearly Youth Conference. Both activities were to be available for registration on the website, and I was asked to make it possible.

I started with a standard WordPress site with all of the necessary pages for activity info, driving directions, etc. For registration, I chose to use the Participants Database plugin because it was free (even though our Stake offered to reimburse me for a paid plugin, I prefer to be frugal where possible). Participants Database is a great plugin if you only need to manage one activity at a time. It also works for simultaneous registration, though it does become challenging if you need to validate certain fields on each registration form.

Participants Database is pretty simple to use. You set up the form fields you want to include on the registration page, then use a shortcode to insert the registration form where you want it. Registrants visit the page, complete the form, and submit it. The data is stored in the database and accessible via the plugin’s settings, and an email is sent to the registrant with a unique link to access and update their registration information. It’s pretty straightforward, and provides an easy way to capture the information you need for later retrieval.

The reason I like Participants Database (aside from the price) is simple: It comes with great reporting tools built right into the admin settings area. It has database filtering and sorting that are relatively pleasant to use, as well as the option to export the filtered/sorted data into a .csv file so you can edit it in Excel. Setup is pretty easy as well, requiring only that you create the fields to be used on the registration page and put the shortcodes on the pages that will be used for registration management. Overall, I’ve been quite pleased with the plugin and I highly recommend it.

The downside to Participants Database is that running registration for multiple activities isn’t so simple. If you decide that you want to run simultaneous registrations, I would recommend reading this post on multiple registration templates, and this post about troubles with form validation. If you plan on doing this regularly, you may want to look at Gravity Forms, a paid plugin that provides a lot more flexibility and customization.

Finally, I did have one issue with registrants losing their unique links (either in their spam box or by accidentally deleting it). Instead of having to look up their unique ID to be used for their link in the database each time, I decided to create a simple form for registrants to enter their email address and email it to themselves. To do this, I created a new template page by copying the page.php file and inserting my code to fetch their information from the database and email it to them. If it helps, the code can be found here:


                global $wpdb;

                $form = ‘</br></br>’;

                $form .= ‘<div id=”registrationcontent” style=”width: 590px; margin-left: auto; margin-right: auto;”>’;

                $form .= ‘<p>If you no longer have your unique link to update your registration information, please enter your email address below and click “Submit”. Once submitted, your unique link will be emailed to you again. Please allow at least 15 minutes, and make sure you check your spam folder.</p>’;

                $form .= ‘<form method=”post” action=””>’;

                $form .= ‘<input type=”text” name=”email”> Email Address </br></br>’;

                $form .= ‘<input type=”submit” value=”Submit”>’;


                $email = $_POST[’email’];

                $db = $wpdb->prefix . ‘participants_database’;

                $sql = “SELECT private_id FROM $db WHERE email=’$email'”;

                $pid = $wpdb->get_var($sql);

                if ( isset($email) && empty($pid) ) {

                                echo ( ‘</br><span style=”color: #ff0000;”>That email address was not found. Please try again or submit a new registration.</span>’);

                } else if ( isset($email) ) {

                                $subject = ‘Registration Link Recovery’;

                                $message = ‘To update your registration, please click here: http://www.YOURWEBSITE/YOURPAGE/?pid=’ . $pid;

                                $from = ‘YOURADMIN@EMAIL.COM‘;

                                $headers = ‘From: ‘ . $from;

                                mail ( $email, $subject, $message, $headers );

                                echo ( ‘</br><span style=”color: #ff0000;”>Email sent. Please check your email.</span>’ );


                echo(‘</div><!– #registrationcontent –>’);



I’ve found that this simple approach to handling user registrations is pretty effective. I’ve been able to provide access to Bishops to approve Youth for these activities, and handle all of my registration needs so far. If you’d like a free option for handling site registrations, WordPress with Participants Database is for you.