Skip to main content
E-commerce · Shopify · Meta Ads

41% lower CPL. Three weeks after launch.

A DTC apparel brand at $1.4M ARR spending $12k/month on Meta and getting 1.9× ROAS. The store was a 5-year-old free theme. Attribution was blind. The team thought Meta had stopped working. The ads were the last thing wrong.

−41%CPL vs baseline
3.2%CVR (up from 1.8%)
3.8×Meta ROAS
18Days from kickoff to live

The challenge

The brand had been on Shopify since 2019, running on a free theme with 14 third-party apps injecting JavaScript on every page. Mobile load time was 4.1 seconds. Lighthouse Mobile Performance was in the low 40s. Every paid visitor was landing on a page that took four seconds to do anything.

On the paid side: $12k/month on Meta, 1.9× ROAS, 78% checkout abandonment. The checkout had five steps. The Conversions API had never been configured — Meta was making decisions on browser-side events only, missing roughly 35–40% of actual purchases. Instagram, which skews iOS-heavy, was being systematically under-attributed by nearly half.

Creative was brand-focused with no product benefit in the first three seconds. UGC-format content consistently outperformed studio content on the brand's own organic posts — but paid had never tested a single UGC creative. The previous agency had cycled creative every three weeks without ever touching the landing experience.

Project details

Client type

DTC apparel brand

Services

Shopify OS2.0 · Meta Ads · Email · Creative Strategy

Timeline

18 days to live · 90-day optimisation

Outcome

3.8× ROAS · 41% lower CPL · CVR 1.8% → 3.2%

Attribution first. Store second. Creative third. The algorithm needed to see the truth before anything else could improve.

What we built

Shopify Online Store 2.0 rebuild — mobile-first from 375px. PDPs with social proof, UGC modules, and Shop Pay express above the fold. Pruned 11 of 14 apps; replaced four with first-party theme code. Load time 4.1s → 2.1s. Lighthouse Mobile 43 → 91. One-page checkout with cart upsells surfaced before the customer clicks through.

How we did it

Configured Meta Conversions API via GTM Server-Side. Event Match Quality went from 5.2 to 8.4. The algorithm immediately saw a third more purchase signal. Consolidated campaigns, eliminated overlapping audiences, and launched a 6-hook UGC creative rotation — result-open, pain-state, social proof, comparison, curiosity, direct. Studio content moved to retargeting only.

What changed

Within two weeks of the CAPI fix, Meta auto-shifted 31% more spend to Instagram — the channel that had been under-attributed for three years. Checkout abandonment dropped from 78% to 54% in the first fortnight. By week 8, the result-open UGC format was the clear winner and became the primary prospecting creative for the rest of the engagement.

By the numbers

Flat spend. 79% more revenue from paid.

01−41%Cost per acquisition vs baselineAt unchanged $12k/month spend
023.8×Meta ROASUp from 1.9× at engagement start
033.2%Conversion rateUp from 1.8% — same traffic
0418 daysKickoff to liveStore rebuild + CAPI + new creative

Start a project like this

Tell us where your funnel is leaking.

If this story sounds like your brand with the names changed — send us your URL, your current ROAS, and the one metric you'd most like to move.