Conversion Funnels
A funnel counts sessions that got at least as far as each step. Cumulative, deliberately: a visitor who arrives straight on the checkout still counts at the top, so the chart can never widen as it goes down. A funnel that widened would be measuring something else.
The built-in WooCommerce funnel
WordPress sites running the plugin are offered a five-step path — product, cart, checkout, order — without configuring anything.
It is only offered to WordPress sites running the plugin, and that restriction is the honest part. Its steps are guesses at WooCommerce's URLs; on a Shopify store or a site with a pasted script tag they would be five confidently-labelled steps of zeros over paths that do not exist, which reads as a broken shop rather than as an inapplicable funnel.
It lives in code rather than as a row created for each site, so improving it improves it everywhere. Duplicate turns it into an editable funnel of your own — at which point it is a row, and stops tracking the built-in one.
Building your own
Each step is one of four kinds, and the difference between the first and the other three is the thing to understand:
| Step | Matches on | Reliability |
|---|---|---|
| Page | a URL pattern | A guess. A renamed permalink defeats it silently. |
| Lead | a stored lead | A row. Exact. |
| Order | a recorded order | A row. Exact. |
| Click | a recorded click on a selector | A row. Exact. |
Every computed step reports whether it was matched by URL, so an empty top of funnel can tell you why it is empty instead of leaving you to guess between "nobody visits this page" and "this is not the page's URL any more".
The money column
Abandoned value and Ordered value are shown only when the funnel actually passes through
the checkout, and are otherwise blank rather than zero.
The reason is that the site-wide cart total exists for the same window and would happily render underneath any funnel at all. Printing it under a funnel over blog pages invites reading it as that funnel's result, which is a wrong number that looks like a right one.
Sites with no funnels
A Shopify or script-only site sees an empty state rather than the built-in funnel, for the
reason above. Create one from the steps that suit the site — a lead step and a click step
need no URL guessing at all, and both read rows rather than patterns.
Date ranges
A date-only end of range covers the whole of that day, not midnight at its start. That sounds obvious and was not: before it was fixed, asking for a range ending today reported the site as having had no activity today.