Conversion fell 18% week over week. The marketing channel says it is the form. The product channel says it is the page. The exec channel wants an answer by 16:00. This is when most teams open Freshmarketer, stare at the funnel chart, and start guessing. Drop-offs have a small number of causes, investigable in a fixed order. Skip the order and you will spend three days fixing the wrong thing.
The four causes, ranked by likelihood
Most funnel drop-offs are one of:
- Traffic mix shift — different visitors, same funnel. This is the most common cause and the one teams investigate last.
- Technical regression — broken script, redirect loop, form validation bug, tracking gap.
- Content or offer change — copy edit, image swap, price test going wrong.
- Friction change — a new required field, additional captcha, longer load time.
Investigate in this order. The traffic check is cheap and dispositions about half of all “the funnel is broken” pages.
Step one: did the traffic change?
In Freshmarketer, segment the funnel by source. Compare week-over-week composition.
A funnel held steady on net but composed of a different traffic mix is almost always traffic-side: a paid campaign got cheaper, an organic post went viral, an affiliate pulled creative. The fix is in the source channel, not on the funnel page.
# Pseudo-query: pull funnel entry by source for two windows
curl -s "https://acme.freshmarketer.com/api/v1/funnels/$FUNNEL_ID/sessions" \
-H "Authorization: Token $FM_KEY" \
-G \
--data-urlencode "start=2026-05-07" \
--data-urlencode "end=2026-05-13" \
| jq '[.sessions[] | {source: .utm_source, converted: .converted}]
| group_by(.source)
| map({source: .[0].source,
count: length,
cvr: ([.[] | select(.converted)] | length) / length})'
Run that for last week and this week. If the source mix has shifted significantly — say, paid social dropped 30% and direct grew 30% — your blended conversion rate is mathematically going to move even if every individual step is unchanged. Stop here, brief the channel team, do not touch the funnel page.
Step two: technical regression
If traffic mix is stable, check for technical breakage before content. The classes of bug, in order of frequency:
- A deployment broke the tracking pixel. Funnel chart looks like a cliff because Freshmarketer is no longer receiving step-completion events from the page.
- A form validation rule started rejecting a class of input (regex tightened, server-side check changed).
- A third-party script (analytics, chat widget, marketing tag) is throwing and killing page interactivity.
- LCP regressed past 4 seconds and mobile bounce spiked.
Use the heatmap and session recordings on the step that dropped. If sessions are not being recorded for the step, that itself is the answer — the script is gone. See freshmarketer-heatmaps-usage for how to wire session recording correctly so it survives deploys.
Open a couple of recordings and watch them. A user clicking the submit button six times before bouncing is a server-side rejection. A user hovering on a field, leaving, returning, leaving is a copy or trust problem. Recordings are the highest-bandwidth diagnostic tool you own.
Step three: content and offer
Only now look at what changed in the page itself. The git log for the marketing site or the change history in the page builder is the authoritative source. “Did anyone edit this in the last 14 days” is the question. Most teams discover an unannounced copy change by a product manager who thought they were fixing a typo and accidentally removed the social proof block.
Patterns that consistently drop conversion when added:
- A new headline that loses the specific benefit and gains brand voice.
- A price change without supporting context.
- A “compliance update” paragraph wedged above the CTA.
- A hero image replaced with a stock photo.
If a content change correlates with the drop, the test is to revert in a split — half traffic gets the old version, half gets the new — and let it run for the volume needed to be significant. See freshmarketer-ab-testing for the split-test setup so you do not pollute the experiment with the very thing you are trying to measure.
Step four: friction audit
If steps one through three are clean, the cause is friction creep — small additions that individually feel reasonable and collectively wreck conversion.
Walk the funnel on a phone, on cellular, in incognito, as a first-time visitor. Time every step. Count every field. Count every click. Compare to last quarter’s walkthrough notes (you have those, right? if not, start now). Three signals to watch:
- A field added since the last walkthrough.
- A required field that used to be optional.
- A new step that did not exist before.
- A modal or popup that did not exist before, especially on mobile.
Friction creep is mostly invisible to the team that added it because each addition was a reasonable response to a real request. The drop happens at the cumulative weight.
The investigation template
When a funnel drops, paste this template into the incident channel and walk it top to bottom. It forces order on the panic.
# Funnel Drop Investigation
Funnel: ___
Window: ___ to ___
Magnitude: ___ % drop on overall CVR
## Step 1: Traffic mix
- Source distribution this week vs last:
- Conclusion: shift / no shift
## Step 2: Technical
- Tracking events received: yes / no / partial
- Recent deploys touching funnel: ___
- Console errors in sample sessions: ___
- LCP / TTFB delta: ___
- Conclusion: regression / clean
## Step 3: Content
- Page or copy changes since drop began: ___
- Image, headline, CTA changes: ___
- Conclusion: change correlates / no change
## Step 4: Friction
- New required fields: ___
- New steps or modals: ___
- Mobile walkthrough timing delta: ___
- Conclusion: friction added / steady
Top-down, every box filled, before any fix ships. Half the value of the template is that it slows down the team enough to not fix the wrong thing.
What to instrument before next time
Future investigations get faster with three pieces of infrastructure:
- Weekly automated snapshot of source mix and per-source CVR, archived for 90 days.
- A deploy log that annotates the funnel chart with deploy timestamps so regressions are obvious.
- A quarterly mobile walkthrough recorded as a baseline so friction creep is visible against a known good.
These are unglamorous, take half a day each, and turn a four-day investigation into a one-hour one.
Bottom line
Funnel drops have a ranked list of causes. Traffic first because it is most common and cheapest to check. Technical second because it is binary. Content third because it requires comparison. Friction last because it is the slowest to diagnose. Skip the order and you spend the week tuning a form field while paid social quietly fixed itself.