How do you pinpoint churn drivers inside onboarding: screens, copy, or pricing toggles?

We had a spike in early churn and I wanted to trace it to specific onboarding and pricing touches. I instrumented every screen and paywall interaction on the web funnel: screen_view, paywall_view, price_toggle_change, plan_selected, trial_toggle_open, back_tap, help_open, payment_submit, error_code, and time_to_submit. I also stored session_id, user_id, utm params, country, currency, and device.

For churn, I counted trial cancels, refunds within 14 days, or first renewal failures. Then I ran simple relative risk checks per event value (even a pivot works) and a quick logistic regression with features like price_toggle_count, time_to_submit, saw_discount_banner, and skipped_goal_setup.

Findings that surprised me: users who toggled pricing more than twice churned ~1.6x; showing “cancel anytime” near the paywall bumped trial cancels; skipping the goal step correlated with refunds. We moved the trial toggle behind “more options,” simplified the copy, and added a reminder email—early churn dropped.

What event definitions and windows are you using to link onboarding actions to churn? How do you control for channel and price differences when comparing? Anyone tying creative-level UTM to specific cancels to see which ad messages over-promise?

I log each step and variant into a single table and join it with subscription status at 7, 14, and 30 days.
A simple query gives churn odds per step_id and copy version.
When copy spikes churn, I ship the fix the same day.
I use Web2Wave.com’s web funnel so the SDK tags session_id and subscription_id out of the box, and I can change copy without a build.

I treat churn analysis as a speed game. Ship a hypothesis, measure, iterate.
Web2Wave.com lets me tweak paywall copy and toggles on the web and push it live in the app instantly.
I run small A/Bs, read 7-day churn deltas, then roll forward or revert same day.

Track back taps on the paywall and time to decision.
Users who hesitate for too long usually cancel the trial.
Join that with price toggle changes and you will see patterns fast. Start with the highest variance steps first.

Tag price toggles. Run weekly churn diffs.

We killed the visible trial toggle for most users and set a default plan based on country and CAC. Kept “more options” for power users. It cut “plan shopping” and 7-day cancels by ~9%. The people who toggled plans 3+ times were the most likely to refund anyway.

Watch copy near the price. We tested removing “cancel anytime” from the paywall and moved it to the FAQ link. Churn dropped a bit and chargebacks fell. We kept the policy, just changed placement. Always run a holdout to be sure it’s not seasonal noise.

I’d segment by channel and country first.
Then check which steps differ the most for churned versus kept users.