Description
Your forms already work. Learn where they could work better.
FormVela adds a focused dashboard inside WordPress. See how visible forms become submissions, explore field-level activity, and compare mobile and desktop performance.
The free plugin includes:
- Unlimited detected forms, with a 7-day or 30-day view.
- Form views, starts, submission attempts and confirmed submissions.
- Abandonment after 30 minutes of inactivity.
- Last-field attribution, filled-field counts, validation errors and refocuses.
- Active focus time, step reach and a transparent field friction heuristic.
- Device comparison, daily activity and searchable form reports.
- Local data storage, automatic retention cleanup and optional consent gating.
Built-in adapters recognize Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Elementor Forms, Formidable Forms, Ninja Forms, Forminator and Bricks Forms. Provider versions, custom markup, AJAX configuration and redirect behavior affect coverage. Test your own forms before relying on the numbers. Paid form-builder plugins are not included.
Custom HTML forms are also detected. To confirm successful custom submissions, dispatch the documented success event only after your server accepts the form. A click on Submit is never treated as proof of success. Cross-origin iframe forms and shadow DOM forms are not supported.
This plugin does not deliver forms, recover leads, send follow-up messages or connect to an external analytics service. Those responsibilities remain with your form provider.
Privacy
Collection is off until a site administrator enables it. No tracking cookies or local-storage identifiers are created. A cryptographically random interaction ID lives only in memory on the current page. Repeated visits and reloads are separate interactions, not unique-person counts.
Only allowlisted interaction metadata is sent to this website’s REST API: a random interaction ID, structural form and field hashes, a public WordPress page ID, form-builder name, static form/field labels, broad screen category, completion booleans, counters, step numbers and durations. The server adds timestamps.
Entered values, selected-option text, file contents/names, full URLs, referrers and persistent visitor IDs are not stored in analytics. Password, search, login, checkout, hidden, anti-spam and recognizable payment fields are excluded. Do not put personal data in static form names or field labels. Email-like and phone-like text in labels is additionally redacted.
For basic abuse prevention, a salted hash of the connection IP is held in a WordPress transient for one minute. The raw IP is not saved by this plugin. The web server, host, form provider or other plugins may separately process personal data.
Global Privacy Control is always honored. Do Not Track is honored by default. Enable “Wait for analytics consent” and connect your consent manager to prevent collection before consent. No consent manager is bundled and no legal-compliance guarantee is made. Suggested privacy-policy text is available in WordPress Privacy settings.
Interaction and field records expire after 30 days; daily WordPress cron performs cleanup. Cron requires site traffic or a real cron runner. Discovered form metadata remains until the administrator deletes analytics data. Deactivation preserves analytics. Enable “Delete data on uninstall” before deleting the plugin to remove all plugin data.
Extending the plugin
The free core is fully functional and has no license check or disabled premium implementation. A future, separate add-on can use the hooks and JavaScript API in docs/extensions.md. No Pro code is included in this release.
Screenshots





Installation
- Upload the formvela-form-abandonment-analytics folder to wp-content/plugins, or install the ZIP through Plugins > Add New.
- Activate FormVela – Form Abandonment Analytics.
- Open Form Analytics > Settings and enable collection. Set up your consent integration if required.
- Purge page caches. Visit a public form in a private browser window; administrator visits are excluded by default.
- Open Form Analytics to see the first interaction. Allow approximately 10 seconds for field activity to arrive. Abandonment is finalized after 30 minutes without activity.
FAQ
-
Does this collect personal details entered into a form?
-
No. Completion is calculated in the browser as a boolean. Entered text, option labels, uploaded file names and contents are never included in analytics payloads.
-
Why is a submission not counted?
-
The provider must confirm success through a supported event or successful server-side hook. Failed validation, failed mail delivery in Contact Form 7, spam rejection and submit-button clicks do not count. Custom forms need the documented success callback. Browser/network blocking and custom provider flows may cause undercounting.
-
How do I track a custom form?
-
Views and fields are automatic. After the server confirms success, use:
form.dispatchEvent(new CustomEvent(‘faan:success’, { bubbles: true }));
Call this before a redirect. Use data-faan-name on the form for a friendly name and data-faan-id for a stable structural identifier. Use data-faan-label for field labels, data-faan-step on step containers, and data-faan-ignore to opt a form or field out.
-
How do I connect my consent manager?
-
Turn on “Wait for analytics consent”. On each page, after analytics consent, dispatch:
document.dispatchEvent(new CustomEvent(‘faan:consent’, { detail: { granted: true } }));
Use granted: false to stop further collection. You can instead set window.faanConsent = true before the tracker loads. This plugin does not remember consent across pages.
-
What do drop-off and friction mean?
-
Drop-off is the number of abandoned interactions whose last touched field was this field, divided by interactions that reached it. It does not prove that the field caused abandonment. Friction combines drop-off (60%), the proportion of error-affected interactions (25%), and active time capped at 30 seconds (15%). Scores appear only after 10 reached interactions. It is a heuristic, not AI or a statistical prediction.
-
Why are the counts different from another analytics product?
-
This measures visible form interactions per page load, not unique users. Hidden forms are not counted until visible. Consent, privacy signals, script blocking and confirmed-success requirements also affect counts. Sessions still in progress are shown separately from abandonment.
-
Will it work with a cache or optimization plugin?
-
The tracker obtains a fresh, short-lived collection token from a non-cacheable endpoint, rather than embedding expiring visitor nonces in cached pages. Exclude its REST endpoints from caching. Aggressive script delay can miss early interactions; exclude assets/tracker.js from delay-until-interaction settings. Re-test after changing optimization settings.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“FormVela – Form Abandonment Analytics” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “FormVela – Form Abandonment Analytics” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial free release with local, value-free form analytics, supported builder adapters and extension hooks.
