Migrating from CF7, WPForms, or Gravity FormsPRO
Practical walkthrough for moving your forms from Contact Form 7, WPForms, or Gravity Forms into FormForge Pro. Automated importers are on the roadmap but not shipped yet, so the current path is manual recreation. This page covers the field-type mapping per source plugin, recreating notifications and integrations, swapping embed points on your pages, and the safe cutover sequence that avoids double-processing submissions during the transition.
FormForge Pro doesn’t yet include importers for CF7, WPForms, or Gravity Forms. They’re on the roadmap for a future release. Until they ship, use the manual-recreation walkthrough below. Recreating a typical contact form takes 5 to 10 minutes with FormForge’s drag-and-drop builder, so the manual path isn’t as painful as it sounds.
The safe cutover sequence
The most important thing to get right is the sequence. Running FormForge Pro alongside your old plugin during the transition is fine (WordPress handles it), but if you leave both plugins collecting submissions on the same page, you’ll get double emails and double integration fires. Do it in this order:
Install FormForge Pro alongside your existing form plugin
Don’t deactivate the old plugin yet. Both can coexist. Your existing forms keep working; you’re just adding FormForge to the site.
Inventory every form you have
Make a list. For each form, note: which pages embed it, the field structure, the notifications (who gets the email and what does it say), the integrations (Mailchimp, Zapier, PayPal, etc.), any conditional logic. This is your migration checklist.
Recreate one form at a time, starting with the lowest-traffic one
Build the new FormForge version on a private staging page (set Visibility to Private in the page’s Publish panel so only admins can view it). Copy the field structure using the mapping tables below. Save.
Test the new form end-to-end
Submit a test entry. Confirm: the entry appears in FormForge > Entries, the notification email arrives, any integrations fire correctly (check the Mailchimp audience, the Zap task log, whatever destinations you configured). Do this before touching the production page.
On the production page, swap the shortcode
Edit the page. Delete the old plugin’s shortcode or block (like [contact-form-7 id="123"] for CF7, or the WPForms / Gravity Gutenberg block). Replace with FormForge’s shortcode [formforge id="456"] where 456 is your new form’s ID (visible in FormForge > All Forms). Update the page.
Monitor for a day or two before moving to the next form
Watch entries roll in, confirm nothing regressed. If there’s an issue, roll back by swapping the shortcode back to the old plugin’s. The old plugin is still installed and active, so the fallback is instant.
Repeat for every form
Work through your inventory one form at a time. Highest-traffic form goes last, so you build muscle memory on the low-risk forms first.
Export historical entries from the old plugin
Before deactivating, export each form’s historical entries to CSV via the old plugin’s built-in export. Store the CSVs wherever your team’s form-data archive lives. This is a one-shot; you can’t recover exports after uninstall.
Deactivate and delete the old plugin
Only after every form is migrated, historical entries are exported, and you’re confident in the new setup. Deactivate first (keeps DB tables in case you missed something), monitor for a week, then delete (removes DB tables). Standard WordPress plugin uninstall practice.
Field-type mapping tables
FormForge Pro’s field palette covers the standard set every form plugin has, plus some specialty fields. Use the tables below to translate each source-plugin field to its FormForge Pro equivalent.
Contact Form 7 → FormForge Pro
| CF7 form-tag | FormForge Pro field | Notes |
|---|---|---|
text, text* | Text | The * variant maps to Required checked |
email, email* | Same required-variant rule | |
url, url* | Website | |
tel, tel* | Phone | |
number, number* | Number | Min / max attributes carry over |
date, date* | Date | |
textarea, textarea* | Textarea | |
select, select* | Dropdown | Each CF7 pipe-syntax option becomes a Choice |
checkbox | Checkbox | |
radio | Radio | |
file, file* | File Upload | Copy the filetypes and limit options to Allowed File Types + Max File Size |
acceptance | Consent | The consent-checkbox equivalent; check Required |
quiz | Not directly supported | Use FormForge’s Quiz Mode (Business tier) if the goal is scored questions |
recaptcha | Global setting | FormForge configures reCAPTCHA globally in Settings, not per-field |
WPForms → FormForge Pro
| WPForms field | FormForge Pro field | Notes |
|---|---|---|
| Single Line Text | Text | |
| Website / URL | Website | |
| Phone | Phone | |
| Number Slider | Number | Slider UI not currently in FormForge; falls back to number input |
| Date / Time | Date + Time | WPForms’s combined picker maps to two FormForge fields |
| Paragraph Text | Textarea | |
| Dropdown | Dropdown | |
| Multiple Choice | Radio | |
| Checkboxes | Checkbox | |
| File Upload | File Upload | |
| Name | Name | First / Last name field |
| Address | Address | Multi-part address field |
| Signature (add-on) | Signature | FormForge’s signature field is included, no add-on needed |
| Rating (add-on) | Star Rating | Same, included |
| Payment / Total / Single Item | Product + Total | WPForms’s payment fields map to FormForge’s Product and Total fields |
| HTML | HTML | |
| Section Divider | Section | |
| Page Break | Page Break | |
| Rich Text (add-on) | Textarea | Currently no rich-text field; textarea is the closest match |
Gravity Forms → FormForge Pro
| Gravity Forms field | FormForge Pro field | Notes |
|---|---|---|
| Single Line Text | Text | |
| Paragraph Text | Textarea | |
| Drop Down | Dropdown | |
| Number | Number | |
| Checkboxes | Checkbox | |
| Radio Buttons | Radio | |
| Hidden | Hidden | |
| Website | Website | |
| Phone | Phone | |
| File Upload | File Upload | |
| Date / Time | Date + Time | Two fields |
| Name | Name | |
| Address | Address | |
| Product / Total / Shipping (payment fields) | Product + Total | Gravity’s pricing suite maps to FormForge’s Product and Total; Shipping isn’t a first-class field in FormForge (add it as a Product option) |
| Section | Section | |
| Page (multi-page) | Page Break | |
| HTML | HTML | |
| Consent | Consent | |
| Post Fields (Title, Body, Excerpt, Category) | Not directly supported | Gravity’s create-a-post-from-a-submission feature can be approximated with FormForge’s Post Creation (Business tier) |
| List | Repeater | FormForge’s Repeater field is the equivalent for list-of-rows entries |
Recreating notifications
Every form plugin has its own notification config. FormForge’s notification tab lives inside the form builder’s Notifications settings. Recreate each notification manually:
- Recipient: paste the same “send to” address. If your old plugin used a dynamic recipient (like a merge tag pointing at the visitor’s email field), FormForge uses merge tags too: click the field in the builder to see its numeric ID, then use
{fieldId}in the Send To field. - Subject and message: copy them across. FormForge’s merge tags are
{form_title},{entry_id},{all_fields}, and{field_id}(numeric field ID). Convert any source-plugin merge tags to those equivalents. - From Name and From Email: configured globally in FormForge > Settings, not per-form. Set once and applies to every form.
Full detail in Email Notifications: Setup and Troubleshooting.
Rewiring integrations
Your source plugin’s integrations were configured against its form IDs and field IDs. Those all change when you rebuild in FormForge Pro, so every integration needs a fresh configuration:
- Mailchimp / ActiveCampaign / other email marketing: paste the API key globally in FormForge > Integrations, then per form pick the destination list. See Mailchimp Integration for the pattern.
- Zapier or Make: create a new Zap / scenario with the webhook trigger, paste the webhook URL into the form’s Integrations tab. See Zapier, Make, and Google Sheets Integration.
- Stripe / PayPal: paste your API keys globally, add a Product or Total field to the form, enable the payment integration in the form’s Integrations tab. See Stripe Integration and PayPal Integration.
- reCAPTCHA / Cloudflare Turnstile: configured globally in FormForge > Settings, applies to every form. See Anti-Spam.
Send a test submission after wiring each integration. Confirm the destination received it before you cut over the production form.
What to do with historical entries from the old plugin
FormForge Pro doesn’t import old entries. They stay in the source plugin’s database tables until you deactivate and delete the source plugin. Before deactivating, export each form’s historical entries to CSV using the source plugin’s built-in export (Gravity Forms has a comprehensive one; WPForms has one under Entries; CF7 needs a companion plugin like Flamingo which stores entries and lets you export them).
Store the CSVs wherever your team’s form-data archive lives. Don’t try to merge them into FormForge’s entries table:
- Field IDs don’t match, so imported rows would have to be manually re-keyed.
- Any downstream integration configured on the FormForge form would fire against every imported entry as if it were a fresh submission (double-mailings, duplicate Mailchimp subscribes, etc.).
- The audit trail becomes untrustworthy because created_at timestamps get rewritten to the import time by default.
Keep the CSVs as your historical archive. Fresh submissions land in FormForge’s entries table cleanly.
FAQ
Does FormForge Pro have an importer for CF7, WPForms, or Gravity Forms?
Not in the current release. Automated importers are on the roadmap but not yet shipped. In the meantime, migration is manual: recreate each form in FormForge Pro using the field-type mapping tables in this guide, then swap the embed points on your pages. Recreating a typical contact form takes 5 to 10 minutes with FormForge’s drag-and-drop builder.
Can I run FormForge Pro and my old form plugin at the same time during the transition?
Yes, and this is the recommended approach. WordPress lets multiple form plugins coexist. Recreate your forms in FormForge Pro one at a time. For each form, embed the FormForge version alongside (or replacing) the old form, test it end-to-end, then remove the old form’s shortcode from that page. Only deactivate the old plugin once every form has been migrated and you’ve retained a copy of the historical entries if needed.
How do I move my existing form entries from CF7 / WPForms / Gravity to FormForge Pro?
You don’t. Historical entries stay in the source plugin’s database tables. If you need them long-term, export them from the source plugin to CSV before deactivating (each plugin has its own Entries export UI). FormForge Pro starts collecting fresh entries from the moment you publish the migrated form. Merging historical entries into FormForge’s entries table isn’t supported and isn’t recommended (the field IDs won’t match, downstream integrations would fire against imported entries as if they were new submissions).
What if my old form used a field type FormForge Pro doesn’t have?
FormForge Pro’s field palette covers the standard set (text, email, phone, textarea, checkbox, radio, dropdown, file upload, date, name, address) plus specialty fields (signature, star rating, NPS, cascading dropdowns, product/total for payments). If your source plugin had an unusual field type without a direct match, options are: (a) use FormForge’s HTML field to render custom markup, (b) use a text field with a validation rule to approximate the behavior, (c) request the field type via support so we can prioritize it. See the mapping tables above for common source-field-to-FormForge-field pairs.
Do I need to rebuild all my integrations (Mailchimp, Zapier) when migrating?
Yes. Your source plugin’s integrations were configured against its own form IDs and field IDs, which change when you rebuild in FormForge Pro. For each integration: reconfigure it against the new FormForge form in FormForge > Integrations (for API-key-based providers like Mailchimp) or per-form in the Integrations tab (for webhook providers like Zapier and Make). Send a test submission to confirm the data flow before you cut over.
How do I keep the same URL and page for the form after migrating?
You will. The migration doesn’t change page URLs. What changes is the shortcode inside each page. In each page’s editor, replace the old plugin’s shortcode (like [contact-form-7 id="123"] for CF7, or the WPForms/Gravity block) with FormForge’s shortcode ([formforge id="456"] where 456 is your new form’s ID) or Gutenberg block. Update the page, done. The URL stays the same, the SEO stays intact.
What’s the safest sequence for the migration cutover?
Six-step sequence: (1) Install FormForge Pro alongside your existing form plugin. (2) Recreate one form at a time in FormForge, starting with the lowest-traffic form. (3) For each recreated form, embed it on a private staging page and test end-to-end (submit, check entries, check notifications, check integrations). (4) On the production page, replace the old shortcode with the FormForge shortcode. Monitor for issues for a day or two. (5) Repeat for every form. (6) Only after every form is migrated, historical entries are exported, and your team has confidence in the new setup, deactivate the old plugin. Full walkthrough in the safe cutover sequence above.
What license tier includes the fields I need for migration?
Most fields (text, email, dropdown, checkbox, radio, file upload, name, address, signature, page break, HTML, Section) are in every FormForge Pro tier. A few are Business-tier: Quiz Mode, Survey Mode, Conversational Forms, PDF Generation, Calculations, User Registration, Post Creation. If your source form uses any of those, you’ll need at least the Business tier. See FormForge pricing.