Front-End Post Submission Form

Create a WordPress form for front-end post submission and set the needed post-submit actions with the help of JetFormBuilder.

Why You Need a WordPress Front-End Post Submission Form

Allowing users to submit posts right from the front end makes the work with the WordPress website even more efficient than it was before. Engage users to add more and more exciting posts. 

Using this feature, you can allow users to submit their products and ads to the marketplace website, enter a competition, submit art gallery work, and, certainly, post guest articles on your blog. 

Create a WordPress form and select needed post-submit actions to freshen your website. Use the JetFormBuilder plugin to simplify the process.

Top WordPress Front-End Post Submission Form Features

  • Create two forms, one for posts submitting and the other for their editing;
  • Add the only fields you need and connect them with the created meta fields, terms, and other vital post elements;
  • Style up the form to meet your requirements;
  • Set the post-submit actions to update the post, redirect to the page, and send an email about the form submission right to the admin’s email;
  • Use Conditional Logic to show or hide certain fields under the set conditions;
  • Adjust JetFormBuilder presets so that users do not fill in fields that they have already completed before.

How to Create a WordPress Custom Front-End Form

Before we start, make sure you have the following plugins installed and activated:

  • JetFormBuilder — build a form, edit the post submit actions, and add a captcha if needed;
  • JetEngine — create a CPT, add custom meta fields and taxonomies; 
  • JetEngine Profile Builder module — make an account page, add posts, and edit post templates;
  • Elementor — add the created form into the editor to finalize the customization, style up the page, and publish it right away. Or use Gutenberg block editor, as it is fully compatible with the JetFormBuilder plugin; it’s up to you.

Create custom post type

Proceed to the WordPress Dashboard > JetEngine > Post Types. Add a new custom post type by pushing the “Add New” button, or open the one that you have created earlier.

events cpt in the list

Once the custom post type editor is opened and General Settings are adjusted, scroll down to the Meta Fields tab.

As your form will include fields for completing, some of them will repeat the CPT meta fields you edit here. That’s why you need to set up the needed fields.

Let’s take a look at the example fields.

events post type meta fields

Please ensure that the needed Supports are enabled in the Advanced Settings tab. We especially need Title, Excerpt, Thumbnail (Featured Image), and Custom Fields in the described case.

events post type supports

After implementing the changes, press the “Add/Update Post Type” button.

Add taxonomies to custom post type

Now let’s build some categories for the CPT posts. Move to the WordPress Dashboard > JetEngine > Taxonomies. Open the taxonomy you have already created, or click on the “Add New” button to build a new one.

jetengine custom taxonomies

Take into consideration that the taxonomies you build should be connected with the previously mentioned post type. To do so, choose the needed option in the Post Type field.

Don’t forget to press the “Add/Update Taxonomy” button after all the settings have been adjusted.

format custom taxonomy editing

Create profile page with JetEngine Profile Builder

The next step is enabling the Profile Builder. Navigate to the WordPress Dashboard > JetEngine > JetEngine, toggle the Profile Builder and press the “Save” button. Now the feature is activated.

profile builder switcher

Set the Profile Builder according to your needs, or import the premade configurations. Head to the Skins Manager and unfold the Presets. They add pages and templates automatically. 

Select the desired preset and hit the “Import” button.

jetengine skins manager presets
  • User profile with editable content — allows registered users to publish and edit forms. We import this preset as we work with the posts only;
  • Editable user settings page for user profile — adds user settings subpage to Profile Builder.

So we select the first option. Move to the WordPress Dashboard > Pages to check if the new page was created. The “Account” page is now displayed here.

preset account page

Besides, you can check the WordPress Dashboard > Templates > Saved Templates. Here, if the Preset was imported, the new templates would appear.

elementor preset templates

Also, you can see one added listing if you proceed to the WordPress Dashboard > JetEngine > Listings.

user posts item listing

Go to WordPress Dashboard > JetEngine > Profile Builder to adjust the settings.

Check that the “Account” option is selected as the Account Page; enable the Users page, and Single user page if desired.

You can also adjust the following fields, but it’s unnecessary in the described case.

profile builder pages settings

Open the Account Page tab. 

Work on the initial fields and add some subpages to the account page. Check the following video to learn how to do it without any effort.

profile builder account page settings

Take a look at the example subpage settings. We fill in a Title and Slug.


The Slug should contain no capital letters, spaces, or special symbols. Use only Latin letters and “-”, “_” symbols to separate the words. Stick to this step as it is necessary for the proper saving of information in the database.

Select a Template by typing its name in the particular field and move to the following Hide from menu toggle. It should be left disabled if you want to display the current subpage as a menu item in the Profile Menu widget.

