Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/chomachomachoma/formpulse/archive/refs/heads/main.zipGravity Forms Analytics & Abandonment Recovery Suite
FormPulse turns Gravity Forms into a measurable, recoverable conversion channel. It records how visitors move through your forms — views, starts, field-level drop-off, and completions — and automatically emails a recovery link to visitors who begin a form but never submit.
Features
- Conversion funnel — per-form views → starts → completions with rates, under Forms → Analytics.
- Field-level drop-off — see exactly which field visitors abandon at, ranked by drop-off %.
- Abandonment recovery — auto-saves partial entries every 30s and sends exactly one recovery email per abandoned session with a tokenized link that repopulates the form.
- Privacy-first — IPs are SHA-256 hashed (never stored raw), sensitive field types are excluded from captured data, and raw-event retention is configurable (default 90 days).
- Fast dashboard — reads pre-aggregated daily rollups via a REST API; Chart.js is bundled locally (no CDN).
Requirements
- WordPress 6.8+
- PHP 8.1+
- Gravity Forms 2.5+ (tested against 2.10.5)
Installation
- Copy the
formpulsedirectory intowp-content/plugins/. - Activate FormPulse in Plugins (Gravity Forms must be active).
- Open Forms → Analytics.
Architecture
| Layer | Class(es) |
|---|---|
| Bootstrap | FormPulse\Plugin, Activator, Deactivator |
| Schema / data | Database\Schema, Database\Repository |
| Tracking | Tracking\Tracker + assets/js/tracker.js |
REST API (formpulse/v1) |
Rest\RestRoutes |
| Aggregation | Analytics\Aggregator (cron), Analytics\FunnelService |
| Recovery | Recovery\AbandonmentService (cron), Mailer, RePopulator, Finalizer |
| Admin | Admin\DashboardPage, Admin\Assets + assets/js/dashboard.js |
Data model
Four tables (prefixed {$wpdb->prefix}gf_formpulse_): events (raw funnel/interaction), partial (one upserted row per in-progress session, with recovery token), daily (per-form daily rollup), field_stats (per-form/field/day drop-off rollup).
Cron
formpulse_aggregate_daily(hourly) — rolls raw events intodaily/field_statsand prunes old raw rows.formpulse_scan_abandoned(every 15 min) — sends recovery emails, one per abandoned session.
REST endpoints (/wp-json/formpulse/v1)
| Route | Method | Auth |
|---|---|---|
/event |
POST | wp_rest nonce |
/autosave |
POST | wp_rest nonce |
/stats/funnel |
GET | gravityforms_view_entries |
/stats/fields |
GET | gravityforms_view_entries |
Development
composer install
composer test # phpunit unit suite
bin/smoke.sh # activation + REST + table + cron smoke checks
License
GPL-2.0-or-later. See LICENSE.txt.