Form Response Volume as a Predictor
Definition
Section titled “Definition”Application rate by number of form responses submitted, controlling for total touch volume bucket. A form response is an active submission — a stronger signal of intent than a passive pageview. This page tests whether form volume predicts application independently of total engagement.
Summary
Section titled “Summary”The most counterintuitive finding in this dataset: one form submission is below the overall baseline (12.9%, 0.76x lift), while zero form submissions is essentially at baseline (16.7%, 0.99x). The signal doesn’t emerge until two or more forms — where the rate jumps to 31.2% and climbs from there.
A single form submission appears to be an inquiry action, not an intent signal. It’s often the first touch in a funnel, not evidence of return engagement. Two or more submissions indicates a prospect came back — and that return is what predicts application behavior.
The cross-tab confirms this: within every touch bucket up to 50, having 1 form consistently underperforms having 0 forms. At high touch volumes (51+), the gap closes because engagement volume dominates.
Application Rate by Form Response Count
Section titled “Application Rate by Form Response Count”| Form Responses | People | Applicants | Avg Engagement Touches | App Rate | Lift |
|---|---|---|---|---|---|
| 0 | 160,511 | 26,757 | 19.3 | 16.7% | 0.99x |
| 1 | 41,796 | 5,372 | 43.2 | 12.9% | 0.76x |
| 2 | 7,188 | 2,242 | 112.8 | 31.2% | 1.85x |
| 3 | 2,033 | 871 | 192.1 | 42.8% | 2.54x |
| 4 | 772 | 396 | 270.8 | 51.3% | 3.04x |
| 5+ | 760 | 353 | 322.1 | 46.4% | 2.75x |
Cross-Tab: Form Responses × Touch Volume
Section titled “Cross-Tab: Form Responses × Touch Volume”| Touch Bucket | Form Bucket | People | Applicants | App Rate |
|---|---|---|---|---|
| 0 | 0 forms | 126,843 | 12,916 | 10.2% |
| 1–2 | 0 forms | 442 | 296 | 67.0% |
| 1–2 | 1 form | 14,746 | 254 | 1.7% |
| 1–2 | 2+ forms | 768 | 56 | 7.3% |
| 3–5 | 0 forms | 706 | 317 | 44.9% |
| 3–5 | 1 form | 5,408 | 98 | 1.8% |
| 3–5 | 2+ forms | 1,009 | 55 | 5.5% |
| 6–10 | 0 forms | 2,064 | 296 | 14.3% |
| 6–10 | 1 form | 4,536 | 90 | 2.0% |
| 6–10 | 2+ forms | 970 | 39 | 4.0% |
| 11–20 | 0 forms | 5,840 | 469 | 8.0% |
| 11–20 | 1 form | 4,722 | 131 | 2.8% |
| 11–20 | 2+ forms | 1,167 | 44 | 3.8% |
| 21–35 | 0 forms | 5,887 | 786 | 13.4% |
| 21–35 | 1 form | 3,306 | 157 | 4.7% |
| 21–35 | 2+ forms | 1,013 | 75 | 7.4% |
| 36–50 | 0 forms | 3,563 | 936 | 26.3% |
| 36–50 | 1 form | 1,721 | 214 | 12.4% |
| 36–50 | 2+ forms | 711 | 98 | 13.8% |
| 51+ | 0 forms | 15,166 | 10,741 | 70.8% |
| 51+ | 1 form | 7,357 | 4,428 | 60.2% |
| 51+ | 2+ forms | 5,115 | 3,495 | 68.3% |
Key Insight
Section titled “Key Insight”A single form submission is not a strong intent signal — it converts below baseline and underperforms zero forms within every touch bucket. The signal emerges at two or more submissions, which indicates a prospect returned to engage again. At high touch volumes (51+), form count matters less because engagement volume is the dominant predictor. The actionable threshold is: two form submissions + sustained engagement is a meaningful qualification signal.
Why This Is Important
Section titled “Why This Is Important”In the touch volume analysis, avg_form_responses is remarkably flat across all buckets (0.6–1.3), suggesting form submission count doesn’t scale with total touches the way pageviews do. This raises the question: is submitting even one form a disproportionately strong signal of intent, regardless of how many total touches a person has?
If form submission is a strong independent predictor, it has direct implications for:
- How forms are used in the funnel — as intent signals worth acting on immediately
- Whether low-touch persons who submitted a form deserve different treatment than high-touch persons who never did
- The value of optimizing for form completions vs. pageview volume in paid campaigns
Methodology
Section titled “Methodology”Persons are grouped by their total number of form responses (0, 1, 2, 3, 4, 5+). For each bucket, application rate is calculated across all persons in that group. A second view cross-tabulates form response count against touch volume bucket to isolate the independent effect.
Application Rate by Form Response Count
Section titled “Application Rate by Form Response Count”WITH touch_counts AS ( SELECT person_id, COUNT(CASE WHEN touch_type = 'form_response' THEN 1 END) AS form_responses, COUNT(CASE WHEN touch_category = 'engagement' THEN 1 END) AS engagement_touches FROM person_touches GROUP BY person_id),
applied AS ( SELECT DISTINCT person_id FROM person_tags WHERE tag_type = 'applied' AND tag_value = 'Yes'),
labeled AS ( SELECT p.id AS person_id, COALESCE(tc.form_responses, 0) AS form_responses, COALESCE(tc.engagement_touches, 0) AS engagement_touches, CASE WHEN a.person_id IS NOT NULL THEN 1 ELSE 0 END AS applied FROM persons p LEFT JOIN touch_counts tc ON p.id = tc.person_id LEFT JOIN applied a ON p.id = a.person_id),
overall AS ( SELECT ROUND(SUM(applied) * 1.0 / COUNT(*), 3) AS overall_application_rate FROM labeled)
SELECT CASE WHEN form_responses = 0 THEN '0' WHEN form_responses = 1 THEN '1' WHEN form_responses = 2 THEN '2' WHEN form_responses = 3 THEN '3' WHEN form_responses = 4 THEN '4' ELSE '5+' END AS form_response_bucket, COUNT(*) AS people, SUM(applied) AS applicants, ROUND(AVG(engagement_touches), 1) AS avg_engagement_touches, ROUND(SUM(applied) * 1.0 / COUNT(*), 3) AS application_rate, o.overall_application_rate, ROUND((SUM(applied) * 1.0 / COUNT(*)) / NULLIF(o.overall_application_rate, 0), 2) AS application_rate_liftFROM labeled lCROSS JOIN overall oGROUP BY 1, o.overall_application_rateORDER BY MIN(form_responses);Cross-Tab: Form Responses × Touch Volume Bucket
Section titled “Cross-Tab: Form Responses × Touch Volume Bucket”WITH touch_counts AS ( SELECT person_id, COUNT(CASE WHEN touch_type = 'form_response' THEN 1 END) AS form_responses, COUNT(CASE WHEN touch_category = 'engagement' THEN 1 END) AS engagement_touches FROM person_touches GROUP BY person_id),
applied AS ( SELECT DISTINCT person_id FROM person_tags WHERE tag_type = 'applied' AND tag_value = 'Yes'),
labeled AS ( SELECT p.id AS person_id, COALESCE(tc.form_responses, 0) AS form_responses, COALESCE(tc.engagement_touches, 0) AS engagement_touches, CASE WHEN a.person_id IS NOT NULL THEN 1 ELSE 0 END AS applied FROM persons p LEFT JOIN touch_counts tc ON p.id = tc.person_id LEFT JOIN applied a ON p.id = a.person_id)
SELECT CASE WHEN engagement_touches = 0 THEN '0' WHEN engagement_touches BETWEEN 1 AND 2 THEN '1-2' WHEN engagement_touches BETWEEN 3 AND 5 THEN '3-5' WHEN engagement_touches BETWEEN 6 AND 10 THEN '6-10' WHEN engagement_touches BETWEEN 11 AND 20 THEN '11-20' WHEN engagement_touches BETWEEN 21 AND 35 THEN '21-35' WHEN engagement_touches BETWEEN 36 AND 50 THEN '36-50' ELSE '51+' END AS touch_bucket, CASE WHEN form_responses = 0 THEN '0 forms' WHEN form_responses = 1 THEN '1 form' ELSE '2+ forms' END AS form_bucket, COUNT(*) AS people, SUM(applied) AS applicants, ROUND(SUM(applied) * 1.0 / COUNT(*), 3) AS application_rateFROM labeledGROUP BY 1, 2ORDER BY CASE touch_bucket WHEN '0' THEN 1 WHEN '1-2' THEN 2 WHEN '3-5' THEN 3 WHEN '6-10' THEN 4 WHEN '11-20' THEN 5 WHEN '21-35' THEN 6 WHEN '36-50' THEN 7 ELSE 8 END, form_bucket;