Activity Registrations Using WordPress & Participants Database


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.

  1. Great post. I will pass this on to our Stake. I work with the young men in our ward and when ever registration comes up for a stake activity it is always a mess.

  2. Hi how to create 2 forms in participation database like if i register by username and password then next page should display the fields that should not contain first name and password but when they can select fields and can send send data ….
    Please help for this code……Thanks in advance for sharing….

    1. Hi samaTeja. That’s a good question.

      Participants Database is designed differently than some other registration forms. It doesn’t have the option to go from page to page upon registration (at least not at the time of this writing, to the best of my knowledge).

      PD is designed to have a single registration page and a more detailed profile page. In your case, the single registration page could contain only the username and password fields. Once the user registers, the plugin will send a confirmation email to the user along with a personalized link to access their profile page. This profile page would then contain additional fields for user input.

      These two pages (the registration page and the profile page) are set up with two shortcodes, which you can find in the PD Setup Guide. The shortcodes are:

      [pdb_signup] for the registration page (username/password, in your case)
      [pdb_record] for the profile page (which would contain the additional fields)

      Just place the _signup shortcode on your registration page, and the _record shortcode on the profile page and you’re all set.

      I hope this helps. Good luck!

  3. Hi,
    Great post!
    I also have this plugin, but I have a problem,, when 1 of the participants save their details, I will get an e-mail of that.
    The participants will see their detials when they are logging in with the form i made in WordPress just like this post.
    I also like to track which participants logged in to see their details.
    Can you help me with this?

    Thank you in advance!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

You May Also Like