Touch Volume Application Rates
Definition
Section titled “Definition”How many marketing touches it takes to meet or surpass our standard application rate.
Summary
Section titled “Summary”This analysis groups people by the total number of marketing touches they received and compares each group’s application rate to the overall application rate. The goal is to identify the point at which touch volume appears to be associated with application behavior at or above our baseline.
Rather than evaluating a single message, channel, or campaign, this view looks at cumulative exposure. It helps answer a practical planning question: how much marketing contact is typically needed before a population begins to perform at or above the standard application rate?
All Fiscal Years
Section titled “All Fiscal Years”| Touch Bucket | People | Applicants | App Rate | Lift |
|---|---|---|---|---|
| 0 | 126,843 | 12,916 | 10.2% | 0.60x |
| 1–2 | 15,956 | 606 | 3.8% | 0.22x |
| 3–5 | 7,123 | 470 | 6.6% | 0.39x |
| 6–10 | 7,570 | 425 | 5.6% | 0.33x |
| 11–20 | 11,729 | 644 | 5.5% | 0.32x |
| 21–35 | 10,206 | 1,018 | 10.0% | 0.59x |
| 36–50 | 5,995 | 1,248 | 20.8% | 1.23x |
| 51–75 | 5,956 | 2,151 | 36.1% | 2.14x |
| 76–100 | 4,062 | 2,208 | 54.4% | 3.22x |
| 101–150 | 5,352 | 3,711 | 69.3% | 4.10x |
| 151–250 | 5,962 | 4,928 | 82.7% | 4.89x |
| 250+ | 6,306 | 5,666 | 89.9% | 5.32x |
The threshold bucket — where application rate first exceeds the overall baseline of 16.9% — is 36–50 touches at 20.8% (1.23x lift).
Key Insight
Section titled “Key Insight”The application rate crosses the overall baseline at 36–50 engagement touches. Below that threshold, even persons with 20+ touches convert well below average. Above it, rates climb steeply and consistently — reaching 89.9% at 250+ touches. A person with 36 or more recorded engagement touches is meaningfully more likely to apply than the average prospect in the funnel.
Why This Is Important
Section titled “Why This Is Important”Touch volume is one of the clearest ways to evaluate whether a prospective student population has received enough marketing exposure to reasonably expect application behavior.
This metric helps us:
- Understand whether low-performing populations may be under-touched
- Identify the touch-volume range where application behavior begins to normalize
- Compare lightly touched and heavily touched audiences
- Inform campaign planning, audience prioritization, and communication strategy
- Avoid assuming that a single touch or small number of touches is enough to influence behavior
This analysis should not be interpreted as proof that touches alone caused applications. Higher-touch audiences may differ from lower-touch audiences in important ways, including inquiry source, intent level, geography, academic interest, or stage in the funnel. However, the metric is useful for understanding the relationship between cumulative marketing activity and application outcomes.
Methodology
Section titled “Methodology”The query first counts the total number of marketing touches associated with each person. It then identifies whether each person has an applied status tag.
Each person is assigned to a touch-volume bucket based on their total number of touches:
- 0
- 1-2
- 3-5
- 6-10
- 11-20
- 21-35
- 36-50
- 51-75
- 76-100
- 101-150
- 151-250
- 250+
For each bucket, the query calculates:
- The number of people in the bucket
- The number of applicants in the bucket
- The application rate for the bucket
- The overall application rate across all people
- The lift compared to the overall application rate
The vs_overall_lift value shows how each bucket performs relative to the overall baseline. A value of 1.00 means the bucket is performing exactly at the overall application rate. A value above 1.00 means the bucket is outperforming the overall average, while a value below 1.00 means it is underperforming.
The key threshold is the first touch bucket where application_rate is greater than or equal to overall_application_rate, or where vs_overall_lift is at least 1.00.
WITH touch_counts AS ( SELECT person_id, COUNT(*) AS total_touches, COUNT(CASE WHEN touch_category = 'engagement' THEN 1 END) AS engagement_touches, COUNT(CASE WHEN touch_category = 'exposure' THEN 1 END) AS exposure_touches, COUNT(CASE WHEN touch_type = 'ping' THEN 1 END) AS pageview_count, COUNT(CASE WHEN touch_type = 'form_response' THEN 1 END) AS form_response_count 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.total_touches, 0) AS total_touches, COALESCE(tc.engagement_touches, 0) AS engagement_touches, COALESCE(tc.exposure_touches, 0) AS exposure_touches, COALESCE(tc.pageview_count, 0) AS pageview_count, COALESCE(tc.form_response_count, 0) AS form_response_count,
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),
bucketed AS ( SELECT person_id, applied, total_touches, engagement_touches, exposure_touches, pageview_count, form_response_count,
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' WHEN engagement_touches BETWEEN 51 AND 75 THEN '51-75' WHEN engagement_touches BETWEEN 76 AND 100 THEN '76-100' WHEN engagement_touches BETWEEN 101 AND 150 THEN '101-150' WHEN engagement_touches BETWEEN 151 AND 250 THEN '151-250' ELSE '250+' END AS touch_bucket
FROM labeled),
overall AS ( SELECT ROUND( SUM(applied) * 1.0 / COUNT(*), 3 ) AS overall_application_rate FROM labeled)
SELECT b.touch_bucket,
COUNT(*) AS people, SUM(b.applied) AS applicants,
ROUND( SUM(b.applied) * 1.0 / COUNT(*), 3 ) AS application_rate,
o.overall_application_rate,
ROUND( ( SUM(b.applied) * 1.0 / COUNT(*) ) / NULLIF(o.overall_application_rate, 0), 2 ) AS application_rate_lift,
ROUND(AVG(b.total_touches), 1) AS avg_total_touches, ROUND(AVG(b.engagement_touches), 1) AS avg_engagement_touches, ROUND(AVG(b.exposure_touches), 1) AS avg_exposure_touches, ROUND(AVG(b.pageview_count), 1) AS avg_pageviews, ROUND(AVG(b.form_response_count), 1) AS avg_form_responses
FROM bucketed bCROSS JOIN overall o
GROUP BY b.touch_bucket, o.overall_application_rate
ORDER BY CASE b.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 WHEN '51-75' THEN 8 WHEN '76-100' THEN 9 WHEN '101-150' THEN 10 WHEN '151-250' THEN 11 ELSE 12 END;