Ninja Forms Front-End Posting - WordPress Plugin
Let users publish content just by submitting a form! Completely configurable including post type, title, even categories and tags. Set post status, author, and much more!

Plugin Features
User-generated content isn’t just valuable, sometimes it’s a must-have for what you need. Want students to be able to post content to your website? Want customers to be able to leave product reviews and ratings? Need authentic social proof straight from your users?
There are a lot of reasons why you might want user-generated content on your WordPress website. There are probably just as many reasons why you don’t want users to have access to your WordPress admin.
Specifications:
| Release date: | 11-10-2019 | |
| Last updated: | 24-08-2026 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | Authoring & Content for Ninja Forms | |
| Compatibility: | W5.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | Ninja Forms | |
| Rating: | ||
Share with your friends!
How to Set Up Ninja Forms Front-End Posting to Accept Content Submissions from Your Site
Ninja Forms Front-End Posting is useful when a visitor needs to submit content through a standard form and WordPress should turn that submission into a post, page, or custom post type entry. This guide focuses on the actual workflow rather than marketing copy: which fields to prepare, how to configure the Create Post action, which post status to use, how to connect the form to categories, tags, and custom fields, how to verify the result, and where problems usually show up.
The add-on is especially useful for sites that accept guest posts, directory listings, classifieds, event submissions, community contributions, and internal portal content. Its strength is not just that it collects form data, but that it works through standard WordPress mechanisms: post types, authors, publication status, taxonomies, and metadata. As a result, the submitted content does not remain just another row in a submissions table. It becomes a real WordPress object that you can manage in the admin area, use in your theme, display in archive templates, and connect to other plugins.
Below, we will walk through a practical example using a form that accepts event submissions for a directory. It shows how to map Ninja Forms fields to the title, description, date, location, category, and moderation workflow. If your site accepts articles, reviews, classified ads, or contractor profiles instead of events, the logic stays the same: first design the content structure, then build the form, then configure the publishing action, and only after that think about front-end output.
Create Post action creates a WordPress post, and the editor reviews the result before publishing.How Form-to-WordPress Publishing Works
In a standard form, data is stored as a submission: the name, email, message text, selected list items, and other values can be viewed in Ninja Forms submissions, sent by email, or exported. Front-End Posting changes the final destination of that process. The form gets a Create Post action, and that action uses the field values as source data for a WordPress object. The form title field becomes the post title, a large text field becomes the post content, a list can assign a category, and separate fields can be stored as custom meta.
It is important to understand the difference between "show submissions on the site" and "create posts from submissions." Ninja Forms can display submissions in a table through a separate mechanism, but that is not the same as publishing user content. A submissions table works well for a reference list, an application log, or an internal data dashboard. Front-End Posting is what you use when the result needs to participate in the standard WordPress system: it should have a URL, status, author, categories, tags, archive, single post template, and editorial review options.
Inside the form, this looks like a three-level chain:
- Form fields collect user data: title, text, contact information, category, image, date, city, or any other value your site needs.
-
The
Create Postaction maps fields to WordPress: it selects the post type, pulls merge tags from fields, and assigns the status, author, taxonomies, and meta keys. - WordPress creates the content object: the post appears in the admin area alongside regular content and can then be reviewed, edited, published, or deleted.
This architecture gives you flexibility, but it also requires care. If you immediately set the status to Published on an open guest submission form, any visitor will be able to place text on the site without editorial review. If you enter the wrong meta key, the value may still be saved, but your theme or directory plugin will not recognize it. If you let users choose categories without restrictions, they may submit content to the wrong place. For that reason, it is better to treat the setup as an editorial workflow, not as a "drop in a form and forget it" task.
Working principle: first decide what kind of WordPress object should appear after submission, and only then build the form. Front-End Posting does not replace site structure planning. It connects a form to a structure you already understand.
What the Add-On Actually Creates
According to the official documentation, the Front End Posting action can create standard posts, pages, and registered custom post types. That means the plugin is not limited to a blog. If your site already has a post type such as event, listing, job, property, or another object created by a theme or third-party plugin, you can use it as the target as long as it is properly registered in WordPress and appears in the action settings.
The content is created through merge tags. These are Ninja Forms placeholders that pull the value of a specific field and insert it into the action setting. For example, a field called "Event Title" can be inserted into Post Title, a field called "Description" into Post Content, and a field called "Short Summary" into Post Excerpt. These settings do not have to contain only one merge tag. You can also add regular text around it if you need a formatted template.
Another part of the logic involves taxonomies. Standard posts can use categories and tags, while custom post types can use their own taxonomies if those are registered and supported by the selected post type. The add-on also lets you add custom meta: you enter a meta key and map a field value to it. This is critical for directories, events, and classifieds, where structured data matters just as much as the long-form text.
Why This Is More Than Just a Guest Form
The most common implementation mistake is thinking about the form only as a nice public interface. In practice, the form becomes an entry point into your editorial system. The quality of the fields determines the quality of the future post. If you give the user one large "Description" field, the editor will later have to manually pull out the date, price, city, link, and conditions. If you split those values into separate fields and map them to meta keys in advance, the site can use them in filters, templates, output blocks, and search.
That is why Front-End Posting works best when the content has a clear structure. A guest post may include a title, body text, author, category, and image. A contractor directory entry may need a company name, city, service, contact info, description, website, and review status. An event listing may need an event title, date, location, description, age restriction, and image. The more precisely you design that structure, the less manual cleanup you will have after submission.
Who This Content Intake Workflow Is Best For
Ninja Forms Front-End Posting is a strong fit for administrators who already use Ninja Forms and want to add content submission without bringing in a separate large portal plugin. If the site needs one or more forms that turn submissions into posts, the add-on fits naturally into the existing Ninja Forms interface: fields, email actions, success message, conditional logic, and form publishing through a block or shortcode.
Typical use cases look like this:
- Guest posts and expert columns. The author submits a title, text, bio, and image, and the editor receives the content as a draft or pending approval.
- Directories of businesses, professionals, or properties. The visitor fills out a listing card, and the site creates a custom post type entry with meta fields for city, address, service, and contact details.
- Events and calendars. The organizer submits an event, chooses a category, adds the date and description, and the editor reviews it before it appears in the calendar or archive.
- Community classifieds and submissions. A member submits content through a public form without getting access to the WordPress admin area.
- Internal portals and member sites. Registered users submit content under their own account, while the administrator keeps control over publication.
The add-on may not be the right fit if you need a full account-based system with front-end editing of created posts, paid submissions, subscriptions, role-based moderation, and multi-stage approval. Some of those needs can be covered by other Ninja Forms add-ons, such as User Management or File Uploads, but Front-End Posting itself is focused specifically on creating a post from a form. For a complex marketplace or classifieds portal, a more specialized solution may be easier to manage.
Another limitation has to do with editorial safety. An open form that publishes content immediately is almost always risky. Even if the content does not contain malicious code, it may be spammy, legally questionable, low quality, or simply submitted to the wrong category. On a public site, it is usually better to start with Pending Review or Draft, and enable direct publishing only in closed workflows where the submitter is known and trusted.
When the Add-On Beats a Standalone Portal Plugin
If the site is already built on WordPress and its structure is relatively simple, Front-End Posting lets you avoid adding a heavyweight system for a single task. You can keep your current theme, your existing templates, and the regular WordPress post management interface. The form becomes just the intake layer. This works well for editorial teams, small directories, local communities, educational projects, and corporate sites that need controlled content intake without teaching contributors how to use WordPress.
The advantage is that you continue working inside the Ninja Forms ecosystem. Email Action handles notifications, File Uploads handles attachments, Conditional Logic handles dynamic fields, and User Management controls access to submissions. But each additional module should be evaluated on its own. There is no reason to enable every add-on if a specific form does not use it.
What to Check Before Installation and First Launch
Before installing the add-on, do more than confirm that you already have the base Ninja Forms plugin. You also need to make sure your WordPress structure is ready to accept this kind of content. If you want to create standard posts, it is enough to think through categories, tags, and editorial status. If the target is a custom post type, it should already exist and be correctly registered by your theme or a separate plugin. Front-End Posting can choose from available types, but it does not design the data model for you.
Start with a short map of the future post:
-
Post type. Will it be a
post,page, or custom post type? - Required fields. What absolutely needs to go into the title, content, excerpt, and meta?
- Categories and taxonomies. Which terms are assigned silently by the administrator, and which ones can be selected by the user?
-
Status after submission. For public forms,
Pending RevieworDraftis the safer choice. - Post author. Should the author be the administrator, a specific user, or the logged-in user themselves?
- Files and images. Are uploads needed, which file types are allowed, where are they stored, and can they be used as the featured image?
- Notifications. Who receives the email after submission, and what minimum information should it contain?
- Anti-spam. How will you protect the public form: hCaptcha, reCAPTCHA, Akismet, or another Ninja Forms anti-spam option?
On a site that uses custom post types, also check the meta keys. They must match what the theme, ACF, directory system, or other plugin expects. For example, if the event template displays the date from the field event_date, but you save the value to date_event, the post will still be created, but the date will not appear on the site. That is not a Front-End Posting error. It is a data structure mismatch.
Also decide where the form will live. Ninja Forms can be inserted into a page through a block, shortcode, or the form metabox on a post or page. For a public submission form, it is usually best to create a dedicated page with a clear URL, short submission rules, and a note about moderation. If the form should be available only to members, restrict the page with a membership plugin, WordPress roles, or a private section of the site.
Critical expected state: before you send the first test submission, you already know which post type the content will go into, which status it will receive, and which fields should appear in the WordPress editor.
Installation, Form Setup, and the First Create Post Test
Once the add-on is installed and activated, the Create Post action becomes available in the Ninja Forms builder. It is added not as a form field, but in the Emails & Actions tab. This matters: the user on the site does not see the action directly. They see ordinary form fields, and the action runs after submission to create a WordPress post.
Create Post maps it to the post title, content, status, and author.A Minimal Form for the First Test
Do not start your first test with a complex directory. Create a simple form with three or four fields to make sure the add-on works on your site:
- A
Single Line Textfield for the content title. - A
Paragraph Textfield for the main body text. - An
Emailfield for contacting the author if the editor needs clarification. - A submit button and, if needed, a captcha field.
Then open Emails & Actions, click Add New Action, and choose Create Post. In the action settings, choose the post type, then use Insert Merge Tag to map the title field to Post Title and the large text field to Post Content. For the first test, choose Draft or Pending Review so the content does not go live automatically.
Save the form, publish it on a test page, and submit a sample entry. Then open the WordPress post list or the list for the selected custom post type. If the post appears with the correct status, title, and content, the basic chain is working. If it does not, first check whether the Create Post action is active, whether the form is published, whether any required fields are missing values, and whether submission processing is being blocked by a form conflict.
What Not to Do in the First Test
Do not enable direct publishing, complicated conditional rules, multiple post types, and a dozen meta keys right away. That only makes troubleshooting harder. First confirm one clear path: one form, one post type, one title, one content field, and a moderation status. Once that foundation works, add taxonomies, excerpt, custom meta, file uploads, and notifications.
Do not disable the Record Submission action until you are sure posts are being created reliably. The official Ninja Forms documentation specifically notes that new forms usually include active actions for success message, admin email, and record submission. During debugging, it helps to have not only the created post but also the original form submission. That makes it easier to see which value came from the user and what exactly failed to reach the post object.
Fields, Merge Tags, and Post Status: The Core Setup Logic
The most important screen in Front-End Posting is not the list of form fields, but the settings for the Create Post action. This is where you decide how raw form data becomes WordPress content. If the form collects the right values but the action is mapped incorrectly, the result will be incomplete: the post may appear without a title, with empty content, in the wrong category, or under the wrong author.
Post Type
The Post Type setting determines exactly where the created object will appear. For guest articles, the standard Posts type is the obvious choice. For static submissions that should become pages, you can use Pages, although that is less common. For directories, events, jobs, and classifieds, it is usually better to use a custom post type if it already exists and is displayed properly by the theme.
The check is simple: after a test submission, the post should appear in the same admin section where the editor normally manages that kind of content. If you expected it under "Events" but it showed up in regular posts, the wrong type was selected. If the type you need does not appear in the list, the problem is usually not the form itself, but the way the custom post type was registered or how the third-party plugin that creates it handles compatibility.
Post Title and Post Content
For Post Title, you will usually want a short required text field. Do not pull the title from a long description or the user email. The title becomes the visible name of the post and may also be used in the URL, archive, breadcrumbs, and SEO snippet, so it is worth constraining it to the real purpose of the form: "Event Title," "Article Headline," "Company Name," or "Classified Title."
Post Content can be built from one large field or from several fields combined with explanatory text. For example, for an event you can insert the description merge tag, then the line "Venue:" and the address merge tag, then "Organizer Contact:" and the email. This gives you a predictable post template, but it does not replace custom meta. If the address, date, and price need to be used in filters, they should be saved not only to the content field but also to separate meta keys.
Post Excerpt
The excerpt is useful if your theme displays a short summary in archives. Do not make the editor write it manually after every submission. Add a field such as "Short Summary" or "Promo Blurb" and map it to Post Excerpt. For an open form, it is a good idea to limit the length of that field so the user does not paste the entire submission into it.
Post Status
The status determines how quickly the public sees the content. The documentation lists options such as Draft, Pending Review, Private, and Published. On a live site, the first two are usually the safest. Draft works well when the editor is expected to substantially revise the content. Pending Review is better at clearly showing that the post is waiting for approval. Private is useful for restricted materials visible only to users with permission to view private posts. Published should be reserved for closed, trusted workflows.
For most public-facing scenarios, the best starting point is to create the post with the Pending Review status and send a notification to the editor. That gives the visitor a clear submission path while keeping the site in control of quality and safety.
Post Author
Front-End Posting can assign the post to an administrator or to the user themselves if they are logged in. The right choice depends on the project model. For guest posts by registered contributors, using "Themselves" makes sense so authorship is accurate. For an open form without login, it is safer to assign a fixed service account such as an editor or administrator, while storing the real submitter's information in the form fields and metadata.
If you use "Themselves" for authorship, make sure to test both the guest scenario and the logged-in user scenario. Not every form should be available anonymously. If the content needs to be tied to a member profile, restrict the form page for unauthenticated visitors or show a clear login message.
Taxonomies and Custom Meta for Directories, Events, and Classifieds
Taxonomies and custom meta are what turn Front-End Posting from a simple guest form into a structured content tool. A title and body field may be enough for an article, but they are not enough for a directory, calendar listing, or classified post. Those use filters, archives, sorting, listing cards, and dedicated output fields. So one of the first setup questions should be: which values should live inside the post, and which ones should exist as separate structured data.
When to Use Categories and Tags
Categories and tags work well for grouping content. If the user is submitting an article, they may choose a topic such as "News," "Experience," "Tutorial," or "Question." If an organizer is submitting an event, you might use an "Event Type" taxonomy such as "Webinar," "Conference," or "Workshop." If the site accepts classified ads, terms help organize them by category.
There are two common approaches. The first is to assign terms automatically in the action settings without showing the choice to the user. That is the safer option when the form is intended for a single category or one specific type of content. The second is to add a terms list field so the user can choose the appropriate term themselves. That can be convenient, but it should be restricted. Do not expose your entire site taxonomy to random visitors if some categories are internal or editorial only.
When to Use Custom Meta
Custom meta is for values that are not used for grouping but still need to exist as separate data. For an event, that could be the date, time, location, or registration link. For a classified ad, it might be the price, city, contact, or condition. For a directory of professionals, it could be the specialty, phone number, website, hours, or coordinates. In Front-End Posting, you can add multiple meta mappings: you enter the meta key manually, and the value comes from a form field through a merge tag.
Consistent naming matters here. If your site already uses ACF or another field builder, check the real field names and meta keys in that tool's settings. Do not rely on the pretty field label shown in the admin area. The label may say "Event Date," but the actual key may be event_date. In Front-End Posting, you need to enter the key the template actually reads.
Verifying the Mapping to a Custom Post Type
After setting up custom meta, send a test submission and open the created post in the admin area. If the ACF fields or another meta box show the transferred values, the mapping is working. If the values are not visible but the post was created, check three things:
- Does the meta key match the actual field key rather than the user-facing label?
- Does the selected custom post type support the required meta boxes and taxonomies?
- Does the third-party plugin expect the data in a special format, such as a specific date format or a term ID instead of plain text?
If the expected data format is not obvious, do not guess. It is better to first create a post manually in the admin area, fill in the fields, and see how the theme or plugin displays the result. Then reproduce that same structure through the form.
Publishing the Form and Verifying the Result on the Site
Once the action is configured, the form needs to be displayed on a page. The Ninja Forms documentation describes several methods: shortcode, a WordPress editor block, and the metabox for adding a form to a post or page. On most modern sites, the block is the easiest option because the editor can immediately see which form is selected. Shortcodes are useful if you work in the Classic Editor, a template file, or a page builder that handles shortcodes correctly.
The Submission Page
The page that contains the form should explain the rules before the person starts filling anything out. There is no need to turn it into a long legal agreement, but it should state the key expectations: what kinds of submissions are accepted, what goes through moderation, which files are allowed, who can use the form, and what happens after submission. That reduces junk submissions and repeated questions.
If the form is long, use clear field descriptions and a logical order. Start with the information that helps the editor quickly understand the submission: title, category, short summary. Then move to the main text and additional details. It is usually best to separate contact information from public content so the user understands what may be published and what is only for the editorial team.
Success Message, Redirect, and Email
The user should get confirmation that the submission went through. A success message or a redirect to a thank-you page both work well. In that message, do not promise instant publication if the post is going into moderation. A more honest message would be: "Your submission has been sent for review. An editor will contact you if clarification is needed."
For the editorial team, configure an Email Action. The message should typically include the form name, the title of the submitted content, the author's email, and a link to the site admin area or instructions on where to find the new post. The official email documentation shows that email actions are configured in the Emails & Actions tab, can use merge tags, and must be active. If emails are not arriving, troubleshoot that separately: make sure the action is enabled, the To field contains a valid address or merge tag, the subject is not empty, and the site can hand mail off to the hosting environment.
Verification in the Admin Area
After the first real submission, do not check only whether a post was created. Open the post and go through a checklist:
- The title is readable and not empty.
- The content did not collapse into an unreadable block or lose important fields.
- The status matches the moderation plan.
- The author is assigned correctly.
- The category, tag, or custom taxonomy is what you expected.
- The custom meta is visible in the correct fields or displayed properly by the theme.
- The editor received the email notification.
- The public site does not show the content before review if a moderation status was selected.
Only after that should you add more advanced rules, extra fields, and automation. If you switch everything on at once, it becomes much harder to tell where the chain is breaking: in the form, the action, the email, the custom post type, the theme template, or a third-party plugin.
Best Post-Install Settings: An Editorial Workflow Without Unnecessary Risk
Once the basic submission already creates a post, the more important phase begins: shaping the editorial workflow around it. In this context, that workflow does not mean a separate plugin or a complicated architecture. It simply means a clear order of operations after the submit button is pressed. The user should know the submission was received. The editor should be able to see what came in and where to review it. WordPress should create the post in the correct state. The form should preserve the original data so the result can be compared with the submission if something goes wrong.
For most sites, a good starting set looks like this: Create Post creates the post with the Pending Review status, Record Submission stays enabled, the email action sends a short alert to the editor, the success message tells the user that moderation is required, and the form page itself is protected against spam. It is not flashy, but it is predictable. Each layer does its job: Front-End Posting creates the WordPress object, submissions preserve the original request, email speeds up the editor's response, and the post status protects the public-facing site.
Action Order in Emails & Actions
Do not leave a mess of similarly named actions in the Emails & Actions tab. Rename actions so another administrator can understand their role without opening every setting. For example: "Create event post," "Notify editor," "Record original submission," "Show moderation message." The action name does not affect processing, but it helps a lot with long-term maintenance when nobody remembers six months later why the form was configured that way.
If the form has multiple email actions, separate them by purpose. One message may go to the editor with technical details, while another goes to the user with a confirmation. Do not mix both scenarios into one email sent to multiple addresses if the content should be different. The editor needs merge tags for the title, content type, sender email, and possibly a link to internal instructions. The user needs a short message without internal meta keys and without a promise of instant publication.
Use conditional logic only where it actually reduces mistakes. For example, if the form accepts both articles and events, you can show date fields only when the user chooses an event. But if the structure differs significantly, two separate forms are usually more reliable than one universal form. The more complex the conditions, the more important it becomes to test every branch: the user chose "Article," the user chose "Event," the user left an optional field empty, the user uploaded a file, the user submitted the form without logging in.
Which Fields Should Be Required
Whether a field should be required depends on whether the editor can make a decision without that value. The title and main content are almost always required. The sender email is required if the editorial team needs a way to follow up. A category may need to be required if it controls the moderation route. But a phone number, website, second file, or long author bio is often better left optional so you do not scare away legitimate contributors.
For fields that are mapped into custom meta, required status depends on the template. If an event card makes no sense without a date, then the date should be required. If the directory can still display a listing without a website link, then that field can remain optional. Do not use required fields as a way to "collect more data." Every required field should have an editorial reason behind it.
A useful practice is to add short descriptions to more complex fields. For example, next to "Short Summary," explain that it will be used in the content list and should be shorter than the main text. Next to a file upload field, list the allowed formats and size. That kind of guidance is far better than manually cleaning up dozens of weak submissions later.
Why It Is Better to Keep Record Submission Enabled
Sometimes an administrator disables Record Submission because they consider the created post to be the only result that matters. For simple contact forms, that can be a separate decision, but when launching Front-End Posting, the original submission is extremely useful. It shows what values actually came out of the form before they were turned into a post. If the title was mapped correctly but a meta field was not, the submission helps you determine whether the user left the field empty, the merge tag was wrong, or the value was lost during post creation.
Beyond troubleshooting, the original submission is also useful in disputed cases. For example, the editor may revise a post and the sender may later claim they submitted a different description. The submission record lets you review the original text. If you store personal data, define your retention policy and submission access rules according to your site's policies. By default, Ninja Forms limits access to administrators, and more advanced permissions can be managed through User Access if that add-on is installed.
Roles and Access to Submissions
If several people work with submitted content, decide in advance who needs access to created posts and who needs access to submissions. These are different things. A WordPress editor may need to review posts in the relevant post type, but not every original form submission. Support staff may need to inspect submissions for troubleshooting but should not be publishing content. An administrator may do both, but that does not mean the whole team should have the same level of access.
The User Access documentation describes how to control who can view and edit submissions by role, including access only to a user's own submissions or to all submissions. If the project is small, do not overcomplicate permissions up front. An administrator and an editor are usually enough. If the site grows into a real portal where users need to see their own submissions, that is the point when roles, access, and possible editing should be designed as a separate product layer.
Success Message and User Expectations
The post-submission message affects how many duplicate submissions you get. If someone clicks the button and sees a generic "Form submitted" notice, they may not understand when to expect a result. A more useful message is something specific: the content has been received for review, publication is not automatic, and the editor will follow up if needed. Do not commit to exact timelines unless your team can consistently meet them. A clear, date-free message is better than a promise that quickly becomes a source of complaints.
If the form accepts commercially important submissions, you can redirect users to a separate instruction page. That page can explain how to prepare an image, what to do if there is an error, and where to write if the content needs to be replaced. But for a simple guest submission form, a success message is usually enough and avoids creating extra pages.
A Test Protocol Before Opening the Form
Before making the form available to your audience, run several test submissions rather than just one. A minimal protocol looks like this:
- A submission with valid data from a guest or test user.
- A submission with an empty required field to verify validation.
- A submission with a very long title to see how it looks in the admin area and archive.
- A submission with a selected category or taxonomy.
- A submission with a file if uploads are enabled.
- A submission after clearing cache and in incognito mode.
After each test, check not only the created post, but also the original submission, the editor email, the success message on the site, and the public visibility of the content. If all tests pass, the form is ready for a soft launch. Even then, the first real submissions deserve extra attention. Users fill out forms differently than administrators do, and they quickly expose fields that only made sense internally to your team.
Practical Example: A Form for an Event Directory
Let us walk through a concrete example. The site runs an event directory and wants to accept submissions from organizers. WordPress already has a custom post type called event, an events archive, and a single event template. The goal is for the organizer to fill out a form on the site and for the editor to receive a new Pending Review post with the relevant fields populated.
Goal
After the form is submitted, a post of type event should be created. The event name becomes the title, the description becomes the content, the excerpt becomes a short promo summary, and custom meta stores the date, city, and registration link. The event category is assigned through a selection field, and the status stays in moderation.
Preparation
Before building the form, create or verify the custom post type event. Make sure both the archive and the individual event page already work when a post is created manually. Then check which meta keys the template uses. For this example, we will use:
-
event_datefor the date. -
event_cityfor the city. -
event_register_urlfor the registration link.
If your keys are different, use your own. Do not change your theme or ACF setup just to match the example. Front-End Posting should adapt to the structure your site already uses.
Form Fields
Create a form called "Submit an Event" and add these fields:
-
Single Line Textfor "Event Title," required. -
Paragraph Textfor "Event Description," required, with a note about the expected format. -
Single Line Textor a date field for "Event Date," in the format your template expects. -
Single Line Textfor "City." -
URLor a text field for "Registration Link." -
Selector a terms field for "Event Type" if the user is allowed to choose a category. -
Emailfor "Organizer Email" so the editor can follow up. - An anti-spam field if the form is open to all visitors.
Do not overload the form with optional questions. If the editor can clarify details later, it is usually better to keep the submission path short. But any values required to display the event card correctly should be separate fields. Otherwise, the editor will have to manually pull them from the description.
Setting Up Create Post
In the Emails & Actions tab, add Create Post. For Post Type, choose event. For Post Title, insert the merge tag from the "Event Title" field. For Post Content, insert the description. For Post Excerpt, you can insert a separate "Short Summary" field if you added one, or leave the excerpt for manual editorial refinement.
For Post Status, choose Pending Review. For Post Author, choose a service editor account or "Themselves" if the form is available only to logged-in organizers and authorship matters. In the custom meta block, add three rows: event_date with the date merge tag, event_city with the city merge tag, and event_register_url with the registration link merge tag.
If the event category should be chosen by the user, configure the terms mapping. If all events submitted through this form should go into one category, assign the term directly in the action and do not show the choice to the user. That reduces mistakes.
Verifying the Result
Submit a test event as a regular visitor. Then open the admin area and check the event list. The expected result is this: a new post appears with the Pending Review status, the title matches the event name, the description is visible in the editor, and the date and city appear in the meta fields or are displayed correctly in the template. Open the post preview and check the event card on the site.
If the date is not displayed but the post was created, the problem is almost always the meta key or the date format. If the entry was created as a regular post, check Post Type. If it was published immediately even though it should have gone to review, check Post Status and confirm that you edited the active action in the correct form rather than a draft in another form.
A Note on Post-Submission Editing
Front-End Posting handles post creation, but it should not be treated as a full public editing interface for authors. If users need to regularly view and edit their own submissions, look into pairing it with User Management or into alternative solutions where front-end editing is a core feature. For a simple editorial workflow, it is usually enough to send an email asking for clarifications or to use a restricted update form that the editor reviews.
Files, Images, Anti-Spam, and a Clean Form Layout
Many publishing workflows need files: an article image, an event flyer, a company logo, a PDF document, or a property photo. Official Ninja Forms material on user-generated content notes that audio, video, and image handling may require File Uploads, and the File Uploads documentation describes separate settings for file size, allowed file types, server storage, and external storage destinations. Do not add file uploads without restrictions. This is one of the most common sources of security problems, disk usage issues, and email delivery trouble.
How to Approach File Uploads Safely
For a public form, start with an extension allowlist: for example, only .jpg, .png, and .pdf if those are truly needed. Set the maximum file size below the server limit so the user sees a clear message instead of a sudden hosting-side failure. If files are part of the editorial workflow, it is usually better to store the link in the submission and review it before publication than to automatically display everything uploaded to the site.
If you want an uploaded image to become the post's featured image, test that separately. Not every file workflow is the same: attaching a file to an email is one thing, saving it to the server is another, and inserting it into the media library and linking it to a post is something else entirely. Use only the path that is confirmed by your Ninja Forms configuration and works in a real test submission.
Anti-Spam and Moderation
For an open content submission form, anti-spam protection is mandatory. Ninja Forms documents several protection options, including reCAPTCHA, hCaptcha, Turnstile, and Akismet in its spam protection materials. Choose one suitable option and do not stack multiple captcha solutions on the same form unless the specific documentation recommends it. Excessive friction reduces legitimate submissions, but no protection at all quickly turns the form into a spam channel.
Even with captcha in place, do not enable automatic publishing for guest-submitted content. Spam protection catches bots, but it does not guarantee editorial quality. A moderation status remains the main protective layer.
A Small CSS Tweak for the Submission Page
If the form looks too wide or the fields visually blend into the page text, you can add a local CSS tweak in the theme or in a safe custom CSS tool. The official Ninja Forms documentation describes classes such as .nf-form-content, .nf-field-container, .field-wrap, and .ninja-forms-field. Use a page wrapper so you do not change every form across the site at once.
.submission-page .nf-form-content {
max-width: 760px;
margin: 0 auto;
}
.submission-page .nf-field-container {
margin-bottom: 18px;
}
.submission-page .ninja-forms-field {
border-radius: 6px;
}
The check is straightforward: open the form page, submit a test entry, and confirm that the fields still receive focus correctly, error messages are visible, the submit button is not hidden, and the captcha does not break out of the container. Rolling it back is just as simple: remove this small CSS block or remove the submission-page class from the page container.
Common Problems and Troubleshooting
Issues with Ninja Forms Front-End Posting are best diagnosed as a chain: did the form submit or not, did the action run or not, was the post created or not, were the fields mapped correctly or not, was the notification sent or not, and does the public output match expectations or not. If you jump straight to the theme or cache, you may miss a basic issue such as a disabled Create Post action.
The Post Is Not Created After Form Submission
Symptom: the user sees the form submit or gets a success message, but nothing appears in the WordPress post list. A likely cause is that the Create Post action was not added, was disabled, was not saved, or was configured in a different form. Also check required fields: if the form did not actually submit because of validation, the action will not run.
What to check: open the form, go to the Emails & Actions tab, and make sure Create Post is active. Then send a simple test entry with minimal values. If Record Submission is enabled, check whether the original submission was saved. If the submission exists but the post does not, the issue is closer to the action. If there is no submission, the problem is in the form, validation, captcha, or a page-level conflict.
The Post Is Created, but Fields Are Empty or Mixed Up
Symptom: the post appears, but the title is empty, the text is wrong, the excerpt is not filled, or the meta values are missing. The main cause is incorrect merge tags or field changes made after the action was configured. If a field was deleted and recreated, its merge tag may have changed even if the visible label stayed the same.
Fix: open the Create Post settings and reselect the merge tags using the picker instead of manually copying old values. Then submit a new test post. Previously created test posts will not fix themselves automatically, so edit them manually or delete them if they were only for testing.
Custom Meta Is Saved, but the Theme Does Not Display It
Symptom: the date, city, or price is filled in on the form, and the post is created, but the field does not show on the public page. Possible causes include the wrong meta key, an unsupported value format, the wrong post type, or a theme template that only displays fields created through a specific tool.
Check this by creating one post manually in the admin area, filling the fields the same way the editor normally would, and confirming that the theme displays them. Then compare the keys and value format with what Front-End Posting sends. If the date format or term ID format does not match, adjust the form field to the expected format or leave the field for editorial review.
Content Gets Published Without Moderation
Symptom: the submission appears on the site immediately even though the editor intended to review it first. The cause is almost always Post Status: either Published is selected or the wrong form was edited. For public forms, this is risky.
Fix: switch the status to Pending Review or Draft, save the form, and send a new test. Check the public site in incognito mode. The content should not be visible to a regular visitor before an editorial decision is made if you are building a moderated content intake workflow.
The Editor Does Not Receive the Email
Symptom: the post is created, but the editor never receives the notification. This is not always a Front-End Posting problem. Email Action runs on its own chain: Ninja Forms passes the email to WordPress, WordPress passes it to the hosting environment, and from there it is delivered to the mailbox. The official Ninja Forms email troubleshooting documentation recommends first checking that the email action is active, that the To field is correct, that the subject is present, and that the addresses are valid.
Fix: check the email action in the same form, send a test, inspect mail logs if available, and configure SMTP delivery on the site if needed. Do not change the Create Post settings if the post itself is being created correctly. In that case, the problem is in notifications, not publishing.
The Form Looks Broken After Caching or Optimization
Symptom: fields do not submit, captcha does not work, the button does not respond, or the rich text editor behaves inconsistently. A likely cause is JavaScript optimization, page caching, or a theme or builder conflict. Start by temporarily disabling minification and deferred loading for the form page rather than reinstalling the plugin.
If the form works once optimization is disabled, add the submission page to your cache exclusions or configure the optimizer so Ninja Forms scripts and captcha are not broken. After every change, run a real test submission and verify the created post.
FAQ About Ninja Forms Front-End Posting
Can I accept posts from guests without giving them access to the admin area?
Yes. That is the main use case for the add-on: the user fills out a form on the public side of the site, and WordPress creates a post through the Create Post action. The visitor never needs to see the admin area or the post editor. But for an open form, it is better to use Pending Review or Draft so an editor can review the content first.
Do I need a separate form for each post type?
In most cases, yes, if the data structure is significantly different. A form for an article, an event, and a classified listing will usually need different fields, different meta keys, and different moderation rules. In theory, you can build one universal form with conditional logic, but it is harder to troubleshoot. For reliability, separate forms are usually the better choice for distinct editorial workflows.
Does the add-on work with custom post types?
The official product page and documentation state that custom post types are supported as long as they have already been added by the site, the theme, or a third-party plugin. The add-on does not replace custom post type registration. If the type you need does not appear in the settings, check the post type registration itself and whether it is available in the admin interface.
Can I let the user choose a category or tag?
Yes. Categories and tags are available for standard posts, and the documentation explains how to add a terms list for term field mapping. But user choice should be limited. Do not expose internal categories, hidden editorial terms, or categories where content should not be submitted without review.
Can submitted content be published immediately?
Technically, yes, you can select the Published status, but for a public form that is a risky mode. It is appropriate only in a trusted closed environment where the submitter is known, the content scope is limited, and the consequences have been considered. For most sites, moderation through Pending Review or Draft is safer.
Why is custom meta not showing on the post page?
The most common cause is a mismatch in the meta key or value format. Check how the field is named in ACF, the theme, or the directory plugin, and make sure Front-End Posting writes the value to that exact key. Also confirm that the correct post type is selected and that the template actually outputs that field.
Can I use images and files in submissions?
Yes, but full file handling usually requires a separate File Uploads add-on and careful setup of restrictions. Define the allowed extensions, maximum size, storage method, and editorial review process. Do not allow arbitrary file uploads on a public form.
What if users need to edit their content after submission?
Front-End Posting is primarily designed to create a post from a form. If you need a user dashboard, access to a person's own submissions, and editing after publication, look at pairing it with User Management or at alternative solutions where front-end editing is a separate core feature. For a simple editorial workflow, moderation and email follow-up are often enough.
When Ninja Forms Front-End Posting Is the Right Choice
Ninja Forms Front-End Posting is worth using when you need controlled content intake through a form and the result should become a real WordPress post. It is a solid option for guest articles, directories, events, classifieds, and member-driven workflows where publication status, author, post type, taxonomies, and custom meta all matter. The key is not to treat the add-on like a magic publish button. It works best when the post structure, form fields, and editorial process are planned in advance.
Before launching it on a live site, walk through the full path: a test submission, a post in the correct post type, a moderation status, correct meta values, an editor email, a post preview, public output verification, and anti-spam protection. If all of those pieces line up, you can open the form to your audience and gradually improve the workflow by adding fields, conditional rules, file uploads, and access permissions.
If, after reviewing the setup, you decide this is exactly the workflow your site needs, you can get the WordPress version and test it first on a site copy or staging environment. That lets you see how the form behaves in practice without risking accidental content publication on the live site.


