Gravity Forms Nested Forms - WordPress Plugin
This plugin adds a new Nested Form field type. This field allows you to select another form that will be used to collect “child” entries and attach them to the “parent” entry on submission. The child entries display in a clean, compact table on the parent form where they can be viewed, edited or deleted.

Plugin Features
Gravity Forms Nested Forms is a plugin designed as an add-on for Gravity Forms, enhancing the functionality of the form builder. It enables users to create more complex forms by nesting multiple form levels within each other, offering a seamless form-building experience. This extension simplifies the process of creating intricate forms with nested fields that are dynamically interactive, providing a comprehensive solution for advanced form requirements. Users can easily manage and organize data input by incorporating nested forms, streamlining data collection and user interaction effectively.
Enabling users to create forms within forms, the extension significantly expands the capabilities of form creation within the Gravity Forms ecosystem. By seamlessly integrating nested forms, users can design and implement multi-dimensional forms that cater to diverse data collection needs. This feature facilitates the creation of intuitive and interactive forms that can adapt to various input scenarios, offering enhanced user experience and data organization capabilities. With nested forms, users can build dynamic and engaging forms that meet specific requirements without the need for extensive custom coding.
The plugin empowers users to customize form structures with a high degree of flexibility and control, allowing seamless integration of nested form elements within existing forms. By incorporating nested forms, users can design sophisticated form layouts that encompass a hierarchy of fields and sections, optimizing data capture and user engagement. This functionality enables users to efficiently gather comprehensive information through a structured and organized form layout, enhancing data quality and usability. The flexibility of nested forms empowers users to create tailored form structures that align with diverse data collection objectives, fostering a more personalized and efficient form-building process.
With the capability to embed multiple levels of forms within a single form, users can design intricate and interconnected data collection mechanisms that cater to complex form requirements. By implementing nested forms, users can create dynamic and interactive form structures that adapt to user inputs, providing a versatile solution for varied data collection scenarios. This feature enhances the overall user experience by enabling the creation of nested forms that respond dynamically to user interactions, resulting in engaging and user-friendly form interfaces. The nested forms extension enriches the form-building capabilities of Gravity Forms, offering users a powerful tool to create interactive and sophisticated forms that meet diverse data collection needs.
Incorporating nested forms into the form-building process augments the functionality of Gravity Forms by providing users with a comprehensive solution for constructing advanced and interactive forms. The extension enhances the versatility of form creation within the Gravity Forms platform, enabling users to design complex form structures with nested elements seamlessly. By leveraging the nested forms feature, users can streamline the form-building process, optimize data collection efficiency, and create engaging forms that offer a superior user experience. This extension is a valuable addition to the Gravity Forms ecosystem, empowering users to unleash their creativity and design innovative forms that align with their specific requirements.
Specifications:
| Release date: | 25-12-2017 | |
| Last updated: | 15-10-2026 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | Contacts & Feedback for Gravity Forms | |
| Compatibility: | W5.x W6.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | Gravitywiz | |
| Rating: | ||
Share with your friends!
Guide to Setting Up and Using Gravity Forms Nested Forms
Gravity Forms Nested Forms is useful when a standard form stops being practical: the user fills out one main submission, but inside it needs to add several similar records - participants, shifts, items, employees, assets, estimate line items, or recipients. This guide focuses on practical use rather than marketing copy: how to design the parent and child forms, which fields to show in the summary table, how to calculate totals, when to process notifications, and what to check if the modal window or child entries do not behave as expected.
The plugin is part of the Gravity Perks ecosystem by Gravity Wiz and adds a dedicated Nested Form field to Gravity Forms. It lets you place one form inside another: the child form collects repeatable data, while the parent form stores the overall submission and links it to the child entries. This is not just "another list of fields" - each child entry has its own structure, validation, notifications, admin entry, and potential integrations.
This article is intended for a site owner, WordPress administrator, forms specialist, or developer who already understands the basics of Gravity Forms. If you are still choosing an approach, start with the sections on use cases and limitations. If the plugin is already installed, jump straight to the field setup, practical example, result validation, and troubleshooting.
This article intentionally does not cover license purchasing or activation workarounds. The focus is on a live site, an already available plugin, safe configuration, data validation, and fixing common problems.
What Problems a Nested Form Solves in Gravity Forms
A regular form works well as long as the user submits one set of data: name, phone number, comment, file, service selection. The complexity starts when a single submission needs to collect a variable number of similar blocks. For example, one representative registers a team and adds players. A manager submits a weekly report and adds multiple shifts. A client requests a quote and adds several items. A donor fills out one form but splits the donation across multiple recipients.
Without Nested Forms, these scenarios are usually handled in three inconvenient ways. The first is to add many repeated field groups in advance: "Participant 1," "Participant 2," "Participant 3," and so on. The form becomes long, some fields stay empty, and conditional logic gets more complicated. The second is to use a list field, but that works well only for simple rows that do not need separate validation, complex fields, files, calculations, or notifications. The third is to force the user to submit the form multiple times, which breaks the integrity of the submission and makes admin-side processing harder.
Gravity Forms Nested Forms offers a different approach: the parent form collects the general part of the submission, while the child form opens in a modal window and creates separate child entries. Once added, those entries appear in the parent form as a compact table. The user can add, edit, or delete rows before finally submitting the parent form.
Where Nested Forms Works Especially Well
The plugin works best in scenarios where the repeatable block is more complex than a single row. If a child entry includes a name, address, file, pricing fields, selections, conditional logic, or a separate notification, a nested form is usually more practical than a simple list. It preserves the data structure and helps the administrator see a group of related entries instead of an endless set of fields.
- Registering a team, group, family, staff members, or event attendees in a single submission.
- Timesheets where an employee adds multiple work intervals and the parent form calculates the total.
- Multi-line quote requests where each item has a quantity, parameters, price, or comment.
- Applications covering multiple assets: real estate, equipment, vehicles, documents, or training modules.
- Forms with child notifications or integrations where processing is better triggered after the parent entry is finally submitted.
If the repeatable block consists of just two simple text columns, Nested Forms may be more than you need. In that case, a List field or another simpler form builder feature may be enough. The plugin's real strength is not minimal forms, but a manageable nested data structure.
Who the Plugin Fits and Where It May Be Unnecessary
Gravity Forms Nested Forms is a good fit for sites where Gravity Forms is already the main data collection tool. That is an important condition: the plugin does not replace Gravity Forms, it extends it. It is useful when you want to keep the familiar Gravity Forms editor, notifications, entries, exports, and integrations, while adding repeatable child entries without building a custom interface from scratch.
The plugin fits well into agency workflows and internal team processes. An agency can quickly build a complex registration, quote, or request form without separate development. The site owner gets a clear admin structure: the parent entry remains the main record, while child entries stay linked to it and available for review. The developer still has room for customization through templates and hooks, but does not have to start from zero.
When This Solution Works Well
This is worth considering if you already use Gravity Forms and want to collect repeatable data inside a single submission. It is especially useful when the child form needs standard Gravity Forms features such as conditional logic, pricing fields, notifications, dynamic values, restrictions, file uploads, or integrations. In these cases, Nested Forms turns the repeatable part into a self-contained mini form while keeping it inside the broader workflow.
When Another Approach Is Better
The plugin may not be the right fit if you need unlimited levels of nesting, a spreadsheet-style table editor, or the simplest possible form without a modal window. Gravity Wiz documentation points out an important limitation: a Nested Form field cannot be inserted into a child form that is already being used as a nested form. If you need repetition inside repetition, you will need to rethink the structure, use a list field, use the native Gravity Forms Repeater API for developer-oriented work, or choose another form builder.
You also should not turn the child form into a huge multi-step process. The user opens it in a modal window, so it should contain only the fields related to one repeatable record. If the modal forces the user through a full multi-screen questionnaire, it is better to split the process into separate forms or redesign the logic.
What to Check Before Installation and First Use
Before installing the plugin, it is important to understand not just whether the site supports it, but whether the form logic itself is ready. Nested Forms changes the data structure: instead of one flat entry, you now have a parent entry plus a set of child entries. That affects notifications, exports, integrations, anti-spam, caching, and downstream processing.
Basic Technical Preparation
Make sure Gravity Forms is installed and working reliably on the site, and that your admin access allows you to add plugins, create forms, edit fields, and review entries. For the live form page, disable aggressive caching in advance or create an exception: according to the Nested Forms documentation, the child form is loaded into the modal via AJAX, so server-side cache and script optimization tools may interfere with the dynamic markup.
If the form will be placed inside a page builder, popup, or repeatable block, check whether the same form is being embedded twice on the same page. Gravity Forms does not support embedding the same form multiple times on one page, and with Nested Forms this becomes especially noticeable: the modal window, scripts, and child entry creation may break.
Logical Form Preparation
Before adding the Nested Form field, map out which data belongs to the parent entry and which belongs to a single child entry. The parent form should contain the general information: contact details for the responsible person, team or company name, date, general comment, total amount, consent fields, scenario choice. The child form should describe one repeatable object: one participant, one shift, one estimate line item, one recipient, one product, or one record.
Practical check: if a field makes sense only once for the entire submission, keep it in the parent form. If the user needs to fill out the same set of fields multiple times, move it to the child form.
Decide in advance which child form fields should appear in the summary table on the parent form. In GravityWiz documentation, this is the Summary Fields setting. It does not define which fields appear in the modal window; it only selects the columns the user sees after adding a child entry. So there is no need to display everything. Three to five columns is usually enough for the user to quickly recognize the added entry.
Installation and Initial Validation in WordPress
The overall installation process is similar to other WordPress plugins: upload the ZIP file through Plugins - Add New - Upload Plugin, then install and activate it. If the site already uses the Gravity Perks ecosystem, the exact delivery and update process depends on your current Gravity Wiz setup, but from a form configuration perspective, the key thing is this: after activation, the Nested Form field should appear in the Gravity Forms editor.
Do not start with a production form that is already receiving real submissions. Create a test parent form and a test child form first. That lets you safely validate the modal window, entry saving, notifications, and export behavior. Once the scenario is confirmed, you can migrate the structure into the live form or carefully reproduce the settings there.
First Steps After Activation
- Open
Formsin the WordPress admin and create a child form for one repeatable record. - Add to the child form only the fields that belong to one object: for example, participant name, email address, age, role, and comment.
- Create a parent form with the overall submission fields: responsible contact, group name, date, consent, total amount.
- Add a
Nested Formfield to the parent form and choose the child form you created in its settings. - Fill in
Summary Fieldsso the user sees a clear summary after adding a child entry. - Open the form preview, add two test child entries, edit one, and delete the other.
- Submit the parent form and review the entry in the admin area.
The initial validation is successful if the modal window opens, the child form submits without errors, rows appear in the parent form table, the edit and delete buttons work, and after the final submission the parent entry contains the link to the child entries.
Configuring the Nested Form Field: From Form Selection to Summary Table
The main configuration does not live on a separate settings page, but inside the Gravity Forms editor itself. You add the Nested Form field to the parent form and configure it like a regular field, but with several settings specific to this plugin. Those settings determine how clear the form feels to the user and how easy the entries are for the administrator to work with.
Selecting the Child Form
The Nested Form setting selects which form opens in the modal window. That form should be self-contained and logically complete: it should include all the fields needed for one child entry. Do not place in it fields the user should complete only once for the entire submission. The cleaner the separation, the easier it becomes later to calculate totals, export data, and explain the form to users.
If you change the child form after launch, do it carefully. Existing entries will keep the old data structure, while new entries will follow the updated form. For major changes, it is better to create a copy of the form, test it separately, and only then move it into the live workflow.
Using Summary Fields Instead of a Bloated Table
Summary Fields is one of the most important settings. It determines which child entry fields appear in the table on the parent form. GravityWiz documentation emphasizes that this parameter affects only the table in the parent form, while the modal window still displays all fields from the child form. That separation is useful: the modal can collect full details, while the parent form shows only a concise summary.
Choose fields that help the user verify that the entry was added correctly. For participants, that might be name, role, and age group. For timesheets, date, start time, end time, and hours. For estimates, item name, quantity, and cost. Do not display long comments, hidden technical fields, or data that is rarely needed. The summary table should feel like a checklist, not a copy of the entire child form.
Row ID and Entry Labels
The special Row ID field in Summary Fields adds a sequential number to each child entry. The documentation notes that the numbering updates when entries are added, deleted, and duplicated. That is useful in scenarios where the user needs to see the sequence: participant 1, participant 2, line item 3, shift 4. But if each entry already has a unique name, the number may be unnecessary.
The Entry Labels setting controls the singular and plural labels for entries. Do not leave generic wording if the form is domain-specific. Instead of "entry," use "participant," "shift," "item," "beneficiary," or another term your users immediately understand. On a Russian-language site, these texts can be localized through string translation or carefully adjusted output if the project requires it.
Modal Window Appearance
The appearance settings include a color for the modal window header. According to the Nested Forms documentation, the plugin inherits Gravity Forms theme colors by default, so in most cases it is better to leave the color field empty and test the form on the real page first. A custom color is useful only if the modal blends poorly into the design or the client wants the child-entry interface to stand out visually from the main form.
If the site theme sets a very high z-index for the header, popups, or widgets, the modal window may appear behind other elements. In its FAQ, GravityWiz suggests a CSS adjustment to raise the dialog layer. Use it only after confirming that the problem is really element overlap and not scripts, cache, or duplicate form embedding.
.gpnf-dialog.ui-dialog {
z-index: 99999999 !important;
}
Add that CSS in a safe location: a child theme, the theme's custom CSS area, or a trusted snippet manager. After inserting it, open the form page in an incognito window, click the button to add a child entry, and confirm that the modal is visible, does not cover required form elements, and closes normally. Rolling it back is simple: remove the CSS and clear the page cache.
Limits, Required Entries, and Protection Against Invalid Input
For repeatable entries, limits matter more than they first appear to. Without a minimum limit, the user may submit the parent form with no child entries even though the business logic requires at least one row. Without a maximum limit, you can end up with an overly long submission, an overloaded form, or difficult data handling. In Nested Forms, limits are configured through Entry Limits in the field's advanced settings.
How to Make the Nested Form Required
If the parent submission must include at least one child entry, set the minimum Entry Limits value to 1. This is the practical way to make the nested form required. The user will not be able to submit the parent form until at least one entry has been added to the child table. This is especially important for participant registrations, quote requests with line items, recipient lists, and any workflow where an empty nested section makes no sense.
Once the minimum is enabled, make sure to test the validation message. The user should understand that the missing part is specifically the nested form field, not the entire parent submission. If the message looks too technical or remains in English, check the Gravity Forms translation, Gravity Perks translation, and the label of the field itself.
Maximum Entries and Dynamic Limits
A maximum limit protects the form from accidental or intentional overload. For a team, you can limit the number of players; for an estimate, the number of line items; for a timesheet, the number of shifts in a given period. If the limit depends on the user's selection, GravityWiz documentation points to a separate snippet for dynamic minimum and maximum values based on a parent form field. That is no longer a basic configuration, so use it only when the workflow truly requires a variable limit.
Do not overcomplicate the form too early. In most projects, a static minimum and maximum are enough. A dynamic limit makes sense only if the user first selects a plan, seat count, application type, or package, and the number of child entries must strictly match that choice.
Anti-Spam in the Child Form
GravityWiz documentation explicitly notes that if child entries are not being added correctly, you should check whether they are being marked as spam. This is especially likely when aggressive anti-spam tools are enabled on the child form or when an invisible validation step conflicts with modal submission. Gravity Forms recommends using multiple anti-spam strategies, but with Nested Forms it is important to test the child form inside the parent page, not in isolation.
If an entry disappears after submitting the modal window, check the child form's entry list and the spam filter. If your test entries show up there, temporarily disable the problematic check only on the child form or replace it with a more compatible method. Do not disable protection across the whole site without a reason: start with the specific form and a controlled test scenario.
How the Parent and Child Form Relationship Works
Understanding the relationship between the forms helps prevent most errors. The parent form is the main submission. The child form is the template for a repeatable record. When the user clicks the add button, Nested Forms loads the child form into a modal window, accepts its submission, and adds a row to the table in the parent form. The final submission of the parent form records the entire dataset as one complete workflow.
Child Entries Are Not Just Regular Table Rows
The main practical difference is that each child entry is created as a separate form entry. That means it can have its own fields, values, validation, and potential feeds. This is more powerful than a simple list, but it requires discipline. If you are calculating a total, you need to choose the correct merge tag explicitly. If you are exporting data, you need to select child fields when exporting the parent form. If you are configuring an integration, you need to understand whether the feed is tied to the parent form or the child form.
The {Parent} Merge Tag
The special {Parent} merge tag lets you pass values from the parent form into the child form. The documentation describes two main uses: populating a child form field with data entered in the parent form, and displaying parent-entry data inside child form notifications. For regular fields, you use the field ID. For compound fields such as name or address, you need to specify the input ID in the FIELDID.INPUTID format.
A practical example: the parent form includes a "Team Name" field, and the child form needs to store that team name in a hidden field for each participant. In a child field that supports a default value, you can use {Parent:3}, where 3 is the parent form field ID. For a name or address field, you need a more specific input ID, such as {Parent:1.3} for one part of a compound field.
Do not guess field IDs. Open the form editor and confirm the ID of the field you need. A single wrong number will lead to an empty value, an incorrect calculation, or a confusing notification.
When Child Form Feeds Are Processed
By default, GF Nested Forms processes feeds attached to the child form only after the parent form has been submitted. That is a sensible default: if the user adds a participant but never submits the parent form, you usually do not want to create a user, subscription, or external record. If the parent entry contains delayed actions tied to payment or another condition, child feed processing should also follow the final status of the parent workflow.
In some cases, the opposite logic is needed: for example, a child entry should be sent to a mailing list immediately after it is added. GravityWiz provides the gpnf_enable_feed_processing_setting filter, which enables an advanced feed-processing setting. But that is a solution for a very specific workflow. For a standard form, it is usually better to keep the default behavior because it protects against premature processing of unfinished submissions.
Calculations, Totals, and Exporting Child Entries
Nested Forms is useful not only for collecting repeatable data, but also for calculations. The parent form can use values from child entries inside formulas. GravityWiz documentation describes the :count, :total, :sum, and :set modifiers. They solve different problems, and they are not interchangeable.
How to Choose the Right Modifier
| Modifier | What it returns | When to use it |
|---|---|---|
:count |
The number of child entries | Counting participants, rows, shifts, or items |
:total |
The total of child entry totals based on pricing fields | When the child form contains Pricing Fields and you need to include them in the parent total |
:sum=ID |
The sum of values from a specific child form field | Hours, products, points, seats, or any other numeric values |
:set=ID |
A comma-separated set of values from a specific child form field | Passing a group of numbers into advanced formulas or range analysis |
The merge tag format looks like {FIELD_LABEL:FIELD_ID:MODIFIER}, where FIELD_ID is the ID of the Nested Form field in the parent form, not the ID of a child field. That is one of the common mistakes. For :sum, you also specify the target field ID from the child form. For example, if the Nested Form field in the parent form has ID 4, and the child form field "Hours" has ID 6, the formula will look something like {Entries:4:sum=6}.
Why the Total May Not Reach the Parent Sum
If child entries contain pricing fields, their total does not automatically appear in the parent form. According to the GravityWiz FAQ, to include child entry totals in the overall parent form total you need a Calculated Product field in the parent form and a merge tag with the :total modifier. It is also important to remember that :total works with Pricing fields, not regular Number fields. If you are calculating hours or quantities, you will usually need :sum=ID rather than :total.
Test calculations with three cases: one child entry, several child entries, and deleting one entry before submission. If the total updates correctly in all three cases, the base formula is configured properly. If the value gets stuck, check the Nested Form field ID, the child field ID, and the field type used in the calculation.
Exporting Parent and Child Data
Nested Forms data can be exported together with the parent entry. GravityWiz documentation describes a workflow where, during parent form export, you can choose which child fields to include alongside the parent data. By default, the parent data is output as a separate row above the child rows. For some reports that is convenient, but for analytics tables you often need the parent data repeated on every child-entry row. The documentation points to the gpnf_export_parent_entry_data_on_child_entry_rows hook for that.
For a typical administrator, the best path is this: first configure the export without code and see whether the format is sufficient. If the data is going to accounting, a CRM specialist, or analysts, align in advance on whether they need one row per parent entry or one row per child entry. That decision affects the export structure and any downstream processing.
Practical Scenario: Team Registration Form with Participants
Let us walk through a real scenario that clearly shows how Nested Forms works. The goal is to create a form where a team captain submits one application, enters the team's general details, and adds several participants. The administrator should be able to see the full submission, the participant list, the player count, and, if needed, the total amount or participant limits.
Goal
The user should fill out one form: captain contact details, team name, division, agreement to the rules, and the participant list. Each participant needs a name, email address, age group, number, and optional comment. Once added, participants appear in a compact table, and the captain can correct a row before submitting the application.
Preparation
Create a child form called "Participant." Add the Name, Email, Number, Age Group, and Notes fields. If each participant must have a unique number or a required email address, configure that at the child form level. Then create a parent form called "Team Registration" with captain fields, team name, division, and consent.
Setup Steps
- In the parent form, add the
Nested Formfield from the available Gravity Forms fields. - In the
Nested Formsetting, select the "Participant" child form. - In
Summary Fields, chooseName,Email,Age Group, and, if needed,Row ID. - In
Entry Labels, set clear labels, for example singular "participant" and plural "participants." - In
Entry Limits, set a minimum of1and a maximum that matches your registration rules. - Add a numeric or calculation field to the parent form for participant count if you want to show a counter using the
:countmodifier. - Save the form and open the preview on a page that is as close to production as possible.
If you need to pass the team name into a participant notification, use {Parent} in the child form notification or in a hidden child field. But first confirm that the participant really needs a separate email. By default, child form notifications are tied to the submission of the parent form, and that is often the better behavior: no emails are sent until the captain completes the application.
Validating the Result
Add three test participants. Confirm that after each addition, a row appears in the parent form table. Click Edit for one participant and change the number. Delete another participant and confirm that the counter or total recalculates. Submit the parent form and open the entry in the admin area. You should see both the team's general data and the linked child entries.
A Detail People Often Miss
If the captain adds a participant, closes the page, and never submits the parent form, the child entry may become an orphaned entry - a record without a parent submission. The GravityWiz FAQ states that such entries are treated as expired after a certain period and are cleaned up on a schedule, and that a user's child entries may be restored if they return to the form. So do not treat child entries as final data until the parent form has actually been submitted.
Notifications, Integrations, and Payment Workflows
Nested Forms has one subtle point: the child form can have its own notifications and feeds, but the user experiences the whole process as a single submission. If you send notifications too early, you may generate emails for incomplete submissions. If you process integrations too late, you may delay important automation. That is why notification and feed settings should follow the actual meaning of the workflow.
The Standard Safe Option
For most submissions, keep the default processing: child feeds and notifications run after the parent form is submitted. This is especially important for registrations, payment-related submissions, submissions requiring rule acceptance, and processes where the parent entry is the true final checkpoint. The user can delete or edit child entries before submission, so external systems should not receive an intermediate draft.
When Immediate Processing After the Child Form Is Needed
Processing immediately after a child entry is added is rare. One example is a child form collecting separate mailing addresses, where the business workflow allows a subscription before the final parent submission. GravityWiz provides a filter for this that enables choosing when feed processing occurs. But before turning it on, ask a simple question: what happens if the user adds a child entry and then leaves the page? If that creates an unnecessary external record, keep the standard delay.
Payment Scenarios Without Risky Assumptions
GravityWiz documents an important limitation: payment feeds are not processed on child forms. That means payment logic is best kept on the parent form, while child entries are used for composition and amount calculation. If child entries contain pricing fields, add a Calculated Product field to the parent form and include the child totals via :total. After that, test not just the form itself, but the full sequence: adding child entries, recalculation, submission, payment status, and notifications.
For notifications that must not be sent before successful payment, GravityWiz provides a separate snippet called "Delay Child Notifications for Parent Payment." Use it only in projects that actually include a payment stage and where the child-entry email should wait for the final status of the parent submission. In simple registrations without payment, that snippet is unnecessary.
Templates, Front-End Output, and Careful Customization
By default, Nested Forms displays child entries in a compact table on the public-facing site and shows related data in the admin area. For many projects, that is enough. But if the form is embedded in a complex design, emails need to look polished, or child entries must be displayed in a special format, templates, merge tags, and hooks are available.
When the Standard Output Is Enough
Stick with the default output if the user simply adds entries, reviews the table, and submits the form. This is the most stable option: less risk of breaking updates, translations, accessibility, or mobile behavior. Start customization only after the base workflow is stable.
Template Customization
GravityWiz documentation describes a template system. Template files live in the plugin directory /gp-nested-forms/templates, and overrides should be placed in your theme under /your-theme/gp-nested-forms/. That lets you change child entry output without editing plugin files directly. This approach is suitable for a developer or technical specialist who understands child themes and WordPress updates.
Do not copy templates "just in case." Every copied template becomes your responsibility: when the plugin is updated, the default template may improve while your copy stays outdated. A safe practice is to solve the problem with standard settings first, then try CSS, then filters, and only move to template overrides if those are not enough.
Emails and Confirmations
If you need to display child entries as a table in confirmations or notifications, the GravityWiz FAQ includes a separate snippet for the {all_fields:gpnf_table} modifier. That is useful when the email recipient needs to see child entries in a structured format at a glance. But apply that snippet only after testing it in a real email client: tables can render differently in email, especially if the email theme or another plugin modifies the HTML.
Common Nested Forms Problems and Troubleshooting
Most Nested Forms issues are caused not by the nested form concept itself, but by the surrounding environment: cache, duplicate form embedding, anti-spam, incorrect Summary Fields, wrong IDs in calculations, or modal layer conflicts. Troubleshooting works best when you follow symptoms rather than changing every setting at once.
The Modal Window Does Not Open or Appears Behind the Site Header
Symptom: the user clicks the button to add an entry, but the window is not visible, is covered by the header, popup, widget, or page overlay. Sometimes the form appears frozen even though the script has fired.
Possible cause: a z-index layer conflict, theme scripts, a popup builder, or an optimizer. GravityWiz notes in its FAQ that a theme with a high z-index can cover the Nested Forms window.
What to check: temporarily switch to a default theme or disable popup elements on a test page. Test the form without cache and minification. If the window appears, the issue is in the page environment, not the form structure.
How to fix it: add a targeted CSS fix for .gpnf-dialog.ui-dialog or lower the layer of the conflicting element. If the CSS makes the window visible, verify the mobile view and modal close behavior. Roll back the change if it starts covering other important site popups.
The Child Entry Is Not Added to the Table
Symptom: the modal window submits, but no row appears in the parent form, an error appears, or the entry disappears after the window closes.
Possible cause: Summary Fields are not configured, the child entry is being marked as spam, the AJAX response is cached, or the form scripts conflict with optimization tools.
What to check: open the Nested Form field settings and confirm that summary fields are selected. Then check the child form entries, including spam. If test entries are going to spam, temporarily disable the problematic anti-spam check only on the child form and run the test again.
How to fix it: configure Summary Fields, exclude the form page from cache, disable aggressive minification for Gravity Forms scripts, or replace the anti-spam method. If the form is embedded through a builder, check whether it is duplicated on the page.
The Calculation Shows Zero or the Wrong Amount
Symptom: the number of child entries is counted incorrectly, the total does not change after adding a row, or child pricing totals do not flow into the parent form.
Possible cause: the formula uses a child field ID instead of the Nested Form field ID, the wrong modifier is selected, or a regular number field is used where a pricing field is expected.
What to check: find the Nested Form field ID in the parent form and the relevant field ID in the child form. Use :count to count rows, :sum=ID for the sum of a specific numeric field, and :total for Pricing Fields totals.
How to fix it: rewrite the formula and test adding, editing, and deleting a child entry. If the calculation is tied to payment, test the entire workflow all the way to the final parent submission status.
The Form Breaks in Elementor or Another Page Builder
Symptom: in the editor or on the published page, Nested Forms behaves inconsistently: the window opens once, adding again fails, or values stop updating.
Possible cause: builder element caching, hidden tabs, popups, or re-rendering of the form. GravityWiz documentation specifically mentions Elementor Element Cache as a potential conflict with dynamic form elements.
What to check: place the same form on a simple test page without the builder. If it works there, disable the builder's conflicting features one by one. Also verify that the form is not embedded twice on the same page.
How to fix it: disable element caching for the form page, use the native Gravity Forms block, or place the form on a dedicated page instead of inside a complex popup. If the form must appear in several places, create a copy of the form with a different ID rather than embedding the same form again.
Data Does Not Reach Zapier or Another Parent Form Integration
Symptom: the parent entry is sent to the integration, but the child fields are missing or arrive in the wrong format.
Possible cause: child entries are stored as separate entries, while the parent form feed receives only parent entry data. The GravityWiz FAQ notes that there may be no built-in way to map child data directly inside the parent form feed; in practice, the workaround is separate feeds for the parent and child forms or an API-based solution.
What to check: define exactly what the target system should receive: the parent submission, each child entry separately, or a combined JSON payload. That decision determines the integration architecture.
How to fix it: for simple scenarios, use two separate flows: one for the parent form and one for the child form. For more complex API integrations, use a tool that can send parent and child entries in the required format, or design separate server-side processing.
Validating the Result Before Publishing the Form
Once configured, it is not enough to click Preview. Nested Forms affects the public site, the admin area, entries, notifications, calculations, and sometimes external integrations. That is why you need a short but complete test plan before publishing.
Minimum Test Plan
- Open the form page in a normal browser and in incognito mode.
- Add one child entry, then several entries in a row.
- Edit the first entry and confirm that the summary table updates.
- Delete one entry and check limits, counters, and calculations.
- Try submitting the parent form without child entries if a minimum is supposed to be required.
- Test the form on a mobile screen: the modal window, fields, buttons, and summary table should all be usable.
- Submit the final application and open the parent entry in the admin area.
- Check child entries, notifications, exports, and integrations if they are part of the workflow.
If the site uses caching, repeat the test after clearing the cache and while acting as a regular visitor. If the form is available only to logged-in users, test with the actual user role that will submit it. Do not rely on an administrator test alone: admins may have permissions and scripts that regular users do not.
What a Good Result Looks Like
A well-built Nested Forms setup does not force the user to think about the technical nesting. They see a clear add button, fill out one child entry, return to the parent form, and see a short table. After submission, the administrator sees the parent application, the linked child entries, correct totals, and understandable notifications.
If, after testing, you still need to explain to the user "which form they are actually submitting," the structure is too complicated. Simplify the labels, reduce the number of Summary Fields, shorten the child form, or split the process into multiple steps.
Video for a Practical Use Case
The official GravityWiz documentation for Nested Forms includes a specific YouTube example about invoice or purchase entry forms with multiple products. It is useful if you want to see not an abstract nested form, but a real-world concept: one parent submission collects multiple line items, and Nested Forms keeps those repeatable rows inside a single overall submission. The video works best as a visual supplement to the sections on calculations, line items, and result validation, not as a replacement for the setup guidance in this article.
Gravity Forms Nested Forms FAQ
Can Gravity Forms Nested Forms be used as a regular field repeater?
Yes, but it is important to understand the difference. The plugin can work as a repeater for Gravity Forms, but the repeatable group is submitted through a modal window and creates child entries. If all you need is a simple table with a couple of text columns, it may be more than necessary. If you need a more complex child form with validation, calculations, or notifications, Nested Forms is a much better fit.
Can you place a Nested Form inside another child form?
No. GravityWiz lists this as a known limitation: the Nested Form field cannot be used inside a nested form. If the child entry also needs repeatability, consider a List field, a redesigned structure, or the developer-focused Gravity Forms Repeater API, but do not try to build infinite nesting.
Why are child entries not included in the total?
Because the total must be explicitly included in the parent form. For Pricing Fields, use a Calculated Product field and the :total modifier. For regular numeric fields, use :sum=ID. Make sure the Nested Form field ID comes from the parent form, while the summed field ID comes from the child form.
What happens to child entries if the user never submits the parent form?
Those are treated as orphaned entries - child entries without a parent submission. According to the GravityWiz FAQ, they are cleaned up on a schedule after their retention period expires, and they may be restored if the user returns to the form. So do not trigger critical business processes based only on the fact that a child entry was added if the parent submission has not been completed yet.
Is Nested Forms compatible with Save and Continue?
GravityWiz documentation notes a limitation: child forms loaded through Nested Forms are not compatible with Save and Continue. At the same time, Save and Continue is supported on parent forms and can save and reload child entries added through the Nested Form field. Design the workflow so that draft saving happens at the parent form level.
Why is the modal window not visible on the site?
Common causes include cache, script optimization, a z-index conflict, Elementor Element Cache, a form inside a popup, or embedding the same form more than once on the page. Start troubleshooting with a simple test page that has no builder and no cache, then bring back environment elements one at a time.
Can button text and labels be translated?
Yes, interface strings can be localized through standard WordPress translation tools such as Loco Translate, if the plugin exposes those strings for translation. Labels for the specific field are best set through Entry Labels and the field name itself, so the user sees clear terms like "participants," "shifts," or "line items" instead of technical "entries."
Do you need code snippets for the basic setup?
No. The core workflow - selecting the child form, choosing Summary Fields, setting limits, and validating the result - can be configured through the Gravity Forms editor. Snippets are for special cases: sorting child entries, delaying notifications until payment, dynamic limits, custom email formatting, programmatic creation, or export logic. If the task can be solved through configuration, do not add code.
When Gravity Forms Nested Forms Is the Right Choice
Gravity Forms Nested Forms is worth using when you already have Gravity Forms and need more than just a long form - you need a clean structure of "one parent submission plus multiple child entries." The plugin is especially strong for registrations, estimates, timesheets, applications involving multiple items, and workflows where the repeatable part needs its own fields, validation, and clear output.
Before launch, validate the limitations: do not plan for a nested form inside another nested form, do not expect payment feeds on the child form, be careful with Save and Continue, and test caching, page builders, anti-spam, and duplicate form embedding in advance. Most problems are solved not with complex code, but with correct form architecture: what belongs to the parent, what belongs to the child entry, which fields are visible in Summary Fields, and when notifications should fire.
If, after configuration, you have a clear parent form, a short summary table of child entries, correct calculations, verified export, and a working troubleshooting path, you can move on to testing on a site copy or go straight to download Gravity Forms Nested Forms for installation in the live project. The key point is simple: do not move the form into production without a test submission, entry validation, and a review of the notifications from the perspective of a real user.


