Skip to content
§
§ · case study

Wellness brand, ROAS recovered post-iOS 18.

An archetype built from the server-side attribution rebuilds we have shipped for DTC wellness brands. ROAS climbed from 0.9x to 2.8x in thirteen weeks with Meta CAPI, Cloudflare sGTM, and warehouse-blended reporting.

§ 01 · archetype · wellness supplement

A DTC wellness brand watched its reported ROAS collapse after iOS 18.

The revenue never dropped. The measurement did. iOS 18 shipped in September 2024 with capped postback windows and tighter App Tracking Transparency enforcement. Safari on iOS started dropping browser-side pixel events. Meta's ad manager, reading only that pixel, reported blended ROAS falling from 2.1x to 0.9x within three weeks.

We rebuilt the stack. Reported ROAS recovered to 2.8x across thirteen weeks, above the pre-iOS-18 level. It landed higher because the new measurement caught conversions the old pixel had been missing all along.

reported ROAS
2.8x

From 0.9x at week 0, climbing through 13 weeks of stack rebuild. Above pre-iOS-18 baseline of 2.1x.

match rate
76%

Meta Event Match Quality score post-CAPI + SGTM. From 38% on browser-side pixel alone.

weeks to flip
13

Signed on week 0; CAPI live week 2; SGTM week 6; warehouse blended week 11; pre-iOS-18 baseline cleared week 13.

§ 02 · the challenge

The brand had not lost revenue. The brand had lost the ability to see it.

In September 2024 the founder watched Meta report ROAS sliding week over week: 2.1x, then 1.4x, then 0.9x. Ad spend had not changed. Neither had creative or audience. Shopify revenue was flat. Email revenue was flat. Direct-type-in traffic was flat. The only number falling was the one Meta claimed to drive.

The obvious conclusion was that ads had stopped working. It was wrong. iOS 18's Safari tracking restrictions had started dropping conversion events from the browser-side pixel. Proving that to a founder about to turn ads off was the harder job.

The stack itself was standard 2023 issue. Meta Pixel on every page. Google Analytics 4 through client-side GTM. A handful of server events from Shopify webhooks into Klaviyo, plus weekly CSV exports into the founder's spreadsheet. Nothing was server-side. Nothing was consent-aware beyond a cookie banner. Nothing survived iOS 18's Intelligent Tracking Prevention 2.3 release.

This was not a one-tool fix. It was a full stack replacement. The thirteen-week runway below is what we ran, stage by stage. The first six weeks were pure engineering with nothing to show in reported ROAS. The curve turned in weeks 7 through 13.

§ 03 · the five-layer stack

Five layers, measured once.

This is the stack every mid-market DTC brand should run after iOS 18. Each layer fixes a specific failure of the old setup. The warehouse at the bottom is the single source of truth. Everything above it is instrumentation feeding that truth.

Wellness brand archetype 5-layer attribution stack: client-side pixel, consent, Meta CAPI, Cloudflare sGTM, BigQuery warehouse as source of truth
Fig. 1 · the five-layer stack · each layer solves what the previous one missed
layer 01

Browser pixel.

Kept, not trusted. Meta Pixel + GA4 via GTM for audience building, not reporting. iOS 18 capped 24h postback respected.

layer 02

Consent.

Google Consent Mode v2 via Cookiebot. Per-user ad_storage + ad_user_data + ad_personalization signals.

layer 03

Meta CAPI.

Server-side Conversions API via Shopify webhook → Cloudflare Worker → Meta endpoint. Event deduplication via event_id.

layer 04

Server-side GTM.

sGTM on Cloudflare Workers. Routes events to Meta, GA4, TikTok, Klaviyo, BigQuery. First-party domain, no iOS throttling.

layer 05

Warehouse truth.

BigQuery via Rivery. Blended CAC, MER, contribution LTV. Single source of truth for founder's Monday meeting.

reporting

Looker Studio dashboard on BigQuery. Meta is no longer a reporting surface; it is an audience tool.

§ 04 · the recovery curve

Thirteen weeks. One curve.

Wellness archetype ROAS recovery curve: 0.9x to 2.8x across 13 weeks with inflections at Meta CAPI (wk 2), sGTM (wk 6), warehouse reporting (wk 11)
Fig. 2 · the recovery curve · thirteen weeks, three inflection points
§ 05 · the thirteen-week runway

Engineering first. Reporting second.

  1. Weeks 1-2: audit current stack, map every event, ship Meta CAPI server-side via Shopify webhooks + Cloudflare Worker with event deduplication
  2. Weeks 3-5: migrate GTM to Consent Mode v2 via Cookiebot, configure ad_storage + ad_user_data + ad_personalization signals per region
  3. Weeks 6-8: deploy server-side GTM on Cloudflare, move all marketing event routing server-side, first-party subdomain for first-party cookies
  4. Weeks 9-10: wire BigQuery via Rivery CDP, schema for orders, sessions, events, customers, subscriptions
  5. Weeks 11-12: build Looker Studio dashboard: blended MER, contribution CAC, 1-year LTV, payback period by channel
  6. Week 13: switch founder's Monday reporting to warehouse dashboard, archive Meta as an audience surface only
from the founder · archetype composite
"We almost turned off ads because Meta said they were broken. The rebuild showed us we had a measurement problem, not an ads problem. Thirteen weeks later we were spending more and reporting a higher ROAS than before iOS 18."
Composite quote
Patterns from multiple DTC wellness founder conversations

Watching your reported ROAS collapse?

We run server-side attribution rebuilds in 10 to 14 weeks. Audit in week one, written plan in week two, implementation through week ten, reporting flip in week thirteen.

Published · Last updated .

Online now

Hi there. How can we help you today?

Reply