Tutorial: Use Gravity Forms to let users submit posts & display them in a table on your website

November 8, 2021

Gravity Forms User Submitted Posts Plugin

As the world's leading WordPress forms plugin, people use Gravity Forms in weird and wonderful ways. Today I'm going to show you how to use Gravity Forms to allow users to add information to your website and submit it to you. You'll learn how to automatically store the data as a WordPress post, WooCommerce product, document (or any other custom post type) and display the Gravity Forms entries in a table on the front end.

The end result will look something like this - a neat table listing your users' form submissions!

Member directory dynamic filters
A WordPress member director listing user-submitted profiles

Why display user-submitted information in the front end?

There are lots of reasons why you might want to let users submit information and display it on your website:

  • WordPress document library with user-submitted documents Lots of websites use a WordPress document library plugin to allow users to find and download documents. If you need a way for users to submit their own documents, then you can do this with Gravity Forms.
  • WordPress member directory with user profiles If you're using a WordPress member directory plugin to list members or consultants in a table, then you might want to allow people to register and upload a profile. If you don't want to install a heavyweight membership or e-commerce plugin, then it can be simpler to use Gravity Forms for the member registration and profile upload.
  • WordPress directory website If you're creating any type of directory, such as a business or local events directory, then it makes sense for users to submit listings. If you're trying to keep your website simple, then you can avoid installing a full directory theme or plugin by using Gravity Forms and a WordPress table plugin instead. You can even take payment via PayPal and hold submissions for moderation by the administrator before they're published!
  • WooCommerce user-submitted products If you're using WooCommerce then you can let users submit products to sell in your store.
  • User-submitted events If you're using a WordPress events plugin such as The Events Calendar, then your users can submit events to display on your website.

