{"id":344648,"date":"2026-07-24T21:34:50","date_gmt":"2026-07-24T21:34:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/formroster\/"},"modified":"2026-07-24T21:34:30","modified_gmt":"2026-07-24T21:34:30","slug":"judaval-form-roster","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/judaval-form-roster\/","author":23537350,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.3","stable_tag":"0.3.3","tested":"7.0.2","requires":"6.4","requires_php":"8.0","requires_plugins":null,"header_name":"Judaval Form Roster for Contact Form 7","header_author":"Judaval","header_description":"Find Contact Form 7 forms, see where each appears, track review dates, and export a site audit.","assets_banners_color":"","last_updated":"2026-07-24 21:34:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/shanerati\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.3":{"tag":"0.3.3","author":"shanerati","date":"2026-07-24 21:34:30"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"See a site-wide summary and review forms that need attention first.","2":"See where Contact Form 7 forms appear and identify registered forms not found on published content.","3":"Track manual review dates and export a CSV audit record."}},"plugin_section":[],"plugin_tags":[1152,273227,273229,273228,40977],"plugin_category":[],"plugin_contributors":[273230],"plugin_business_model":[],"class_list":["post-344648","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-form-audit","plugin_tags-form-inventory","plugin_tags-unused-forms","plugin_tags-website-maintenance","plugin_contributors-shanerati","plugin_committers-shanerati"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/judaval-form-roster.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Judaval Form Roster gives WordPress administrators a single local roster of Contact Form 7 forms, where each form appears, and when it was last manually reviewed.<\/p>\n\n<p>Use Judaval Form Roster for site audits, maintenance reviews, client handoffs, and finding registered forms that no longer appear on published content.<\/p>\n\n<p>Judaval Form Roster can:<\/p>\n\n<ul>\n<li>Find registered Contact Form 7 forms.<\/li>\n<li>Show published pages and posts where each form was found.<\/li>\n<li>Flag registered forms not found on published content.<\/li>\n<li>Track the latest manual review date and highlight reviews older than 30 days.<\/li>\n<li>Export a CSV audit record for handoffs and maintenance documentation.<\/li>\n<\/ul>\n\n<p>Current verified integration:<\/p>\n\n<ul>\n<li>Contact Form 7<\/li>\n<\/ul>\n\n<p>Judaval Form Roster works locally inside WordPress. It does not submit forms, verify email delivery, or guarantee that every dynamically injected or unsupported placement has been discovered.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>FormRoster runs locally inside WordPress.<\/p>\n\n<p>It stores discovered form metadata, placement URLs, scan timestamps, and manual review timestamps in the site's own WordPress database.<\/p>\n\n<p>FormRoster does not:<\/p>\n\n<ul>\n<li>Collect or store form submissions.<\/li>\n<li>Read lead messages or email contents.<\/li>\n<li>Send site data to an external service.<\/li>\n<li>Set tracking cookies.<\/li>\n<\/ul>\n\n<p>CSV exports are generated locally when an administrator requests them. Uninstalling Judaval Form Roster removes the WordPress options created by the plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>judaval-form-roster<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or upload the ZIP in Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate \u201cJudaval Form Roster for Contact Form 7.\u201d<\/li>\n<li>Open Judaval Form Roster in the WordPress administration menu.<\/li>\n<li>Click \u201cScan site.\u201d<\/li>\n<li>Review discovered forms and record manual review dates where useful.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20judaval%20form%20roster%20submit%20forms%20automatically%3F\"><h3>Does Judaval Form Roster submit forms automatically?<\/h3><\/dt>\n<dd><p>No. FormRoster maps supported forms and published placements. It does not submit forms or verify email delivery.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20read%20or%20store%20form%20submissions%3F\"><h3>Does the plugin read or store form submissions?<\/h3><\/dt>\n<dd><p>No. It stores only discovered form metadata, placement URLs, scan timestamps, and manual review timestamps in the site's own WordPress database.<\/p><\/dd>\n<dt id=\"why%20might%20judaval%20form%20roster%20miss%20a%20form%3F\"><h3>Why might Judaval Form Roster miss a form?<\/h3><\/dt>\n<dd><p>A theme or plugin may inject a form dynamically, store it in an unsupported page builder, or use a form platform not currently supported. Treat the roster as an audit aid, not a completeness guarantee.<\/p><\/dd>\n<dt id=\"is%20an%20unplaced%20form%20broken%3F\"><h3>Is an unplaced form broken?<\/h3><\/dt>\n<dd><p>Not necessarily. It may be an old form, a draft, or a form embedded dynamically. \u201cUnplaced\u201d means Judaval Form Roster found the registered form but did not find it on published WordPress content.<\/p><\/dd>\n<dt id=\"does%20judaval%20form%20roster%20send%20site%20data%20to%20an%20external%20service%3F\"><h3>Does Judaval Form Roster send site data to an external service?<\/h3><\/dt>\n<dd><p>No. The current plugin works locally and makes no automatic external requests.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Renamed the plugin to Judaval Form Roster for Contact Form 7.<\/li>\n<li>Changed the plugin slug and text domain to <code>judaval-form-roster<\/code>.<\/li>\n<li>Preserved existing local inventory and review data from the FormRoster build.<\/li>\n<li>Uses the concise \u201cForm Roster\u201d label inside wp-admin with a small \u201cby Judaval\u201d attribution.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Removed the pre-release agency-research promotion from the administrator screen.<\/li>\n<li>Limited public integration claims to the verified Contact Form 7 workflow.<\/li>\n<li>Updated plugin and readme metadata for WordPress.org submission.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Changed administrator actions to fresh POST forms with explicit nonce fields.<\/li>\n<li>Rebuilds placement links from post IDs when possible so migrated or saved Playground sites do not retain obsolete URLs.<\/li>\n<li>Improved action-link reliability after restoring a saved WordPress Playground.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to FormRoster.<\/li>\n<li>Reframed the product around site audits, handoffs, and manual review tracking.<\/li>\n<li>Added migration from the earlier LeadGuard and Form Census prototype options.<\/li>\n<li>Updated directory copy.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Reframed manual verification as manual review to avoid implying functional testing.<\/li>\n<li>Added a 30-day review interval and clearer product-scope language.<\/li>\n<li>Added CSV formula-injection protection.<\/li>\n<li>Added privacy documentation.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Sorted the roster so forms needing review appear first, followed by reviewed and unplaced forms.<\/li>\n<li>Simplified the scope explanation.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Added initial form discovery adapters.<\/li>\n<li>Added manual review tracking and CSV export.<\/li>\n<\/ul>","raw_excerpt":"Find Contact Form 7 forms, see where each appears, track review dates, and export a site audit.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344648","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=344648"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shanerati"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344648"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344648"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344648"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344648"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344648"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}