Skip to main content

Field Drop-off Analysis

Field drop-off tracking shows which form fields users interact with and where they stop. This helps identify friction points that cause abandonment.

How It Works

When a user focuses on or changes a form field, a field_interaction event is recorded with the field's name attribute. By comparing interaction counts across fields, you can see exactly where users drop off.

REST API

Get Field Drop-off Data

GET /wp-json/cf/v1/analytics/{form_id}/field-dropoff

Response:

[
    { "field_name": "name", "interactions": "450" },
    { "field_name": "email", "interactions": "420" },
    { "field_name": "phone", "interactions": "310" },
    { "field_name": "company", "interactions": "280" },
    { "field_name": "budget", "interactions": "150" },
    { "field_name": "message", "interactions": "140" },
    { "field_name": "submit", "interactions": "130" }
]

Results are sorted by interaction count (descending), giving you a natural funnel view.

PHP Usage

use Core_Forms\Analytics\Dashboard;

$dropoff = Dashboard::get_field_dropoff( $form_id );

foreach ( $dropoff as $field ) {
    printf(
        "%s: %d interactions\n",
        $field['field_name'],
        $field['interactions']
    );
}

Reading the Data

Drop-off Rate Between Fields

Calculate the percentage of users who proceed from one field to the next:

name:    450 interactions (100%)
email:   420 interactions (93% of name)
phone:   310 interactions (69% of name)  <- 24% drop here
company: 280 interactions (62% of name)
budget:  150 interactions (33% of name)  <- 29% drop here
message: 140 interactions (31% of name)

In this example, the biggest drop-offs occur at phone (24% drop) and budget (29% drop).

Common Patterns

Steep early drop-off: The form loads but users leave quickly. The first field may be too personal (e.g., asking for phone number first).

Drop at a specific field: A particular field is causing friction. Common culprits: - Phone number fields (users reluctant to share) - Budget/salary fields (too personal too soon) - Long textarea fields (too much effort) - File upload fields (users don't have files ready)

Gradual decline: Normal attrition across a long form. Consider splitting into multi-step or removing optional fields.

Client-Side Tracking

The JavaScript tracker sends field_interaction events when users interact with fields:

// Tracked via AJAX
POST /wp-admin/admin-ajax.php
action=cf_track_event
form_id=123
event_type=field_interaction
field_name=email
page_url=https://example.com/contact

The tracker records each field focus/change, subject to the 30-events-per-minute rate limit per IP per form.

Optimizing Based on Data

  1. Move high-friction fields later -- Put easy fields first (name, email) before harder ones (budget, upload).
  2. Make drop-off fields optional -- If users abandon at a field, consider making it optional.
  3. Add help text -- Fields with high drop-off may benefit from a description explaining why the data is needed.
  4. Remove unnecessary fields -- If a field has very low interaction, users may be abandoning before reaching it. Consider removing it entirely.
  5. Use conditional fields -- Show advanced fields only when relevant using data-show-if attributes.

Related