Case study · CRO

Cutting trial-checkout abandonment on a subscription SaaS

A rebuilt signup flow took checkout completion from about 61% to 68.5% and dropped abandonment from roughly 39% to 31%, without touching traffic or price. The heavy form turned out to be a stack default, not a hard constraint.

November 2026 · ~6 min read · WordPress, MemberPress, Stripe, GA4

The whole fix in one picture: a $0 trial that asked for about ten fields, cut to three or one click.

The funnel already worked. Organic traffic was healthy and a steady trickle of trials converted every week. The problem sat at the very end: of the people who actually began the trial checkout, a large share never finished. No new traffic, no price change, no product rebuild was needed. The friction was almost entirely in the form itself, and most of it was a setting that could be switched off.

The context

The client runs a subscription apparel-mockup platform: users browse a large library of garment mockups, drop their own artwork onto a blank, and export a high-resolution product image. It is monetised with a 7-day free trial that rolls into a monthly plan, built on WordPress with MemberPress handling membership and checkout, and Stripe and PayPal as the payment gateways.

What I set out to achieve

One focused goal: lift the rate at which people who start the trial checkout actually complete it. No new traffic, no price change, no product rebuild. Just remove whatever was making ready-to-sign-up users give up at the form.

What I did

1. Measured the leak in GA4 before touching anything

I built the checkout funnel from the GA4 event stream, comparing checkout-start events against completed-purchase events. The gap was stark: roughly 39% of people who began checkout abandoned before finishing, and the subscribe page itself had an engagement rate of only 16%, the lowest of any key page. That told me the problem was the checkout surface, not the traffic reaching it.

2. Audited the live checkout field by field

To start a $0 trial, the form asked for about ten inputs: email, password, confirm password, then a full billing address (name, two address lines, city, country, state, postcode), and finally card or PayPal. There was no Google or social signup. Asking someone to type a full postal address and invent a password to begin a free trial is a textbook abandonment driver, and the data agreed.

3. Traced the friction to platform defaults, not custom code

The important realisation was that none of this needed a rebuild. In MemberPress, the billing-address fields are a native setting under Settings > Fields, and they are only forced when the store collects tax. The password and confirm fields can be removed natively too, with MemberPress auto-generating a password and emailing a set-password link. Google signup was the only piece needing a small social-login add-on. So the heavy, scary form was mostly a stack default that could be switched off, not a hard constraint.

4. Specced the change so the developer could ship it cleanly

I wrote the exact plan: add Continue with Google, remove the billing-address block, switch card capture to the Stripe Payment Element so Stripe collects only the minimum the card network needs, and keep the existing GA4 and GTM events firing so the result stayed measurable. The target was email plus card, around three visible inputs, or one click with Google.

The hurdles, and how I got past them

"Do we even need the billing address, or is removing it custom work?"

I verified it against MemberPress's own documentation rather than guessing: address fields are a native toggle and are only mandatory when tax is being collected. I confirmed the store did not collect tax, which meant the whole block could be hidden with a setting, no custom code. That turned a nervous "can we even do this" into a five-minute change.

"We still want a password."

Fine, and native. I showed the Disable Password Fields option that emails a set-password link after checkout, and the fallback of keeping a single password field but dropping the redundant "confirm" box with a show/hide toggle. The client kept control of the decision while every option stayed low-friction.

Staging was locked behind HTTP basic auth, so I could not log into it.

I could not drive the staging environment myself, so I grounded every recommendation in the platform documentation, the public production pages and the GA4 data, and handed the developer a precise click-path to apply and verify. The change shipped without me ever needing their admin.

The rebuild quietly changed the analytics event schema.

After launch, new signup events began firing that did not exist before, which made a naive before and after count misleading. I anchored the headline on the completion rate, which is robust to volume and schema shifts, and I flagged the schema change openly rather than cherry-picking a flattering absolute number.

The result

Across the four weeks after launch, measured on the same GA4 funnel: of the people who began the trial checkout, 124 of 203 completed before the change and 89 of 130 after. As rates, completion rose from 61.1% to 68.5%, and abandonment fell from about 39% to 31%.

Completion rate up roughly seven points, a relative drop of about a fifth in abandonment, from a signup-flow change alone.

Mechanism in one line

Fewer fields and a one-click option at the exact moment of decision meant more of the people who had already chosen to sign up actually got through the door.

What I was honest about: the limits

I did not claim "more sales". In the measured window, absolute purchases actually fell, because fewer people reached checkout at all (total traffic was down around 15%). The honest, defensible win is the completion rate, which normalises for volume and still improved clearly. I also flagged that the rebuild changed the event schema, so this is an early, directional read; a longer, stable window with the new tracking settled would firm it up further. Reporting the rate, caveats included, is more useful to the client than a flattering number that would not survive scrutiny.

What I would do next

Two fast-follows have since shipped: reassurance microcopy at the card step (cancel anytime, money-back guarantee) and a mobile pass on the trimmed form. The next move is upstream, and waits only on a clean month of the new tracking: the product pages still gate the mockup before a visitor has felt any value, so the larger gain is in how the product earns the signup in the first place. The checkout was the fastest, lowest-risk win; the deeper one is a value-first path into the tool.

The heavy form was never a hard requirement. It was a default nobody had turned off, standing between ready-to-sign-up users and the product.

What this used

WordPressMemberPressStripe (Payment Element)PayPalGA4Google Tag ManagerConversion funnel analysisGoogle social login

Related work

← more case studies