← All reading

Reading product funnels without mistaking events for shoppers

A product funnel can make a complicated store feel easier to inspect: product viewed → added to cart → checkout started → checkout completed. The sequence is intuitive, but the counts at each step are event measurements. Unless the data and method explicitly link the same shoppers across steps, a funnel should not be read as a record of individual people moving through a journey.

First, know what each step means

Shopify's Web Pixels API defines standard customer events including product_viewed, product_added_to_cart, checkout_started, and checkout_completed. The names are useful shorthand for actions, but each event has its own definition and conditions. For example, Shopify describes product_viewed as an instance of visiting a product details page. Don't assume repeat visits are deduplicated; the event is not a unique-shopper count. Shopify documents checkout_started as an event for starting checkout; behavior can vary between checkout configurations. checkout_completed typically fires once per checkout on the Thank you page; with post-purchase upsells it fires on the first upsell offer page instead. If the page where it should fire fails to load, the event isn't triggered.

These are not interchangeable with Shopify Analytics metrics, sessions, or the order list. Shopify has documented changes to some legacy Analytics event definitions; check definitions when comparing periods or tools.

Counts and ratios need a denominator

Suppose a report shows 100 product-view events and 10 add-to-cart events. You can describe that as 10 add events per 100 view events in that report. You cannot automatically say “10% of shoppers added this product.” The same shopper may have generated multiple view events. Counts can also represent different populations: some people view without adding, and the report may not link one event to another.

Before calculating a rate, write down:

  • Which exact numerator and denominator are used?
  • Are both scoped to the same product(s), date range, and reporting timezone?
  • Are they raw event counts, deduplicated people, sessions, or another measure?
  • Can the system establish that the numerator and denominator belong to the same cohort?

If the report does not establish unique people or a linked cohort, name the result an event ratio. Do not call it a person-level conversion rate or use it to claim an individual journey. A funnel display helps locate count differences, not attribution.

Don't confuse an aggregate funnel with attribution

A chart with four steps does not, by itself, prove that the checkout events came from the people who viewed the product—or that a campaign caused a purchase. That stronger interpretation requires reliable identity/session linkage, defined attribution rules, and coverage across the relevant events. If those conditions aren't verified, keep the claim aggregate and descriptive.

Pixel collection is browser-based behavioral measurement and can be affected by connection, event setup, and customer privacy settings. Shopify explains that pixel privacy settings control when data is collected. A pixel gap is not proof nobody acted.

Respect the start date and the clock

Pixel-derived reporting should not be assumed to contain activity from before the pixel began collecting. Do not promise a historic backfill unless the specific system and source data have been verified to support it. When a chart offers date ranges, check whether its day boundaries use the store's local timezone. A late-evening local event can fall on a different calendar date when interpreted in UTC; comparisons are unreliable if the time basis changes.

Use consistent date ranges and time definitions. Note tracking start, promotions, stock changes, and major site changes. Treat partial days with care. A trend shows when recorded events changed, not why.

Checkout completions are not your order ledger

A checkout_completed pixel event is a customer-event signal. Shopify's documentation says the event is typically triggered on the Thank you page and may not be triggered if that page fails to load. For accounting, fulfillment, refunds, and the definitive record of sales, use Shopify order records and the relevant order reports—not a browser event count. Don't label a pixel completion count “orders” unless the system has reconciled it with order data and disclosed its rules.

Synthetic example—not merchant data: a fictional report for a selected week shows 240 product-view events, 18 cart-add events, 7 checkout-start events, and 4 checkout-completed events. These numbers illustrate how to ask questions, not a benchmark or observed store result. Check event setup and date scope first; then investigate the product page or checkout experience. The figures alone don't establish four people bought, that the same shoppers appear in every step, or that an ad caused the outcomes.

A reader's checklist

  • What standard event does each row represent?
  • Is it an event count, unique visitor count, session count, or order count?
  • Are repeated events included? Is there an explicit shared cohort/linkage method?
  • Are product scope, date range, timezone, and tracking start consistent?
  • Could privacy settings, disconnection, or page-load issues affect coverage?
  • Are purchase claims checked against Shopify orders?
  • Does an export preserve the selected scope and clearly indicate if results are incomplete?

Shopify references: Pixels overview; pixels and customer events; standard Web Pixels events; checkout_started; checkout_completed; Shopify Analytics event-definition updates.

A focused product analytics workflow can move from funnel overview to product detail, local time trends, and an export for further analysis. Verify any app's actual event definitions, eligibility, timezone behavior, coverage, and export safety before depending on it. A clear caveat is part of a useful funnel—not fine print.