Moreover, you can select user roles for which the page will be available in the Available for the user role field.

manage my events subpage

After building all the required subpages, push the “Save” button.

Add new form for submitting posts

Go to WordPress Dashboard > JetFormBuilder > Add New.

jetformbuilder new form

Give a title to the form and delete the default fields, except for the Hidden one.

Make sure that its Form field name is set to ‘post_id’ in the General tab and the “Current Post ID” is selected as a Field Value in the Field Settings; we’ll need it later.

hidden field settings in the add event form

Hit the plus-shaped button to add a new block. Add all the needed fields to the form. 

Firstly, we add a Heading Field. This one will serve as a section title.

basic info heading

We begin the section with a couple of Text Fields. We suggest you fill in the Form field name with the same meta field values you have added to the CPT meta fields. This way, you will not get confused when connecting fields.


Mind enabling the Is Required toggle for the fields you want to make obligatory.

basic info text fields

The following fields we place in the form are Select Fields. We choose the “Terms” option in the Fill Options From field and define the needed Taxonomy as a source.

Thus the user will select between categories and attach a post right to the needed one.

select fields with terms source

We add one more Heading Field and add one more Select Field. This time we set the “Manual Input” source in the Fill Options From field.

location and time part of the form

Fill in the Label and Value fields for all the options you want to add in the selector.

Hit the “Update” button to save the result.

format manual options

Another feature we will use in the current form is the Conditional Block. We continue building the form with the Text Field displayed under the set conditions.

Let’s press the arrow-shaped button to proceed to the editor and hide the block when the “Live online” option is selected.

location conditional block

In the first, Type field select the “Hide the field if…” option and move to the Field. Here you should choose the compared field.

Pick the “Contain text” Operator and define the needed Meta Field Name as the Value to Compare.

To find out more info about the conditional logic in JetFormBuilder form fields, watch our video with the detailed use case.

Mind pushing the “Update” button after implementing the changes.

location conditional logic

We add two more Text Fields and move to the next section. It will be separated from the previous one by another Heading Field.

Place the Radio Field in the form editor. In the Fill Options From drop-down menu, we choose the “Manual Input” and push the “Manage Items” button.

tickets part of the form

As the new window is displayed, press the “Add New Option” button and fill in the Label and Value fields.

For example, we will adjust two such fields; one is for the “price,” and the other is for the “free” option. However, you can add other options you need as your form may differ from the one described in the tutorial.

Mind clicking the “Update” button after making the changes.

price radio field with manual options

The following field we add is another Conditional Block with the Text Field inside it.

The main goal now is to hide the Text Field we have added once the “Free” option in the previous field is picked. So select the Conditional Block and click on the arrows-shaped icon to open the settings window.

price conditional block

Push the “New Condition” button to work on the first condition. Select the “Hide this field if…” as a Type and select the field you want to hide in the Field drop-down list.

Also, set the “Contain text” option in the Operator field and define the Value to Compare.

free event conditional logic

One more condition we need to set is displaying the following field if the “price” option is picked. So, push the “New Condition” button one more time.

Choose the “Show this field if…” Type and select the needed option as the Field.

The Operator should be picked as “Contain text,” and Value to Compare is “price” now.

price conditional logic

Save the changes by clicking on the “Update” button and continue to add new fields if needed.

We add one more Heading Field for the next logical part of the form.

We also place the Media Field for users to upload the desired images to the post. Don’t forget to work on its Field Settings in case of need.

image part of the form

The last part of the form will include another Heading Field, Textarea Field, and a WYSIWIG Field representing the excerpt and the content of the future posts.

Don’t forget to finalize the form with an Action Button and adjust it as desired.

description part of the form

However, the form is not ready yet. To adjust it thoroughly, head to the JetForm tab.

Work on the Form Settings and Captcha Settings if needed and proceed to the Post Submit Actions tab. 

Customize post submit actions

The first action we will adjust is “Insert/Update Post”, you can pick it from the drop-down menu. It is essential in the current form, so mind adjusting it correctly.

Press the pencil-shaped button to edit the action.

add event form post submit actions

Select the needed Post Type in the appeared pop-up and set the Post Status to “Published.”

In the Fields Map, there are the fields you have added to the form. It will link the form fields with the specific meta fields.

Leave the “post_id” field empty and work with the following fields. 

We select the “Post Title” as the Event title and move to the Organizer field. This field should be connected with the matching meta fields you have created earlier during the post type editing. 

To connect them, choose the “Post Meta” option in the first selector and complete the second field with the needed Meta Field Name.

insert update post submit action editing