I'm sure there are also lots of reasons that I haven't come across yet. (I'd love to hear about your own use case in the comments below!) Whatever your reasons, I'm going to show you how to do it.

Case study - TV Production Contacts' Job Board

Job detail submission form for TV Production Jobs

TVProductionContacts.com acts as a networking site for TV production professionals, it also hosts a WordPress job board listing jobs available in the industry.

The job board is powered by our Posts Table Pro plugin. The site also uses the Gravity Forms plugin and the Gravity Forms + Custom Post Types add-on to power the job board submission form.

Gravity Forms makes the job board simple to manage. Hiring managers submit all the job details using the form. The user-submitted information is then approved before being automatically displayed in the sortable job board.

Keep reading to find out how to create your own form for users to submit information to your site.

What to expect from this tutorial

This tutorial will teach you how to add the following features to any WordPress website. Read it all, or skip straight to the sections you need:

  1. Use Gravity Forms to collect user-submitted information
  2. Store the information as a WordPress post, document or custom post type
  3. Display the user-submitted data in a table on the front end of your website

You can also watch us setting it up from start to finish in this video:

Step 1 - Use Gravity Forms to collect user-submitted information

The first step is to install the Gravity Forms WordPress plugin and create a form. Your visitors will use this to submit information to you. This is useful whether you want them to upload a document, member profile, business listing, upcoming event, or something else.

  1. First, buy Gravity Forms, download the plugin and install it on your WordPress website (Plugins → Add New).
  2. You'll see a 'Forms' link appear in the left of the WordPress Dashboard. Navigate to Forms → Add New.
  3. Enter a name for your form, then add all the fields. (If you haven't created a form before, please see the official documentation.)
    • Title, content and custom fields - Instead of using Standard and Advanced Fields, you should use Post Fields. These map to fields on your WordPress post type, so that the user data will be stored in the correct place.  
    • Custom taxonomies - Create a Standard Field and then click on the 'Advanced' tab when editing that field. You can use this to map the field to the custom taxonomy on your WordPress post type.
    • If you want users to be able to upload documents via Gravity Forms, use the File Upload field type.
    • Gravity Forms Add User Submitted Listing Form
  4. Click 'Update' to save your form.
  5. Next, create a page (Pages → Add New) and click the 'Add Form' button above the WordPress toolbar if you're using the Classic Editor, or use a Gutenberg block if you're using Gutenberg. Select the form you just created and insert it into the page. You can also add other content to the page:
    Add Gravity Form to Page
  6. Finally, view the page and make sure you're happy with it.

Your user-submitted content page should look something like this:

Gravity Forms User Submitted Content Form

Optional - hide and protect your Gravity Forms page

Some people use Gravity Forms to collect user-submitted content from authorized users only. You can do this by protecting the page containing the form.

There are several ways to do this:

  • The simplest way to secure the Gravity Forms page is to password protect it.
  • If you're using an SEO plugin (e.g. Yoast SEO), then you can also use this to noindex the page. This will ensure it is hidden from search engines.
  • For a more secure approach, use a WordPress membership plugin such as All Access Manager to restrict the page to logged in users with a certain role only.

Step 2 - Store the information as a WordPress post or custom post type

So far, you've learned how to use Gravity Forms to create a form that users can use to submit information to you. It looks pretty, but it's not much use yet! At this stage, the information will be emailed to you and stored in the WordPress database. In Step 2, I'll show you how to automatically use this user-submitted data to create WordPress posts, documents, WooCommerce products, and custom posts. This saves you having to manually input the data to your website.

How to use Gravity Forms to save user-submitted information as a WordPress post

Gravity Wiz have an excellent tutorial about how to save Gravity Forms submissions as posts. Do this, then come back to learn how to display the user-submitted content in a table on the front end.

When you follow the Gravity Wiz tutorial, don't forget to set the 'Status' to draft. This is essential if you want to hold the form submissions for moderation for an administrator to approve before they're published.

How to use Gravity Forms to create a custom post

Storing user-submitted information as normal WordPress posts is fine, but it can clutter up your blog. It's normally better to create a dedicated custom post type for this. For example, if you're creating user-submitted business listings then you can create a 'Business Listings' custom post type. This will add a 'Business Listings' link to the left of the WordPress Dashboard. It's a convenient way to organize the listings, separate from your other website content.

You'll also need to do this if you want to store Gravity Forms entries in a post type created by another plugin. For example, this might be:

  • The 'Documents' post type created by our Document Library Pro plugin.
  • The 'products' post type created by WooCommerce, the 'tribe_events' post type created by the Events Calendar plugin, or any other custom post type.

You'll need a free plugin called Gravity Forms + Custom Post Types for this:

  1. Get the plugin and install it on your WordPress site.
  2. (Optional) If you don't already a custom post type for this purpose, create one now. I recommend the free Pods plugin for this. For full instructions, please see my tutorial about how to create a custom post type, then return here and continue this tutorial.
  3. Use the how-to instructions on the plugin page to map your form fields to the custom post type.

Step 3 - Display user-submitted data in a table on the front end

So far, you've learned how to use Gravity Forms to let users submit information via your website and save it as a post, document or custom post type. The next step is to display the user submitted posts on the front end of your WordPress site. You'll need a dynamic table plugin for this. We have 3 table plugins, so choose the one that lists the type of content that your users will be submitting:

All three plugins list user-submitted information in a searchable, filterable table view. It's the perfect way to display it because each entry is listed in a separate row of the table. Visitors to your website can use the search box to find specific entries, use the filters to refine the list, and sort by any column.

Display WordPress user submitted content posts

How to list user-submitted content in WordPress

  1. Get Posts Table Pro or Document Library Pro and install it on your WordPress website.
  2. Copy your license key from the confirmation page, then enter it on the plugin settings page.
  3. Stay on the settings page, and spend a minute choosing how you want your tables to look and behave.
  4. Next, create a new page. You'll use this to list the user-submitted content from Gravity Forms. Use the plugin documentation to add a table.

Finally, view the page. You'll see all your posts, documents or custom posts (depending on which post type you selected on the plugin settings page) listed in a table on the front end. This is the information that your users have submitted using Gravity Forms. Perfect!

Choosing which items to display

You may wish to add multiple tables to your site, each containing different posts, documents or custom posts. For example, if you're building a WordPress business directory then you might want to display listings from a different business category on each page.

Fortunately, Posts Table Pro and Document Library Pro come with several options for choosing which user-submitted content is listed in the table. You can list items by category, tag, and much more.

File uploads

Gravity Forms comes with a 'Post Image' and ‘File Upload’ field which allow users to upload an image or other file type. There are a couple of ways to display file uploads on the front end with Posts Table Pro and Document Library Pro:

  • If users are uploading images then the easiest option is to add a 'Post Image' field to your Gravity Form and map this to the post/document featured image. You can then display this using the ‘image’ column of the table.
  • If you are using Document Library Pro then you can add the 'File Upload' field to your Gravity Form and use the following snippet to set the document link. Make sure to replace the $form_id and $file_upload_field_id variable values to match the those in the Gravity Form you have created.
    add_action( 'gform_after_create_post', function ( $post_id, $entry, $form ) {
        $form_id = 1; // The ID of your Gravity Form.
        $file_upload_field_id = 6; // The ID of the File Upload field.
        if ( $form_id !== rgar( $form,'id' ) ) {
        $document = dlp_get_document( $post_id );
        $file_url = rgar( $entry, $file_upload_field_id );
        if ( ! $document || ! $file_url ) {
        $document->set_document_link( 'url', [ 'direct_url' => $file_url ] );
    }, 10, 3 );
  • If you are using Posts Table Pro then you can map other file types to a custom field, and display it as a custom field column in the table. Gravity Forms saves the URL of the uploaded file in the WordPress database, and the table plugin will display this as a clickable link when you include it as a column. By itself this may not be ideal, as the link will be very long and won't look very professional. To modify the text inside this link, you can add some code to your site to utilize one of the development filters. For example:
    add_filter( 'posts_table_url_custom_field_text', function ( $link_text, $field_key ) {
        if ( $field_key === 'file_upload' ) {
            return 'Download';
        return $link_text;
    }, 10, 2 );

    In this code snippet, "file_upload" is the 'Custom Field Name' specified in the Gravity Forms custom field, and "Download" is the text that will be displayed to users. Either of these can be updated to fit your circumstances.

If you don’t have a developer who can do this for you then we recommend Codeable.

Can users edit posts after submitting them?

WordPress frontend editor table plugin

Yes, there are two ways that you can allow users to edit the information in the table:

  1. Use Posts Table Pro/Document Library Pro with a front end spreadsheet editor plugin. Add an 'Edit' link above or below the table. Logged in users with the correct role can click this to access a front end spreadsheet editor, which allows them to edit the content of the table. They then save their changes and return to the main table. (Read tutorial.)
  2. Install a WordPress front-end editor plugin such as Editus. People can click through to the single post or document page on your website and edit the information from there. This is important because they can't edit the content from within the table itself. On the single post or document page, they can edit the content as required.

Where to get the plugins

That brings us to the end of our tutorial. You've learned how to use Gravity Forms to allow users to upload information to your website and save it as a post, document or custom post type. You know how to hold these posts for moderation so that they're not published until an administrator approves them. You've discovered the best way to display this information in a table on the front end of your WordPress website. It's the perfect way to create a user-contributed document library, member directory or business listings.

To set it up, you'll need:

I'd love to hear about how you use Gravity Forms for user-submitted content. Do you keep this private or list it on the front end of your website? What sort of data do you collect and display? Please let me know in the comments below.

Get Gravity Forms

Start using Posts Table Pro with Gravity Forms to let users submit posts & display them on your website.


  1. Paul
    May 23, 2022 Reply

    thanks for the great tutorial. I also have a question related to allowing users to edit posts: is it possible (with editus or something else) to send an email to the post submitter (in my case an employer who submitted a job) with a link that allows them to edit only the specific post they submitted?

    • Edge
      May 23, 2022 Reply

      Hi, Paul. Thanks for your comment and kind words. You could look into using plugins such as Advanced Access Manager or the free User Role Editor to set logged in user and/or user role permissions to edit/write on only the posts they submitted. As for the sending of an email with a link to a page that would allow a logged in user (who has the correct permissions) to edit their posts from the front-end, I suggest you contact support for the plugin that would allow for front-end editing (e.g. Editus or Universal Frontend Editor) for the best advice about going about this, which to me sounds like it would need to be a customization. Cheers.

      • Paul
        May 24, 2022 Reply

        thanks for the quick reply. I'm actually looking to allow non registered users to edit posts they submitted as I'm trying to build something that doesn't require user accounts. The submitter would receive an email with secure link to edit just that post (there are already a number of job boards that function that way but as far as I can tell they're not on wordpress hence why I wonder if it's even possible). I'll contact those plugins' devs directly for more info, thanks again.

        • Edge
          May 24, 2022

          Thanks for your reply and understanding, Paul. I'm glad I could help! The users that you want to allow to submit and then edit posts on your site not being registered nor logged in would of course make such an option trickier to implement. Looking into and enquiring with WordPress auto-login plugins such as Autologin Links might help you further. I hope this helps point you in the right direction. Thanks.

  2. JD
    October 7, 2021 Reply

    Great tutorial - interesting use cases. Just wondering if Gravity Forms can be hosted on one site and if it can create posts on a different site. Ideas?

    • Jae Narra
      October 8, 2021 Reply

      Hi JD, thanks for your comment.

      If you are looking to recreate what we have discussed in this article, then both Gravity Forms and either Posts Table Pro or Document Library Pro needs to be installed/active on the same site.

      However, you can use our plugins separately with Gravity Forms.

      Please let us know if there's anything else we may help you with. You may also reach us via our Support Center. Thank you.

  3. Fiona Storey
    March 10, 2021 Reply

    Hi. Thanks for this tutorial. I am trying to create a form to upload to the Documents Library Pro. I am almost there, but haven't been able to map the categories so that they are entered automatically. The Post Category in Gravity Forms only offers categories in the Posts Categories and not those in the Documents Categories. I tried entering categories with the same names in the Post Categories, but it didn't map to the categories in the Document. Please can you advise?

    • Paola Pesantez
      October 6, 2021 Reply

      Hi Fiona, I have been trying to upload pdf files to my Documents Library Pro using Gravity but I haven't been able to. Do you mind sharing how you did it? Also, can you achieve that by selecting a particular category?

    • Edge
      March 15, 2021 Reply

      Hi, Fiona. Thanks for chiming in. I'm glad to hear this was helpful to you.

      I know what you mean, and this is because the Gravity Forms plugin works with the default (blog) "posts" post type on your site. You should use this with the Gravity Forms + Custom Post Types add-on mentioned to work with the Documents Categories of the "dlp_document" post type that Document Library Pro creates on your WordPress site.

      I hope this makes sense and helps. Please let me know how it goes. Cheers!

      • Fiona Storey
        March 29, 2021 Reply

        Hi. Thanks for your reply. I sorted out the categories, but then tried to do tags in the same way, but that didn't work. The tags didn't go into the post, so it appeared to be an issue with the Gravity Forms + Custom Post Types add-on. I put a support request on the WP plugin page but apparently they only offer support if you are a customer and they haven't responded :-(

        • Edge
          March 31, 2021

          Hi, Fiona. Thanks for letting me know. I'm glad to hear you got the Documents categories sorted.

          I believe the tags aren't working because these are also only meant or used for the default (blog) "posts" post type. For the Documents "dlp_document" post type, I suggest you add/create a custom taxonomy and use that in lieu of tags (see Can I add custom fields and taxonomies to the document library?).

          Please let me know how this goes, and if you have any more questions. You can also get in touch with us via our dedicated Support Center.

  4. Alyssa Durante
    November 16, 2020 Reply

    Is there a way to show logged in users the specific data they submitted? i want each user to be be able to see their respective data, and that data only

  5. Stig Gøran Nordahl
    October 4, 2020 Reply

    This is a great tutorial and it works like a charm for me. The only issue I have is that the file upload is not working for me. In Pods I’m using the field type “File / Image / Video” and Upload limit is set to Single File. In Gravity Forms I’m using a Custom Field with field type “File Upload” and the Custom Field name is the one I made with Pods. I’m able to add a file when filling out the form, and under Forms –> Entries I can see that the file is uploaded and available. The problem is that it’s not located in the post I created under Projects, as set by Pods. If I edit the post I can add a file manually without any issues. In short, it seems everything is working in Gravity Forms and Pods separately, but for some reason Gravity Forms and Pods are not cooperating.

    What can I do to fix this? I’ve looked for a tutorial on this but can’t find one.

    • Edge
      October 7, 2020 Reply

      Hi, Stig. Thanks for letting us know. I'm glad our tutorial is helpful. Sorry to hear you're having difficulty with mapping the file upload field in Gravity Forms to Pods. I hope you'll understand that you need to contact Gravity Forms support to assist you with this. Thanks.

  6. Ryan Bremner
    April 19, 2020 Reply

    Did you have any luck using Gravity forms to populate the wooCommerce Gallery?

    • EJ
      June 18, 2020 Reply

      Hi. Ryan. Sorry for the late reply. I'm afraid this is likely not possible because WooCommerce supports multiple images in the gallery, but doesn't provide a separate ID for each image that you can map a Gravity Forms File Upload field to. It might be best to add additional File Upload fields to your form and manually add these to the product gallery after the product has been automatically created.

      If you discover a way to do this, please let us know so we can update the above tutorial to share it with others, but unfortunately I'm not aware of a way to do it.

  7. EJR
    April 9, 2020 Reply

    This tutorial is great, thank you!

    We need an additional feature, which is that people who submit their info have to 'refresh' it every 6 months. i.e. confirm that they still want to be included in the directory.

    I'm imagining that everyone on the list gets an email every 6 months with a 'click here to stay on the members list' button.

    Do you have any suggestions for this?

    • Jae Narra
      June 12, 2020 Reply

      Hi EJR,

      Thanks for your feedback!

      What you want is not what Posts Table Pro nor Gravity Form are for. You will need to find/search/use a plugin that will allow you to do this to have a developer add it to your site as customization. If you're unsure or don't have a developer who can do this for you, then I recommend that you post a job on Codeable where their pre-approved WordPress experts will send you a quote. We have partnered with them to provide plugin customization for our customers.

      I hope this helps. Should you have any other questions/concerns, kindly fill up a form at our Support Center so we can get back to you much sooner.

  8. Reb
    February 23, 2020 Reply

    Hi Katie,
    Thanks for the amazing step by step explanation.
    Is there any other forms I can use instead of Gravity Forms? I am in a trial phase and I don't want to buy the licence at this stage before I create the exact thing I want.

    • EJ
      February 27, 2020 Reply

      Hi, Reb. Thanks for your comment and I'm glad to hear you find our tutorial useful.

      I understand your concern and hesitation. You can try looking for another form submission plugin that will allow you to submit form data as post or custom post type submissions, but we've only tested this with Gravity Forms and so are sure that it works.

      Additionally, please also note that Gravity Forms has a "30 day refund window on all purchase transactions" (see https://www.gravityforms.com/refund-policy/ ), so you can test both plugins on your site risk-free.

      I hope this helps. Let me know if you have any other questions. You can get in touch with us quicker via our dedicated Support Center.

  9. Brigga
    January 7, 2020 Reply

    I am building a site for online school applications for admission.(group of colleges) The candidates will apply using the form on the front end, data posted on the database and the relevant school admin must be able to pull the applicant information for processing from a front end page. not sure how i can achieve this

    • EJ
      January 20, 2020 Reply

      Hi, Brigga. This tutorial shows you how you can achieve the first part of your requirements of allowing candidates to submit their applications on the front-end, via Gravity Forms, which will be stored in the site's WordPress database as posts or custom post types.

      To implement the second part of only allowing the relevant school admin to pull/view/access the data in the submitted forms, I suggest using our other plugin, Password Protected Categories. Our tutorial, How to Create a WordPress File Manager, shows you how you can use Method 1: Create a custom post type for your documents using Pods to which you would configure Gravity Forms to add/create the form submissions as.

      Further down the tutorial, past Method 3, where we discuss What else can you do with a WordPress file manager?, you'll see how you can use Password Protected Categories to Control who has access to the documents, as well as Let users add documents themselves via Gravity Forms.

      I hope this makes sense. Should you have any other questions, please send us an enquiry via our dedicated Support Center, so we can discuss any details with you and get back to you sooner. Many thanks!

  10. Austin
    August 24, 2019 Reply

    Is it possible to then allow users to "claim" and make future edits to their listings as well?

    • EJ
      September 5, 2019 Reply

      To allow users to edit posts, you would need to use a WordPress front-end editor plugin such as Editus which will allow them to edit the content on a single post/listings page as they can't edit the content from within the Posts Table Pro table itself.

      Alternatively, you can add them as a user to your WordPress site and assign them a user role with a minimum role of Contributor so they can access their own submissions and edit them if needed. You may refer to the WordPress.org article, Roles and Capabilities for user role access details.

Please share your thoughts...

Your email address will not be published.