‹ Back to the work

We took over one
supplement brand's
email and SMS.

A DTC lung and respiratory brand, six months, Klaviyo and Postscript and Shopify. We inherited a setup several people had built over two years. Almost none of the wins came from writing better copy. They came from measuring things nobody had put a number on yet.

3xLead form submit rate on the same page, same traffic window
3 monthsA dead SMS pipeline we inherited, traced and put back into service
94%Share of one welcome flow's revenue coming from a single email
The situation

What we walked into.

Klaviyo and Postscript both connected. A welcome series live in each, built by people who had since left. Landing pages running paid traffic. Dashboards showing numbers. Nothing looked broken, because a broken pipeline reports zero, and zero looks exactly like weak demand.

So the first thing we did was stop trusting the dashboards and start counting from the outside. Own page-view tracking, own event tracking, own submission log, all written server side so the record survives even when both Klaviyo and Postscript reject the lead. That one decision is what turned up everything below.

01

The lead form: 1.9% to 5.7%

1.9%
Original form
11 submits / 588 sessions
5.7%
Rebuilt form
31 submits / 541 sessions

A free personalized air quality report, traded for a name, a zip and an email. The form sat roughly a quarter of the way down the page, behind an ad block.

It also hard-required a ten digit phone number in the JavaScript validator, while the markup and the label both said the field was optional. People who filled it out correctly were being rejected and leaving.

We moved the form above the hero, made the phone field genuinely optional end to end, cut the field count and rebuilt the card so the headline held contrast against the background image. Counting every form on the page together over the same window, the rate was 7.4%.

The honest version. That 5.7% is a seven day window on one traffic source. A different paid push at the same page six weeks later ran at 2.9%. Rates move with traffic. We quote the numerator, the denominator and the window every time, because a rate without a denominator is a story.

Then we instrumented it, and the obvious fix turned out to be wrong.

A later 629 session burst, tracked event by event.

Page view629100%
Form scrolled into view33653%
First field touched294.6%
Submit attempted2379%
Lead recorded1862%

Percentages are step to step. First field touched is measured against form seen.

62% of the people who start the form finish it. The form is not the problem. The drop is people seeing it and not touching it, which is an offer and headline problem.

Without the event tracking, the obvious move would have been to strip more fields out. That would have done nothing at all.

02

The opt-in page we found sending nothing

An SMS VIP landing page that predated us. Real traffic, a real form, and a promise on the confirmation screen that a discount code was on its way by text. It had been live for three months and had never sent one.

Why nobody had caught it

The Postscript API key had been revoked and was returning 401 on every single write. The form handler reported success if either Klaviyo or Postscript accepted the lead, so the failure never surfaced anywhere. After three months the associated list held five profiles, and all five were employees.

And why fixing the key was not enough

Postscript rejects a phone number that already exists with a 409 conflict. On a list that size, most people filling out the page were already in the database. The write came back accepted, but the automation never fired. They were promised a code and got silence, and the counters looked fine.

The fix

We moved the automation trigger off "subscriber created" and onto a custom event, which fires for any subscriber regardless of how old their record is. The key moved into a managed secret so rotating it no longer needs a deploy. Confirmed on both paths, a brand new number and an existing one, with a real text landing on a real phone.

What we left behind

A registry where every landing page is labeled, with views, submissions and events keyed to it, and the submission written server side even when both platforms fail. A page that is live and recording nothing now shows up as a row that says so, instead of quietly not existing.

03

What the audit turned up in the flows

An MMS with zero clicks

Message two of the inherited SMS welcome series went out 1,829 times and was clicked zero times. It ended in a plain coupon tag instead of a discount link, so there was nothing tappable in it. MMS costs around three times an SMS. That message lost money on every send it ever made.

One emoji, five billable segments

Message one ran 334 characters. A single leaf emoji forced the whole message into UCS-2 encoding, which drops the segment size from 160 characters to 70. Five billable segments per send instead of one. Rebuilt to a single segment, one link, one ask.

Most opt-ins were never getting a welcome

Opt-ins were running 30 to 90 a day. The welcome flow was triggering about 21 times a day, because a subscriber filter locked it to one popup source. Everyone arriving any other way got nothing at all. That is a problem you find by putting two numbers next to each other, which is the first thing we did.

And the pattern under all of it

One live four email welcome flow, 30 days.

Email 1$3,6703.83%
Email 2$1940.54%
Email 3$330.51%
Email 4$00.53%

Attributed revenue and click rate, 30 day window, placed order metric.

Email one carried 94% of the flow's revenue. Clicks collapsed sevenfold after it and never came back. The plan we inherited was to write a fifth email.

The actual work was fixing the fall off after email one, and stopping email three from claiming a deadline on a discount code that does not expire.

And we tested into it rather than assuming. Before any of this shipped we ran a three-way comparison across 11,393 entrants. Two rewrites against the incumbent. The incumbent won, $1.73 per entrant against $1.05 and $0.98, so the incumbent stayed live and the rewrites went in the bin. That is the whole point of building the measurement first. You find out which version is better before you ship it, instead of arguing about it afterwards, and sometimes the answer is that the thing already running is fine.
What this means for you

Nobody needs a fifth email.

Every finding on this page came from counting something nobody was counting yet. None of it needed a rebrand or a bigger budget.

Silent failure is the default

Integrations fail quiet. A dead key, a filter nobody remembers setting, a handler that calls it a success when half the write failed. Nothing alerts, because nothing errored loudly enough to alert.

A rate without a denominator is a story

Most custom forms log the submit and never the view. That leaves you unable to tell no traffic apart from no conversion. They look identical in every report you already have.

The obvious fix is usually the wrong one

Cut fields. Add an email. Rewrite the subject line. All reasonable, all beside the point, unless you know which step is actually leaking before you touch anything.

You should hear the losing tests too

When a test loses, that is in the report with the counts, same as a win. An agency that only ever shows you wins is showing you a selection, not a result.

Want this run on yours?

Tell us the store and what you are running to it. If there is nothing broken in there, we will say so and you will not have spent anything finding out.