Form abandonment is tracked
Why it matters
Form abandonment tracking distinguishes a form nobody starts from a form everyone starts but abandons at field three. Without it you cannot find the field that kills your signup flow — the one asking for phone number, or tax ID, or company size — and you cannot prioritize which friction to remove. Tracking only the final submit gives you the denominator of conversion but never the numerator of drop-off, which is where the optimization gains live.
Severity rationale
Low because abandonment tracking improves optimization precision but its absence does not break primary conversion measurement.
Remediation
Fire a form_started event on first field focus and a form_abandoned event on unmount without submission:
useEffect(() => () => {
if (formStarted && !formSubmitted) analytics.track('form_abandoned', { form_type: 'signup' })
}, [formStarted, formSubmitted])
For multi-step forms, fire form_step_completed with a step number so you can identify the exact step where users drop off. Apply the pattern in components/SignupForm.tsx and any multi-field lead form.
Detection
-
ID:
form-abandonment-tracking -
Severity:
low -
What to look for: Form abandonment tracking fires an event when a user starts filling out a form (focuses on a field) but leaves without submitting. Look for:
onBluroronFocushandlers on form fields that trigger analyticsbeforeunloadevent listeners near form components- Analytics events named
form_abandoned,form_started,form_dropped - Multi-step form tracking with step completion events
-
Pass criteria: At least 1 form with 2 or more fields has abandonment tracking implemented (started + abandoned events, or step-level tracking for multi-step forms). Count the number of multi-field forms and how many have abandonment tracking.
-
Fail criteria: No form abandonment tracking found. All forms track only final submission.
-
Skip (N/A) when: No analytics is present. Skip if the project has no forms. Skip if the project has only single-field forms (e.g., email-only newsletter subscribe) where abandonment tracking adds little value.
-
Detail on fail:
"No form abandonment tracking found. Knowing where users drop off in multi-field forms can identify friction points that reduce conversions." -
Remediation: Track form start and abandonment separately from submission:
const [formStarted, setFormStarted] = useState(false) function handleFirstFocus() { if (!formStarted) { setFormStarted(true) analytics.track('form_started', { form_type: 'signup' }) } } // On component unmount without submission: useEffect(() => { return () => { if (formStarted && !formSubmitted) { analytics.track('form_abandoned', { form_type: 'signup' }) } } }, [formStarted, formSubmitted])For multi-step forms, track each step completion to identify where users drop off.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from marketing-analytics·automated