We compared Gravity Forms and Formidable Pro, and one of our readers requested a tutorial on creating products via submitted forms with Formidable Pro. The ability to create Custom Post Types (CPTs) with Formidable Pro is one of my favorite features, so here we are: How to use Formidable Pro to create products via forms.

I’m going to use WooCommerce in this example, but you can create products via submitted forms with almost any eCommerce plugin, as most all of them use CPTs for products. This is really handy if you allow 3rd party vendors to submit and list products in your store.

As a side note, Easy Digital Downloads has some plugins that will do this for you as well – check out our article on creating a digital marketplace for more information.

Using Formidable Pro to Create Products

Before we start adding things and creating forms, let’s think about what fields we’ll need to create our products. This may be different based on your shop, but most simple products will need a few basic things:

  • Product Name
  • Product Description
  • Regular Price
  • Product Category
  • Product Tag
  • Featured Image

Again, not every store needs each of these, but this is probably a good place to start. You may need to adjust your fields for other product types. Here are some other fields I’d consider depending on your shop setup:

  • Product SKU
  • Sale Price
  • Shipping dimensions
  • Additional images
  • Short description / excerpt

You also may need the vendor name and email address for your own records or to get more information. If you’re paying out vendors via PayPal, you may need a PayPal email address (many people, including myself, use a different email for this).

Once you have an idea of all of the fields you’ll need to have for product creation, we can then move on to building our form and including these fields, then mapping them to the appropriate fields on our product. I’m going to use a simple product in this example as it’s pretty easy to understand. Creating forms for variable product submission or other really detailed product submissions is something that requires a bit more knowledge of WooCommerce to set up, and may not be as applicable to other plugins.

Adding Fields

Now that we know what we’re doing, let’s create a new form for our simple product submission. I’d start with a blank form if I were you rather than a template.

Formidable Create a New Form

Create a New Form

Here’s what I’m using for my fields and the associated inputs:

  • Product Name – Single Text
  • Description – Paragraph Text
  • Short Description – Paragraph Text
  • Product Price – Number*
  • Featured Image – File Upload
  • Vendor name – Single Text
  • Vendor email – Email Address

*When you set up a number field, you can determine a minimum and maximum value, as well as a “step” (increment) under “Number Range”. I set my step to 0.01 so that if people use the up / down arrow for this, it increments by cents.

Obviously you may need more fields, but this will work to start. Don’t worry about creating fields for product categories or tags, as we’ll be able to automatically add them later with a couple of clicks

Formidable Pro Create Product Form

Now that we’ve got the form fields added, we can begin to map these fields to our product fields.

Mapping Fields to Product Data

Once your fields have been created, you can map them to the product fields so that submitting a form will create a new product. Click “Create”, “Update”, or go to the form settings. You can set up any general settings for your field as necessary, but we’re most interested in the tab called Create Posts. Here you’ll want to enable the setting that says, “Create a WordPress post, page, or custom post type with this form.”

Under this tab, we’ll need to map our form fields to the appropriate data. Here are the settings I’ve changed or created:

  • Post Type: Products
  • Post Title: “Product Name” field
  • Post Content: “Product Description” field
  • Excerpt: “Short Description” field
  • Post Password: none
  • Slug: Automatically Generate from Post Title
  • Post Date: Use the Date Published
  • Post Status: Create Draft

Formidable Create Posts

Now we’re ready to add in our product categories and tags. Keep scrolling down and you’ll see a setting for this and custom fields as well. We’ll want to add our categories and tags as new checkbox fields. We could add product type as well, but since we’ll only be creating simple products (the default type), this won’t be necessary.

As a note for advanced users that want to accept all sorts of product submissions, you could add the product type field as a new checkbox, then edit it to become a dropdown or radio button so only one selection is allowed. You could also then base some conditional logic around this (such as showing fields to enter variations if a variable product is selected, etc). However, thats a bit more involved than what we’re doing here ๐Ÿ™‚ .

Adding new fields

Also note in my screenshot that we’re going to add some custom fields. I want my image to be set as the featured image, so I’ll map that field to the _thumbnail_id. We’ll also want to map our price to a custom field, so we’ll have to add another field and click “Enter New” since the price meta key is not available to select. When you click “Enter New”, enter _regular_price, then map that to your form’s product price field.

Formidable add custom fields

If you’re allowing for a regular price and sale price in your form, you could do the same thing with the _sale_price meta key.

