Support Log in

57. Migration API

Developer Guide
Prefer video? Watch the Form Forge tutorials 9 short guides covering every feature Watch

Import forms from Contact Form 7, Gravity Forms, WPForms, and Ninja Forms.

Supported Sources

SourceFormsEntriesDetection Method
Contact Form 7YesNopost_type = 'wpcf7_contact_form'
Gravity FormsYesYesTable wp_gf_form exists
WPFormsYesPaid storage onlypost_type = 'wpforms'
Ninja FormsYesCurrent nf_sub posts + legacy nf3_subs storageTable wp_nf3_forms exists

Running Migration

php
if ( class_exists( 'FORMFORGE_Migration' ) ) {
    $migration = FORMFORGE_Migration::instance();
    // Available sources: 'cf7', 'gravity', 'wpforms', 'ninja'
}

Field Type Mapping (CF7)

CF7 TypeForm Forge Type
texttext
emailemail
telphone
textareatextarea
selectselect
checkboxcheckbox
radioradio
filefile_upload

WPForms file-upload, Ninja Forms file, and Gravity Forms fileupload are also normalized to file_upload. Migration preserves accepted file extensions from CF7 filetypes, WPForms extensions, Ninja nf3_field_meta upload type settings, and Gravity Forms allowedExtensions when those values exist.

For Ninja Forms 3.x, current field metadata is read from wp_nf3_field_meta; placeholders, choice options, required flags, and file upload limits should not be inferred from the base wp_nf3_fields row alone. Required flags may arrive as MySQL BIT(1) bytes and must be decoded before casting to boolean. Current free Ninja Forms submissions are stored as nf_sub posts with _form_id, _seq_num, and _field_ postmeta; older wp_nf3_subs / wp_nf3_sub_meta rows are still imported when present.

Gravity Forms entries store compound fields under sub-input ids such as 1.3, 1.6, or 3.1. Form Forge aggregates supported Name, Address, and checkbox sub-inputs into one readable migrated submission value for the corresponding field label. Gravity Forms field descriptions, CSS classes, admin labels, default confirmation messages, and simple admin/user email notification settings are copied when they map safely. Third-party add-on feeds, payment settings, conditional logic, and provider-specific integration configs are intentionally not migrated.

Post-Migration Steps

  1. Review migrated forms in the builder
  2. Update notification email addresses
  3. Replace old shortcodes in content
  4. Test each form
  5. Deactivate the old form plugin

—

Forge AI Assistant Online

Hi! I'm the Form Forge AI assistant. Ask me anything about the plugin — setup, features, troubleshooting, or development.

Just now
Powered by Forge AI · Browse docs