As you remember, the next Type of event, Event category, and Format of the event fields represent taxonomies. That is why we pick “Post Terms” and specify the taxonomy in the following drop-down menus.

post terms fields map

Complete the following fields with the corresponding source values.

post meta fields map

When you get to the Media Field, you should select the “Post Thumbnail” option as a source. We choose the “Post Excerpt” and “Post Content” options in the following Textarea and WYSIWYG fields.

That’s it with the “Insert/Update” Post Submit Action, so hit the “Update” button.

image and descriptions fields map

Then click on the “+ New Action” button to add another Post Submit Action, “Send Email.” Whether you want to adjust it to get a notification once the user has added the new post is entirely up to you.

Complete the fields with the required data and press the “Update” button.

send email action editing

The last post submit action is “Redirect to Page.” If desired, you can create one by pushing the “+ New Action” one more time.

Complete the Redirect to field. The new field may appear depending on the source you choose. For instance, we select the “Static page” option, so we complete the Select page field with the desired page.

Moreover, you can work on the Add query arguments to the redirect URL and Add hash to the redirect URL fields.

Don’t forget to press the “Update” button once all the adjustments have been made.

redirect to page action editing

Navigate to the General Messages Settings, where you can change the default notifications or leave them “as is.” 

Finally, click on the “Publish button to save the form.

add event form general messages settings

Create form for posts editing

There is no need to create one more similar form that will edit posts, as we can duplicate the one for post submitting we have just built. 

Head to the WordPress Dashboard > JetFormBuilder > Forms and hover on the newly created form. As the “Duplicate” button appears, click on it, and the copy will be added to the list.

jetformbuilder duplicating form

Now you can press the “Edit” button displayed once you hover over the copy.

jetformbuilder edit copy

Change the title of the form and proceed to the Hidden Field

Leave the General tab of the block settings and move to the Field Settings.

Select the “URL Query Variable” option in the Field Value drop-down menu and paste the “_post_id” value in the Query Variable Key field.

Besides, work on the Advanced tab to add the CSS Class Name

If you work with Gutenberg only, you can also install and activate the JetStyleManager plugin to style up the form according to your wishes. However, we consider the case with Elementor so that we will adjust the style settings a little bit later, right in the Elementor editor.

hidden field settings in the edit event form

Also, remember to change the Field Label of the Action Button.

update action button settings

Go to the JetForm tab to work on the general form settings. Customize the Form Settings and Captcha Settings if needed and move to the Post Submit Actions.

Configure post submit actions

We also need to adjust the “Insert/Update Post” action, so press the pencil-shaped icon to open the editing window.

post submit actions edit button

This time choose the “Post ID (will update the post)” option in the post_id field of the Fields Map.

All the other fields should be left without changes. Click on the “Update” button to save the changes.

insert update post submit action post_id fields map

The following post-submit actions can also be left or deleted as they are not necessary for the correct work of the form. 

Go to the Preset Settings and activate the Enable toggle. We do it to save the data that was already completed in the fields. So, there is no need to retype the info once the user gets to the editing.

Set the “Post” as Source as we are working with CPT, and select the “URL Query Variable” option in the Get post ID from list.

preset settings in the form switcher

We need to paste the ‘_post_id’ value into the Query variable name to get the information from this particular post. 

The following selectors are the same form fields we have added before. So now we build a connection between form fields and default/custom meta fields.

Select the “Post ID” option for the ‘post_id’ field, set “Post Title” as ‘event_title,’ and pay attention to the following ‘organizer’ field.

This one refers to the custom post type meta field. That’s why we need to pick the “Post Meta” option and define the required Meta Field Name in the appeared field.

The following ‘type_of_event’ source in the form was selected as the taxonomy, so set the “Post Terms” option in this field. Then define the needed taxonomy in the selector.

Repeat the same steps for similar fields.

the first part of preset settings

Besides, pay attention to the ‘select_an_image,’ ‘summary,’ and ‘event_description’ fields of ours.

The first field is connected to the “Post Thumbnail,” the second to the “Post Excerpt,” and the third one to the “Post Content.”

the second part of preset settings

Mind changing the General Messages Settings default values and save the form by pressing the “Update” button.

edit event form general messages settings

Add forms to templates

Go to the WordPress Dashboard > Templates > Saved Templates and open the “Add Post” template editor.

add post template edit button

The Profile Menu is already added to the page. These subpages are taken from the Account Page settings we have edited in the Profile Builder.

If you remember, we have added four subpages; however, the “Add New Post” and “Edit Post” are set to be hidden from the menu, so there are only two subpages.

Drag the JetForm widget to the page. Select the form for the post submitting in the Choose Form drop-down menu.

