GA4's default reports are built for a generic site. Funnel analysis isn't one of them. If you're not building custom explorations and events, you're basically guessing where people drop off. Here's the setup we use so we can see exactly which step is bleeding and by how much.

Events you need before anything else

You want a clear chain: landing (or key page view), add to cart, begin checkout, add payment info, purchase. If you're on Shopify or WooCommerce, most of these fire via the standard ecommerce events — but double-check. begin_checkout and add_payment_info are the ones that get missed. For lead gen, you need form_start and form_submit (or equivalent) so you can see form abandonment. Without those, funnel analysis is a dead end.

Funnel exploration: the build

In Explore, create a Funnel exploration. Steps = your events in order. First step is usually the landing or first key page. Last step is purchase (or lead submit). Set the breakdown to Session source/medium so you can see which channel holds up and which falls apart. The default "drop-off" column shows how many people left at each step. That's your leak map. We often add a second dimension — device or country — to see if the leak is mobile-specific or region-specific.

Segments that actually help

Build a segment for "Started checkout but did not purchase." Use it everywhere. That's your cart abandoner cohort. Another useful one: "Viewed product, did not add to cart." That tells you whether the problem is product page or post-add. Comparing those segments in the funnel (e.g. do they have different step conversion rates?) often surfaces the real bottleneck. We've had clients discover that mobile checkout drop-off was 2x desktop — and the fix was layout and field count, not offer.

Attribution and time windows

Funnel explorations use the attribution model you set in the property. For most ecommerce we stick to last click or last non-direct click so the funnel reflects "what actually closed." If you're running long consideration cycles, consider a longer conversion window (e.g. 30 days) so you're not missing delayed conversions. One more thing: exclude internal traffic and bots via filters so your numbers aren't inflated. Boring, but it matters.

Once this is in place, you're not inferring where the leak is — you're reading it off the report. Then it's a matter of fixing that step and watching the next period's funnel. Rinse and repeat.