One of our most frequently asked questions is: How do I add extra fields to the Paid Memberships Pro checkout page?

This can be done using the Register Helper Add On and a little bit of custom code. Our Register Helper API supports text fields, text areas, dropdowns, radio buttons, file uploads, and just about any field you could need – all customized by the membership level your user has selected.

View the Add On Documentation

Basic Install and Setup

The full Register Helper documentation contains all of the information you need to get started. A summarized list of steps is available below.

Install Register Helper – Paid Memberships Pro Add On

  1. Go to Plugins –> Add New. Search for “Register Helper Add On”. Install and Activate!
  2. Or to manually install the Add On:
    1. Download the latest version of the PMPro Register Helper Add On.
    2. Go to Plugins –> Add New in your WordPress dashboard.
    3. Click the “Upload” tab at the top of the page.
    4. Click “Choose File” and browse to the downloaded file.
    5. Click “Install Now”.
    6. Click “Activate Plugin”.

Install our Register Helper Example Plugin

  • Download the Register Helper Example Plugin.
  • Go to Plugins –> Add New in your WordPress dashboard.
  • Click the “Upload” tab at the top of the page.
  • Click “Choose File” and browse to the file.
  • Click “Install Now”.
  • Click “Activate Plugin”.
  • Edit the plugin (in WordPress or via FTP) to add the fields you want per the documentation.

  • Help!

    If you need help setting up fields on your site, you can create a post in our member forums and we will craft the custom code you need to add to your site. (For PMPro Core and PMPro Plus members).

    We’ll set up the add on and add up to 5 fields as part of your PMPro Plus membership.

    Why do I need to write code? Why not have a user-friendly GUI?

    We may eventually build an admin interface for adding fields via Register Helper, but we are waiting until the main Register Helper plugin has evolved to offer as many features as our members need. And the list keep growing!

    The Register Helper plugin is a very flexible tool for developers. A GUI-based tool would inevitably be less flexible, so we are committed to maintain flexibility as well as better ease of use.

    This entry was posted by Jason Coleman in About PMPro, Recipes and tagged . Bookmark the permalink. Last updated: August 28, 2014. Titled How to Collect Additional Fields at Membership Checkout, on Profiles, or for Admin View Only

    Hi Jason
    I just paid a developer to add the fields to my site which was easy enough, but it doesn’t seem to have added the fields to the downloadable csv file of PMPro members.

    Should added fields be automatically be added to the downloadable csv file? I’d really like to analyse the data i’m collecting but it doesn’t seem to be working?



    Jason, do you think this plugin could be used to add the level-selection to the checkout page? That would eliminate the level-choice step where we can lose potential subscribers. Our first step on Nozzl is for the subscriber to select a “stream player” to embed on their own website. The default subscript is monthly, first month free, but we want to offer a yearly for the cost of 10 months. I’d love to skip the levels page and have that simple choice be a checkbox on the checkout page. They check level, enter their payment information, and SUBMIT. Paid member then get to see extra material on their account page — their account info and invoices PLUS their personal embed code and the title of their player.

    I think this is possible — would love you input, especially if you think it’s a bad idea going forward. Thanks!

    Yes. We’ve done this for others. You would pair it with something like this to adjust the price based on the selection:

    You can also do something like we do on the PMPro site, where there are links to the different level options at the top of the form:

    We just link people to the most common level and let them change to the others there. They are just simple links to other ?level=# ids.

    The registration field helper plugin made it rather easy for me to add 3 extra fields, thanks. I had to bounce between the readme (which had good code examples) and the docs page for the registration helper (which had the options detailed). I appreciate the options that made it flexible to add data fields my client wants to maintain for memberships

    The docs page ( is a bit confusing. Under “installation Details” it reads “You must create an additional PMPro Customixzations [spelling error] Plugin to store the code: but really it is talking about the Register Helper Example plugin (?)

    For the customizations, there is no documentation as to what the $pmprorh_options settings do (I can guess) (mostly)

    But I got it working in less than an hour, and for me, it is way more flexible understanding the options and doing it in code than a GUI.

    I already had PMPro installed and activated and I needed more fields added so I have just installed PMPro Register Helper. I followed all the instruction, created the pmpro-customizations.php , edited or added the fields I wanted, viewed the page and everything shows up but once I fill out the form and hit the PayPal checkout (PMPro created pages) I get a “Error 404 Page Not Found”, if I deactivated this plugin, then PMPro displays the page with no problems.

    I even tried editing the “pmpro-register-helper-fields.php” but that gives me the same error.
    I really need help with this problem.

    I am having a similar problem. Created the pmpro-customizations.php, successfully edited and added fields, and all fields show up properly on page, but when I checkout, I get a “Error 404 Page Not Found” as well. If the Register Helper plugins are deactivated, it works again. Any suggestions?

    I succesfully added fields for the checkout – however, even with “profile”=>true, the field values are not showing up on the user’s profile / account page. What might I be doing wrong?

    If you share your full code on something like we can take a look. Post to the member forums and we’ll follow up. Only thing I can think of is if the field is not being added to a proper “checkout box” that would show up on the profile page.

    I succesfully added fields for the checkout, the field are not showing up on the user’s profile / account page. why ??

    You need to tell RH to show the field on the profile page as well. Like this

    $fields[] = new PMProRH_Field(
    ‘label’=>’Field Name’,

    … add ‘profile’=>true to the array of options. Make sure your commas are good.

    If you do this and it’s STILL not showing up on the profile page, make sure you are using a location/checkout box that is also on the profile page. (I think after_password e.g. is not on the profile page.)

    The issue I am having with this is weird. I input the extra fields I wanted into the register helper example via the dashboard >> plugins >> edit plugins and it shows on the checkout page of the site, but when the user finishes the checkout and checks out with stripe, when we get the receipt for the transaction is does not include the options that they selected (which is a radio drop down of charities they can select to have 20% of there membership costs donated to)

    ** Note: I was the one with the paypal express working with stripe issue that emailed, but ended up abandoning using paypal in correspondence with stripe. I am now trying to get this figured out as it is about the last thing I have to complete.

    Where can I edit the billing address? I want to add extra field like under lastname I want to add birthdate how to do this? Thank you.

    Clever pun. If you were wondering how to edit register helper fields, you can have them added to the profile page by setting a “profile”=>true or “profile”=>”only_admin” option on the field when defining it. And here is a gist that adds the PMPro billing address fields to the edit user page in the admin. If you don’t have this code, but see “billing address” fields in the admin they are probably for a different plugin like WooCommerce.

    Jason thanks for your response, but after thinking about it, I notice that you are not responsible for the answer I’m looking for.
    In my website, a learning platform, the students won’t have access to the WordPress dashboard, instead I used the plugin, and I’m using their shortcode to create a form in the frontend to enable the ability for the students to edit their profile.
    So the question is for them, how to add a custom field to the edit form?

    Sorry for this misunderstanding, thanks for your great plugin and your awesome support!

    There is some issues with floats on your theme. You can try adding this to a custom .css file or child theme:

    `form.pmpro_form .pmpro_submit span {float: none !important; }`

    For additional support please open a topic on our members forum.


    I was able to add additional required fields to checkout, but when a user tried to upgrade their membership, they’d get an error because they were already logged-in. They could not see the additional required fields. I thought I solved the issue by checking with an IF statement to see if the user is logged in, but now the fields do not appear in the user’s profile.

    Let me know your thoughts –


    This happens with register helper sometimes when you have fields required that may not necessarily show up. I’d like to update the addon to detect these situations to at least show better error messages. In any case there are a couple work arounds:

    1. Move the fields to the checkout_boxes section or another that won’t be hidden for logged in users.

    2. Add code like this above your fields:

    $required = false;
    $required = true;

    Then when you set the required property of those fields, use that $required variable.

    Hope this helps.

    Yes, this did help me. I used method 2. Everything seems to be working as expected. Thanks!

    Hi. It was really simple to add a new field and I have successfully added it to the checkout and profile pages. I would like the field to be read-only to the user on their profile but allow an admin to change it from the dashboard. Is that possible?

    Glad you got your field added.

    There isn’t a “profile” option that does exactly what you need. It would be neat.

    In the meantime, you can add logic when defining the fields, so if a user is an admin, set the field type to readonly or otherwise make it read only.

    if ( current_user_can(‘manage_options’ ) ) {
    $fieldtype = ‘text’;
    } else {
    $fieldtype = ‘readonly’;
    $field[] = new PMProRH_Field( ‘my_field_key’, $fieldtype, array() ); //update this

    Hello, can I create like this registration form “” using this paid membership plugin. I want membership level show on like this.

    Awesome post and amazing the amount of support this plugin has. 🙂

    I have a small problem/favor to ask:

    I hide the labels on my forms and use placeholders instead to give a cleaner look to my fields.
    I customised the checkout forms via checkout.php, but adding new forms through helper does not include an ability to add placeholder.

    I circumvented the label by using false; but the placeholder does not register through the options to fields.
    I use this code:

    ‘class’ => ‘co-input-checkout’,
    ‘size’ => 30,
    ‘profile’ => true,
    ‘required’ => true,
    ‘levels’ => array(0,1),
    ‘label’ => false,
    ‘placeholder’ => “Company Name *”

    Unfortunately, this doesn’t cut it.

    Can you please add placeholder support, or is there any way to just do this via checkout php? I need the new fields to be recognised by PMPro and shown on invoices etc.

    I think I should just add everything for code. So you can see the whole picture. Basically I want a field that is required and must be shown in profile and on invoice:

    $fields = array();

    $fields[] = new PMProRH_Field(
    ‘class’ => ‘co-input-checkout’,
    ‘size’ => 30,
    ‘profile’ => true,
    ‘required’ => true,
    ‘label’ => false,
    ‘placeholder’ => “Company Name *”

    foreach($fields as $field)


    For those who want to add Placeholder Text to their Register Helper Fields and remove the title of the field, add these attributes to your RH field array:

    Hi. Thanks for great post.

    I have used register helper plugin to add custom fields.

    When I add “file” upload option, I upload an image and hit submit. It throws an error message saying image fields required.

    My all other fields work but I am stuck with file upload option.

    Please help.

    when I try to load this plugin with the buddypress addon i get this error:

    `Warning: Cannot modify header information – headers already sent by (output started at /home3/dduser/locosite/wp-content/plugins/pmpro-buddypress/includes/profiles.php:56) in /home3/dduser/locosite/wp-includes/pluggable.php on line 1219`

    when I try to save the profile on the front end. I don’t think I did anything wrong, but here’s my code:

    * Based on the Register Helper example.
    * We’ve added a “buddypress” option for each field set to the XProfile name we used when setting up
    * the fields in the BuddyPress extended profile.
    * If the PMPro BuddyPress Add On is activated then the fields will be synchronized.
    * Register Helper:
    * PMPro BuddyPress:
    function my_pmprorh_init() {
    // don’t break if Register Helper is not loaded
    if ( ! function_exists( ‘pmprorh_add_registration_field’ ) ) {
    return false;

    // define the fields
    $fields = array();
    $fields[] = new PMProRH_Field(
    ‘rt_childname’, // input name, will also be used as meta key
    ‘text’, // type of field
    ‘buddypress’ => ‘A Catchy User Name’, // XProfile Field Name
    ‘label’ => ‘A Catchy User Name for your child’, // custom field label
    ‘profile’ => true, // show in user profile
    ‘required’ => true, // make this field required

    // add the fields into a new checkout_boxes are of the checkout page
    foreach ( $fields as $field ) {
    ‘checkout_boxes’, // location on checkout page
    $field // PMProRH_Field object
    // that’s it. see the PMPro Register Helper readme for more information and examples.
    add_action( ‘init’, ‘my_pmprorh_init’ );’

    Good day

    I am using paid membership pro running on a production site but i have one challenge. I used Figarts checkout plugin as recommended on this website. The form isn’t capturing user information on checkout but when users update their information the information is captured and it appears on the csv file.

    I have since contacted David the developer he requested screenshots and he never came back to me. Please help me get hold of him to sort out issues with his plugin.

    Hi there,

    How I should proceed in order to add custom fields to an specific level checkout form ?
    I mean, for instance, I have tree levels 1,2,3 and I want to propose an extra select field just for the level 1.
    I’ve already a licence and I’am doing this for a client, so I’ll appreciate a prompt answer.

    Thanks in advance.


    Hi there,
    I have the following issue:

    1- when I use profile=>’only admin’ or ‘only’, it never shows that particular field in the registration page.

    2- if I use profile=> true , it duplicates the field. One is generated in profile and the other is made in extended profile.

    3- if I use profile=> false, it stops duplicating. It is now only in extended profile. Which is nice. But does not help with profile visibility.

    4-Profile visibility is not affected through changes via buddypress profile fields as well.

    I could not solve it so far. So, if you come up with any solution please let me know.

    Hi, I’ve successfully added a new field to my checkout named “SnapChat Username”, and it’s not being sent with the automated Admin emails after a member checks out. I’m sure it’s something small I’m overlooking but is there a way to have this new field sent to me in the admin email from PMP? I have the email template editor plugin installed and would like it to appear immediately after !!name!!. Any ideas?

    Leave a Reply

    For faster support related to issues on your specific site please open a ticket in our members support area.

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