You can also adjust other features in the Form Settings and work on the Style tab settings if needed.

Mind pushing the “Update” button once all the adjustments have been made.

add event form in template

Let’s check the result on the front end. To do so, we have added a special Button in the header that links to the Profile page.

By pressing the “Dynamic Tags” button next to the Link field, you can select the “Profile Page URL” option under the JetEngine title.

Pick “Add New Post” as Profile Page in the appeared tab and leave the default “Queried User” Context.

Hit the “Update” button to save the changes.

button to the profile page

Return to the WordPress Dashboard > Templates > Saved Templates and select the “Edit Post” template for editing now.

edit post template edit button

Now the same steps should be taken. Add the JetForm to the page and pick the second form we created, responsible for post editing.

Proceed to customize Form Settings and the Style tab to get the desired form appearance. You can copy and paste the style of the “Add Post” form to receive a similar page appearance.

Press the “Update” button to save the template.

edit event form in template

To see the data you have put in the form on the front end, head to the WordPress Dashboard > JetEngine > Listings.

Find the User Posts Item listing created after we have imported the preset. Now we push the “Edit with Elementor” button to open the editor.

user posts item listing

Begin with the Listing Item Settings. Press the arrow on the Elementor Dashboard and open the Listing Settings tab.

Ensure that the Listing source is set correctly and the needed option is selected in the From post type selector.

For instance, we select the “Posts” as the Listing source and specify it in the following drop-down menu.

user posts item listing settings

Now you can push the “Update” button and refresh the page to pull the example post from the source.


Check whether the picked source contains any posts. Otherwise, there will be no data seen in the listing item.

events listing

As it is preset, the listing already includes Dynamic Image, Dynamic Field, and Dynamic Link widgets.

Leave the default widgets or add more items according to your wishes.

Currently, we will delete the “Edit PostDynamic Link button. To meet our needs, we add the Dynamic Terms widget to pull out the event’s format, the Dynamic Field widget to display the date and time, price, and a summary of the event. 

Don’t hesitate to add the widgets you need at the moment. The data will be pulled out automatically and show the required post information if you are using dynamic widgets.

We also set the Fallback for the ‘price’ field if the event is defined as free. Besides that, we have enabled the Customized Field Output to complete the Field format with the default value displayed before the price number.

price dynamic field

As we have deleted the “Edit Post” button, let’s add one more Dynamic Link. Begin with finding and selecting the “Profile Page” from the Source menu.

The Profile Page field should also be completed; this time, pick the “Edit Post” option.

Besides, don’t forget to change the Label.


For the correct work of the link, head to the Add Query Arguments toggle and enable it. Once done, paste the ‘_post_id=%current_id%’ argument in the Query Arguments field.

The ‘_post_id’ is the same key we have entered during the form customization, and the ‘current_id’ is the macro that returns the current post ID.

Proceed to other settings and style up the listing according to your preferences. 

Once everything is ready, don’t forget to update the listing item by pushing the same name button.

completed query arguments

Return to the WordPress Dashboard > Templates> Saved Templates and open the “User Post” template editor.

Make certain that this template looks precisely like the rest of the templates you are working with.

Though this time, instead of the form, we add the Listing Grid widget and pick the “User Posts Item” in the Listing field.

Then you can also change the Column Number and Posts number and work on the gaps in the Style tabs.

That’s it; push the “Update” button.

users posts item listing in template

Proceed to your website and click on the button to open the form.

events website home page

Now you can complete all the fields and submit a new event. Pay attention that we create an online event, so the location becomes hidden once we select the “Live online” option.

The same situation is with the price of the tickets. If we choose the “Price” option in the radio field, the “Enter min. price” field appears. And once the “Free” option is selected, there are no additional fields for completing.

submission form on the frontend

Once you push the button, the post becomes live. The redirection also works fine, as we are on the Account page now.

Let’s press the “Edit” button and work on the post we have created.

You may also notice a post URL at the bottom of your screen on hover. The post ID is displayed as a slug.

events on the frontend

All the information is already completed in the editor as we used Presets. That’s why you don’t need to enter the data again; you can just change the desired fields.

editing form on the frontend

So, as you can see, after the form submission, the information has been changed.

edited event on the frontend

Now let’s check the entered information in the CPT you are currently working with. So, we head to the WordPress Dashboard > Events and open the editor of the post we have just added and edited.

new post added to cpt

You can see that the fields are completed with up-to-date information. We nailed it; not only the meta fields are completed with data, but also the taxonomy tags, featured image, excerpt, and the content of the post.

new post with completed data

That’s it; the form has been completely set, and now you know how to create a WordPress post submission and editing form.