{"id":365117,"date":"2026-09-09T20:47:54","date_gmt":"2026-09-09T20:47:54","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ingotforge-form-viewer\/"},"modified":"2026-09-09T20:47:43","modified_gmt":"2026-09-09T20:47:43","slug":"ingotforge-form-viewer","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ingotforge-form-viewer\/","author":23481317,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.4.4","stable_tag":"2.4.4","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"IngotForge Form Viewer","header_author":"ingotpress","header_description":"Imports Gravity Forms JSON exports and runs the resulting forms independently with entries, notifications, conditional logic, uploads, signatures, and save-and-resume.","assets_banners_color":"0d537e","last_updated":"2026-09-09 20:47:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/ingotforge-form-viewer\/","header_author_uri":"https:\/\/ingotforge.wordpress.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.4.4":{"tag":"2.4.4","author":"ingotpress","date":"2026-09-09 20:47:43","revision":3688979}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689028,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3689028,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3689028,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"ingotforge-form-viewer\/form-viewer":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"ingotforge-form-viewer\/form-viewer","version":"2.4.4","title":"IngotForge Form Viewer","category":"widgets","icon":"feedback","description":"Display a standalone form imported from a Gravity Forms JSON export.","keywords":["form","gravity forms","imported form"],"textdomain":"ingotforge-form-viewer","attributes":{"formId":{"type":"integer","default":0},"showTitle":{"type":"boolean","default":true},"appearance":{"type":"string","default":""},"maxWidth":{"type":"string","default":""},"alignment":{"type":"string","default":""}},"supports":{"html":false,"anchor":true,"align":["wide","full"]},"editorScript":"ingofovi-block-editor","editorStyle":"ingofovi-block-editor"}},"tagged_versions":["2.4.4"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[358,187790,279998,601,1655],"plugin_category":[42],"plugin_contributors":[269642],"plugin_business_model":[],"class_list":["post-365117","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form","plugin_tags-form-entries","plugin_tags-form-importer","plugin_tags-forms","plugin_tags-gravity-forms","plugin_category-contact-forms","plugin_contributors-ingotpress","plugin_committers-ingotpress"],"banners":{"banner":"https:\/\/ps.w.org\/ingotforge-form-viewer\/assets\/banner-772x250.png?rev=3689028","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ingotforge-form-viewer\/assets\/icon.svg?rev=3689028","icon":"https:\/\/ps.w.org\/ingotforge-form-viewer\/assets\/icon.svg?rev=3689028","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>IngotForge Form Viewer is a standalone form importer, renderer, entry manager, and notification system for forms originally authored in Gravity Forms.<\/p>\n\n<p>Create and export a form on a source site, import its JSON file into IngotForge Form Viewer, and publish the converted form with a shortcode or the Form Viewer block. Gravity Forms is not required on the destination site.<\/p>\n\n<p><strong>Gravity Forms is an authoring and export source, not a runtime dependency.<\/strong><\/p>\n\n<h4>Standalone form runtime<\/h4>\n\n<ul>\n<li>Imports one or more forms from Gravity Forms or IngotForge Form Viewer JSON exports.<\/li>\n<li>Validates imports, detects duplicates, reports unsupported source features, and preserves source metadata for diagnostics.<\/li>\n<li>Renders and processes forms independently of Gravity Forms.<\/li>\n<li>Supports multi-page forms, progress navigation, conditional fields, and conditional page branching.<\/li>\n<li>Supports text, email, number, telephone, URL, date, time, password, textarea, select, multiselect, radio, checkbox, consent, name, address, HTML, section, hidden, upload, signature, and repeater\/list fields.<\/li>\n<li>Performs browser and server-side validation and sanitization.<\/li>\n<li>Supports honeypot protection, minimum submission time, optional rate limiting, schedules, login requirements, and entry limits.<\/li>\n<li>Supports confirmation messages, selected WordPress pages, and validated local redirects.<\/li>\n<li>Stores entries in the plugin's own WordPress database table.<\/li>\n<li>Sends configurable administrator and submitter notifications through <code>wp_mail()<\/code>.<\/li>\n<li>Supports merge tags, branded HTML email, adjustable logo borders and radius, and independent logo-caption and site-name typography.<\/li>\n<li>Supports guest and logged-in save-and-resume drafts.<\/li>\n<\/ul>\n\n<h4>Administration<\/h4>\n\n<ul>\n<li>Dashboard summaries for forms, entries, unread entries, and recent activity.<\/li>\n<li>Searchable, sortable, filterable, and paginated form and entry screens.<\/li>\n<li>Add, edit, preview, duplicate, export, activate, deactivate, and delete actions.<\/li>\n<li>Guided drag-and-drop JSON importer with browser-side inspection and server-side validation.<\/li>\n<li>Structured field editor with ordering, duplication, choices, repeater columns, conditional logic, and advanced JSON access.<\/li>\n<li>Separate panels for behavior, confirmations, email, save-and-resume, uploads, spam protection, appearance, and advanced settings.<\/li>\n<li>Test-email recipient and template controls that use the values currently shown in the editor.<\/li>\n<li>Copyable shortcodes and a server-rendered Form Viewer block.<\/li>\n<li>Entry statuses, bulk actions, CSV import\/export, and notification resend.<\/li>\n<li>System status, additive table repair, upload-directory protection, and daily retention maintenance.<\/li>\n<li>WordPress personal-data exporter and eraser integration.<\/li>\n<li>A built-in <strong>Tutorial \/ Manual<\/strong> page under the Form Viewer administration menu.<\/li>\n<\/ul>\n\n<h4>Current identifiers<\/h4>\n\n<p>Version 2.4.0 and later use one collision-safe IngotForge naming convention throughout the package:<\/p>\n\n<ul>\n<li>PHP namespace: <code>IngotForgeFormViewer<\/code><\/li>\n<li>Internal identifier prefix: <code>ingofovi_<\/code><\/li>\n<li>Slug and asset prefix: <code>ingofovi-<\/code><\/li>\n<li>Forms table: <code>{$wpdb-&gt;prefix}ingofovi_forms<\/code><\/li>\n<li>Entries table: <code>{$wpdb-&gt;prefix}ingofovi_entries<\/code><\/li>\n<li>Form field keys: <code>ingofovi_field_*<\/code><\/li>\n<li>Settings option: <code>ingofovi_settings<\/code><\/li>\n<li>Submission action: <code>ingofovi_submit_form<\/code><\/li>\n<li>Class files: <code>class-ingofovi-*.php<\/code><\/li>\n<li>Front-end assets: <code>ingofovi-frontend.css<\/code> and <code>ingofovi-frontend.js<\/code><\/li>\n<li>Primary shortcode: <code>[ingotforge_form_viewer id=\"123\"]<\/code><\/li>\n<li>Optional aliases: <code>[ingotforge-form-viewer id=\"123\"]<\/code> and <code>[ingofovi_form id=\"123\"]<\/code><\/li>\n<\/ul>\n\n<p>The plugin does not search for, migrate, alias, or fall back to a different identifier set. A new installation therefore starts with only the current tables, options, drafts, uploads, routes, hooks, and assets.<\/p>\n\n<h4>Privacy and data retention<\/h4>\n\n<p>Form definitions and entries are stored in custom WordPress tables. Depending on the fields used, entries may contain personal data. Uploaded files are stored under the WordPress uploads directory. The plugin does not send data to IngotForge, create a remote account, load remote assets, or include analytics or telemetry.<\/p>\n\n<p>Data is retained when the plugin is deactivated or deleted by default. Complete removal occurs only when an administrator explicitly enables the destructive uninstall option before deleting the plugin. Administrators can configure entry retention, upload cleanup, IP collection, and personal-data erasure behavior.<\/p>\n\n<h3>Trademark Notice<\/h3>\n\n<p>Gravity Forms is a trademark of Rocketgenius, Inc. This plugin is independently developed and is not affiliated with, sponsored by, or endorsed by Rocketgenius, Inc.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Back up the WordPress database and <code>wp-content\/uploads<\/code> directory.<\/li>\n<li>Remove any package that should no longer be installed. For a completely clean installation, also remove its data using its own uninstall controls.<\/li>\n<li>Upload and activate the IngotForge Form Viewer ZIP.<\/li>\n<li>Open <strong>Form Viewer &gt; Import<\/strong> and select a Gravity Forms or IngotForge Form Viewer JSON export, or open <strong>Form Viewer &gt; Add New<\/strong> to create a form.<\/li>\n<li>Review, preview, and test the form, including both email templates.<\/li>\n<li>Set the form to Active and save it.<\/li>\n<li>Copy its shortcode from <strong>Form Viewer &gt; Forms<\/strong>, or insert the Form Viewer block.<\/li>\n<li>Open <strong>Form Viewer &gt; Tutorial \/ Manual<\/strong> for the complete administration guide.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"must%20gravity%20forms%20be%20installed%20on%20the%20destination%20site%3F\"><h3>Must Gravity Forms be installed on the destination site?<\/h3><\/dt>\n<dd><p>No. Gravity Forms is needed only on the source site where the original form is authored and exported.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20submit%20entries%20back%20to%20gravity%20forms%3F\"><h3>Does the plugin submit entries back to Gravity Forms?<\/h3><\/dt>\n<dd><p>No. Imported forms are converted to the plugin's local format. IngotForge Form Viewer renders, validates, stores, and emails submissions itself.<\/p><\/dd>\n<dt id=\"which%20shortcode%20should%20i%20use%3F\"><h3>Which shortcode should I use?<\/h3><\/dt>\n<dd><p>Use <code>[ingotforge_form_viewer id=\"123\"]<\/code>, replacing <code>123<\/code> with the form ID. The aliases <code>[ingotforge-form-viewer]<\/code> and <code>[ingofovi_form]<\/code> are available when shortcode aliases are enabled under <strong>Form Viewer &gt; Settings<\/strong>.<\/p><\/dd>\n<dt id=\"where%20is%20the%20manual%3F\"><h3>Where is the manual?<\/h3><\/dt>\n<dd><p>Open <strong>Form Viewer &gt; Tutorial \/ Manual<\/strong> in the WordPress administration menu. A Markdown copy is also included in <code>docs\/MANUAL.md<\/code>.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20unsupported%20gravity%20forms%20add-on%20fields%3F\"><h3>What happens to unsupported Gravity Forms add-on fields?<\/h3><\/dt>\n<dd><p>They are reported during import and retained as diagnostic source metadata rather than being silently discarded or represented as working fields. Add-on configuration is preserved for diagnostics but is not presented as an implemented add-on feature.<\/p><\/dd>\n<dt id=\"does%20uninstall%20delete%20forms%20and%20entries%3F\"><h3>Does uninstall delete forms and entries?<\/h3><\/dt>\n<dd><p>Not by default. Destructive uninstall must be enabled explicitly under <strong>Form Viewer &gt; Settings<\/strong> before the plugin is deleted.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20contact%20an%20external%20service%3F\"><h3>Does the plugin contact an external service?<\/h3><\/dt>\n<dd><p>No. It makes no telemetry, analytics, licensing, or remote runtime requests. Email delivery uses the WordPress site's configured mail transport.<\/p><\/dd>\n<dt id=\"what%20does%20a%20successful%20test-email%20result%20mean%3F\"><h3>What does a successful test-email result mean?<\/h3><\/dt>\n<dd><p>It means WordPress accepted the message for delivery. Inbox delivery still depends on the site's mail or SMTP configuration and the recipient's mail provider.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.4.4<\/h4>\n\n<ul>\n<li>Replaced the remaining direct symlink deletion during opt-in uninstall with WordPress's <code>wp_delete_file()<\/code> API.<\/li>\n<li>Retained the existing symlink-safe recursive cleanup, upload-directory containment checks, and default data-retention behavior.<\/li>\n<\/ul>\n\n<h4>2.4.3<\/h4>\n\n<ul>\n<li>Canonicalized stored upload paths before file deletion and resend-email attachment collection.<\/li>\n<li>Restricted file operations to existing regular files inside the plugin-managed uploads directory.<\/li>\n<li>Rejected traversal, foreign-host, malformed, out-of-root, and symlink-escape paths while preserving valid uploaded files.<\/li>\n<\/ul>\n\n<h4>2.4.2<\/h4>\n\n<ul>\n<li>Moved automatic unread-to-read entry updates into a dedicated capability-checked, nonce-protected administrator action.<\/li>\n<li>Kept direct entry-detail URLs display-only so viewing a URL without the trusted action cannot modify stored data.<\/li>\n<li>Preserved automatic mark-as-read behavior for entry links generated by the Dashboard and Entries screens.<\/li>\n<\/ul>\n\n<h4>2.4.1<\/h4>\n\n<ul>\n<li>Made nonce verification explicit in each affected administrator request handler so Plugin Check can recognize the existing CSRF protection.<\/li>\n<li>Added the missing translator comment for an upload-error placeholder.<\/li>\n<li>Preserved all functionality and storage conventions from version 2.4.0.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Adopted the collision-safe <code>ingofovi_<\/code> \/ <code>ingofovi-<\/code> prefix across declarations, stored data, routes, handles, assets, markup, and documentation.<\/li>\n<li>Removed <code>Tested up to<\/code> from the main plugin header; compatibility is declared only in this readme.<\/li>\n<li>Added schema-aware recursive validation and sanitization for saved, imported, and test-email form definitions.<\/li>\n<li>Restricted file processing to upload fields declared by the active form while retaining multi-file and per-field restrictions.<\/li>\n<li>Centralized administrator capability and nonce enforcement before privileged request data is processed.<\/li>\n<li>Preserved all form, entry, email, branding, typography, draft, import\/export, privacy, block, maintenance, and uninstall functionality.<\/li>\n<\/ul>\n\n<h4>2.3.2<\/h4>\n\n<ul>\n<li>Corrected scalar POST handling so input is validated, unslashed, and sanitized at the point of use.<\/li>\n<li>Shortened the WordPress.org short description to remain within the 150-character limit.<\/li>\n<li>Preserved all behavior and the clean IngotForge rebranding introduced in version 2.3.1.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>Completed a clean, direct IngotForge Form Viewer rebrand throughout PHP, JavaScript, CSS, database identifiers, request names, hooks, class files, assets, documentation, and translation sources.<\/li>\n<li>Established a clean IngotForge-only namespace and naming convention throughout the package.<\/li>\n<li>Removed the retired product identifiers and compatibility layer so new installations start cleanly.<\/li>\n<li>Added the integrated <strong>Tutorial \/ Manual<\/strong> administration page and packaged Markdown manual.<\/li>\n<li>Retained all working form, entry, email, typography, upload, draft, privacy, import\/export, block, and administration functionality from version 2.2.7.<\/li>\n<\/ul>\n\n<h4>2.2.7<\/h4>\n\n<ul>\n<li>Corrected false unsaved-change warnings when opening an editor or settings page.<\/li>\n<li>Preserved the navigation warning for genuine unsaved edits.<\/li>\n<\/ul>\n\n<h4>2.2.6<\/h4>\n\n<ul>\n<li>Added independent typography controls for the email logo caption and site name.<\/li>\n<\/ul>\n\n<h4>2.2.5<\/h4>\n\n<ul>\n<li>Added an independent email-logo border-radius control.<\/li>\n<\/ul>\n\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>Corrected logo-border mode, thickness, color, and test-email synchronization.<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Added configurable email-logo border modes, thickness, and color.<\/li>\n<li>Corrected test-email request sanitization.<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Added recipient-driven administrator and submitter test emails directly in the Email tab.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Corrected Forms-table spacing between Shortcode and Entries.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added the modern dashboard, importer, structured editor, entry management, block, privacy tools, repair tools, and responsive front-end experience.<\/li>\n<\/ul>","raw_excerpt":"Import Gravity Forms JSON exports and run standalone forms with entries, emails, uploads, signatures, conditional logic, and save-and-resume.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365117"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ingotpress"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365117"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365117"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365117"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365117"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365117"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}