If you do want to add more fields, such as SKU fields, I’d recommend checking out this helpful list of WooCommerce form fields that a Formidable Pro user posted. You can also dig through the WooCommerce product meta keys to find the ones that you need.

Display Your Form & View Submissions

Last step! Don’t forget to display your form on a post or page so that vendors or anyone submitting a product can access it. You can use the “Add Form” button to do so, which will insert a Formidable shortcode like this: [formidable id=7 title=true description=true].

Formidable WooCommerce Product Submission Form

Now anyone can submit a form to create a WooCommerce product! Don’t forget to include fields for the vendor’s information in case you have questions or are using a plugin to track sales for your vendors.

There’s only one minor hiccup with our form. If you view your products list, you’ll notice that a form submission successfully creates a new product, but it appears that the product does not have a price:

Formidable new Product draft

New Product Draft

That’s because our form is using the _regular_price meta key, but the product list uses the _price meta key. We can’t use our form’s “Price” field for two custom fields / meta keys, so we can’t use it for _price and _regular_price. However, we do not want to change this. If you view the product page, the regular price is there:

Formidable WooCommerce Product Price

When you click “Save Draft” or “Publish”, the _price meta will be set. You’ll now see this displayed in your products list:

Formidable Pro Updated WooCommerce product

If you originally used _price instead of _regular_price in the form, this would be displayed in the products list, but then you’d have to remember to enter it yourself on the product page before saving or updating the product. You could use fields for both in your form if desired, but that may confuse merchants when they use the form, as they’d have to enter price twice. It’s up to you how you’d like to handle this though ๐Ÿ™‚ .

That’s all there is to it! Your shiny new form will allow vendors to submit products to your shop externally for you to review and publish as you choose.

Posted by Beka Rice

