Migrating between Ninja Forms and Gravity Forms
This page lists what GravityMigrate does with each kind of Ninja Forms field and setting, in both directions, as read from the migration code itself. The tables are generated from the plugin, so they change when it does. For the steps, and for the wording of the report the wizard shows before it runs, see Migrating forms from another form plugin.
Checked against Ninja Forms 3.8.25.1.
From Ninja Forms into Gravity Forms #
| Ninja Forms field | In Gravity Forms |
|---|---|
textbox | Single Line Text |
textarea | Paragraph Text |
firstname | Name |
lastname | Name |
email | |
phone | Phone |
address | Address |
city | Address |
zip | Address |
number | Number |
file_upload | File Upload |
date | Date |
listselect | Drop Down |
listmultiselect | Multi Select |
listcheckbox | Checkboxes |
listradio | Radio Buttons |
hidden | Hidden |
html | HTML |
hr | Section |
recaptcha | CAPTCHA |
signature | Signature |
turnstile | CAPTCHA |
spam | Single Line Text |
recaptcha_v3 | CAPTCHA |
creditcard | Credit Card |
creditcardnumber | Credit Card |
creditcardcvc | Credit Card |
creditcardexpiration | Credit Card |
creditcardfullname | Credit Card |
creditcardzip | Credit Card |
hcaptcha | CAPTCHA |
hcaptcha-for-ninja-forms | CAPTCHA |
checkbox | Consent |
terms | Checkboxes |
password | Password |
product | Product |
quantity | Quantity |
total | Total |
shipping | Shipping |
starrating | Rating |
repeater | Repeater |
address2 | Address |
listcountry | Drop Down |
liststate | Drop Down |
listimage | Radio Buttons |
confirm | Single Line Text |
passwordconfirm | Password |
note | Hidden |
unknown | Hidden |
user-analytics-utm-source | Hidden |
user-analytics-utm-medium | Hidden |
Ninja Forms tags that are furniture rather than data, so they have no field on the Gravity Forms side: submit, button.
Read but not carried
| Ninja Forms field | Why it stays behind |
|---|---|
spam | An anti-spam question. Gravity Forms protects a form through its settings rather than a field, so there is nothing to import it as. |
creditcardnumber | Part of a credit card field, which is imported whole. On its own it would be a text box collecting a card number. |
creditcardcvc | Part of a credit card field, which is imported whole. On its own it would be a text box collecting a security code. |
creditcardexpiration | Part of a credit card field, which is imported whole. |
creditcardfullname | Part of a credit card field, which is imported whole. |
creditcardzip | Part of a credit card field, which is imported whole. |
Fields that arrive with a note
| Ninja Forms field | What the migration does |
|---|---|
recaptcha | Spam protection: the keys live in Ninja’s own settings, so a carried field would refuse the submissions it exists to protect. |
recaptcha_v3 | The same spam protection, scored invisibly: its keys live in Ninja’s settings rather than on the form. |
hcaptcha | The same spam protection under a different provider, with keys that live in Ninja’s settings. |
turnstile | The same spam protection under a third provider, with keys that live in Ninja’s settings. |
signature | A signature is read as one. Ninja Forms only gained a signature field in 3.15, so writing one back would depend on the version installed at the far end. |
creditcard | A card field is read as one, and Ninja Forms has no card field this export can write back: taking payments there is an add-on, and the fields it registers belong to it. |
creditcardnumber | A part of a card field: refused on import, and unwritable on export for the same reason as the parent. |
creditcardcvc | A part of a card field: refused on import, and unwritable on export for the same reason as the parent. |
creditcardexpiration | A part of a card field: refused on import, and unwritable on export for the same reason as the parent. |
creditcardfullname | A part of a card field: refused on import, and unwritable on export for the same reason as the parent. |
creditcardzip | A part of a card field: refused on import, and unwritable on export for the same reason as the parent. |
hcaptcha-for-ninja-forms | The same protection wired in by hCaptcha’s own plugin rather than a Ninja add-on. |
From Gravity Forms into Ninja Forms #

| Gravity Forms field | In Ninja Forms |
|---|---|
| Single Line Text | textbox |
| Paragraph Text | textarea |
| Name | firstname |
email | |
| Phone | phone |
| Address | address |
| Number | number |
| Date | date |
| Time | textbox |
| Drop Down | listselect |
| Multi Select | listmultiselect |
| Checkboxes | listcheckbox |
| Radio Buttons | listradio |
| Hidden | hidden |
| HTML | html |
| Section | hr |
| Page | Not migrated |
| File Upload | file_upload |
| Website | textbox |
| CAPTCHA | Not migrated |
| Consent | checkbox |
| List | Not migrated |
| Password | password |
| Credit Card | Not migrated |
| Total | total |
| Product | product |
| Quantity | quantity |
| Option | Not migrated |
| Shipping | shipping |
| Coupon | Not migrated |
| Likert | Not migrated |
| Rank | Not migrated |
| Rating | starrating |
| Survey | Not migrated |
| Poll | Not migrated |
| Quiz | Not migrated |
| Post Title | Not migrated |
| Post Body | Not migrated |
| Post Excerpt | Not migrated |
| Post Category | Not migrated |
| Post Tags | Not migrated |
| Post Image | Not migrated |
| Post Custom Field | Not migrated |
| Signature | Not migrated |
| Repeater | repeater |
| Multiple Choice | listcheckbox |
| Image Choice | listradio |
| Chained Selects | listselect |
Form settings Ninja Forms cannot hold
These Gravity Forms settings have no counterpart in Ninja Forms. The migration names each one as left behind: Anti-spam honeypot, Require user to be logged in, Submit button conditional logic.
Merge tags #
Merge tags in notifications and confirmations are translated where both plugins have one:
| Gravity Forms | Ninja Forms |
|---|---|
{all_fields} | {fields_table} |
{admin_email} | {wp:admin_email} |
{form_title} | {form:title} |
{form_id} | {form:id} |
{ip} | {other:user_ip} |
{referer} | {other:referer_url} |
{embed_url} | {wp:post_url} |
{post_id} | {wp:post_id} |
{embed_post:post_title} | {wp:post_title} |
{date_mdy} | {other:date} |
{user:ID} | {wp:user_id} |
{user:user_email} | {wp:user_email} |
{user:display_name} | {wp:user_display_name} |
{user:user_login} | {wp:user_username} |
A merge tag with no counterpart is left as written and named in the report.
Related articles #
- Migrating forms from another form plugin, which links the reference page for every other plugin
- Getting started with GravityMigrate