Journal · funnels

Funnel drop-off is usually a schema problem

8 April 2026 · 11 min · Funnel integrity week

Colleagues talking through a problem at a laptop

An education subscription product in Thailand rewrote paywall copy twice because the dashboard showed a cliff between trial start and first invoice. Growth was convinced the price was the villain. Instrumentation Studio’s funnel week showed trial_start firing on screen view. Users who opened the paywall and left were counted as trials. invoice_created lived only on the billing service. Half the cliff was not a funnel.

This pattern is ordinary. In-App Event Tracking Analytics invites people to draw steps. If step one is a view and step two is a server commitment, you have drawn a moral story, not a causal one. Copy will not fix a fire condition.

Ask what must have been true

For each step, write one sentence: “This event fires only if ___.” If you cannot finish the sentence without saying “the user saw,” you probably do not have a conversion event. Views are allowed. They are not commitments. Name them as views: Paywall.viewed, not Trial.started.

Checkout clinics in Studio spend two sessions on a single funnel for this reason. Students find it slow. Mira’s review on the reviews page says so. The worksheet still gets used when a PM asks for one more event, because the alternative is another fake cliff.

Actors must match

A funnel that mixes Buyer.order_placed with Seller.order_accepted as consecutive steps is two processes taped together. Marketplace House Accounts learn this the expensive way: four apps, four dictionaries, 18% disagreement on “order placed” for the same day. One Order object with explicit states is slower to agree on and faster to trust.

Late events and duplicates

Mobile networks in the region drop packets. Users background the app mid-checkout. If your warehouse deduplicates only on event name plus user plus calendar day, you will invent drop-off when the real problem is a retry. Include an event_id and a client timestamp. Funnel models should prefer the earliest successful commitment, not the first packet that arrived.

What to do before another experiment

List the fire condition for each step. Align actors. Check a sample of users who “dropped” and read their raw payloads. If many never met the commitment condition, stop the copy test. Fix the schema. Then, if a real cliff remains, run the experiment. The Funnel Integrity Intensive exists for teams who only want this slice; Studio embeds it as week seven.

Back to the journal