Beka Rice manages the direction of Sell with WP content and writes or edits most of our articles to share her interests in eCommerce. Or she just writes as an excuse to spend more time jamming out to anything from The Clash to Lady Gaga. Who knows.


  1. Hi! Great post! I have been able to do everything you dscribe but I need one more thing and I have not been able to do it. I want to add images to the product gallery, so I created a file upload field and assigned the ID: _product_image_gallery. The image files get uploaded but they are listed in the Media Library as โ€œunattachedโ€. Is there something i’m missing?


    1. Hey Gustavo, I haven’t used this, but maybe you could try _additional_image_ids instead for the custom field. If not, I’d try posting in the Formidable forums as I’m sure a lot of people would be curious as to how you could make that work.

      1. Thanks Beka! didn’t work, so I will ask in the forums!

        1. Yeah, unfortunately that’s not one I’ve had to use myself, but thanks for letting us know! Would love to hear it if there is a solution ๐Ÿ™‚

  2. Thanks so much for writing this Beka! This was so clear, concise and helpful – amazing.
    We’re happily using Formidable Pro, Woocommerce and Xero now, to enable a client to run his second-hand phone and computer dealership. I was stuck briefly on auto-creating SKU’s until I read it again and followed the link. (Just create a new Custom Field called _sku and map it, if anyone’s wondering.)
    Again – thanks a million!

    1. Hey Sam, I’m so glad to hear it! And thanks for sharing the details about SKUs, it’s definitely cool to hear how people are using this ๐Ÿ™‚ .

  3. Hi Beka

    Great posts here in your website, thank you for all your help.

    With FormidablePro users can include / edit / remove WooCommerce products in frontside?

    Any way to keep all product submission pending for approval instead automatically approved?

    All the best!

    1. Hey Alex, there’s no way for users to edit or remove products from the frontend, but you can set new product submissions to “Draft” instead of publishing them automatically. This way you can review them first – the setting is in the same place where you set all post fields.

  4. Hi Beka.
    Excellent article – will be experimenting with this in the near future.
    My question is more about integrating a formidable form with a woocommerce order.

    For instance, in my ‘health professional’ website, a shop manager can create a product in the usual way (although I’ll be trying your way soon enough)
    A customer (in this case one of the health professionals at a clinic, say) would make product choices for one of the people in her care.
    So, at the checkout stage, I’d like to be able to include a Formidable form view that the health professional can choose a patient name and assign that detail to the order.
    To me, it seems that there’d have to be some way of hooking up the form view as a custom checkout section, perhaps in ‘woocommerce_after_order_notes’ or suchlike.
    I’m really looking for the code that might allow me to hook the form view in that area.
    Cheers from Melbourne Australia.

    1. Hey JR, sounds like you’d need a custom post type (or similar) to track patients, as they’re not customers here but “data”, which would be the more complicated part of this implementation. You’d then need to loop through these to display them (probably with a searchable dropdown) on the checkout page.

      If you’d already need to have the data architecture developed, then you’d probably want to have that ‘form’ field added via custom code as well (and as a sidenote, would probably want to require login at checkout before you’re displaying a searchable, public patient list).

      1. Hi Beka,
        I ended up writing some custom PHP that grabbed the FMPRO data (which, I might add, is stored in the most inconvenient fashion).
        I then made a WooCommerce hook to add the data to the Order.
        It was clunky because the client really didn’t want to spend the money on a best practice solution.
        I have to say that my experience with the FMPRO help desk has been less than comfortable. Despite signing up for the full package, every time I had a question, they managed to either shift it out to ‘out of scope of support’, or give me a ‘read the manual’ kinda response.
        I don’t think I’ll be renewing my license nor recommending it in the future.

  5. What about variable products…there is possible to have that too ?

    1. I’m not entirely sure, but worth asking the Formidable Pro team — there’s a helpful list of product meta that could be used, which lets you set the type as variable, but I’m not sure if you can use the form to set up each variation. If not, the Product Vendors plugin gives vendors the ability to create and manage products from the shop’s admin (they have limited access).

  6. Very nice. I have been looking into this recently. I found a thread in formidable’s site that also discusses this, but this article is very easy to follow.

    Question: Is it possible to use a formidable field to upload and mp3 to the media library and then makes its link be the url for a downloadable WooCommerce product?

  7. Sorry, I forgot to ask this in my last post (and turn on email notification of replies).

    Is it possible to force some appended text to each product short description created by a formidable field? This appended text would be an audio player shortcode, and the url would need to be the url of the uploaded mp3 file in my last post to this thread.

    So each product short description would have the same shortcode added to it, but the url in each shortcode would be unique to the product. Is this possible?

    1. I don’t think setting an upload as the downloadable file would work, as the database contains a hash for the downloadable file that you’d also need to add – not impossible, but tricky to do / requires custom code. The shortcode thing is probably possible, but also probably a moot point if you can’t allow the downloadable product file to be set.

      I might try using something like the Product Vendors plugin instead to let vendors access a very limited admin area.

      1. Beka,

        My apologies for the very late reply. So to your knowledge, without extensive custom coding, there’s now way to use Formidable Forms to create a ready to sell downloadable product automatically? I’d have to manually upload to the media library the file they upload through the form, then manually use that uploaded file’s url as the download link?

        I’m also checking out the other plugins you referenced.


        1. Correct, I don’t think you could create download links for the the product via the frontend form without customization.

  8. Hi, Thanks for the post. I can do this successfully. But there is one thing. I set it to ‘automatically publish’. When I submit it, I can see product page immediately. But it doesn’t show in ‘Shop’ page which is a summary of all products. Then I go into ‘Edit Product’ page in wpadmin, and click ‘update’. Then it shows in Shop page. Is there anything I can do to make it show in Shop page without going through the ‘update’ page process ?

    When I look at the Edit Product page, it’s already published. I don’t know why it’s not showing in Shop page.

    1. Not sure on this one, I’d recommend checking with Formidable’s support team ๐Ÿ™‚

  9. Hi there,

    DO you have any suggestions or documentation on how to actually create products with variations please? We have 4 variations to create, based on color and width.

    It seems like the product is not being created as variable. Then, how would one go into inputting variation data from form to woocommerce?

  10. Good post – I loved the points . Does anyone know where my company could possibly access a sample IRS W-3 version to fill in ?

  11. Great tutorial,
    You mention in the beginning the part of paying vendors, but it is not cover in the tutorial.
    Any quick pointers on that?

  12. Hi,

    thanks for the tutorial!

    Is there a similar solution for Gravity Forms? I want to let my users add products with gravity forms and assign these products to their vendor profile.

    Unfortunately I find no solution for that ๐Ÿ™

    1. Afraid I haven’t either Simon

  13. Hi Beka,

    I have a form like this, also with the ability to add categories and tags. But when I want to edit an entry in the front end, the category is not selected anymore, and the tag field shows the url of the tag archive instead of the tag name. Does this sound familiar to you?

Comments are closed.