An established garden furniture brand was being undercut by its own retailers on Google Shopping, with no MAP policy in place, while its paid search account contained a collapsed broad match campaign quietly burning budget. Platform-reported ROAS was driving decisions that ignored margin entirely, and server-side tracking had not been started, so every number was consent-degraded.
What we found
The diagnostic surfaced the broad match campaign running at 0.27 ROAS, flagged as urgent. The email audit found a welcome series archived with no replacement, duplicate abandoned cart flows, and a draft review request about to send to more than 1,400 contacts.
What we did
We rebuilt the measurement foundation with server-side tracking and clean attribution, restructured the shopping and search campaigns, and shifted the decision framework from platform ROAS to profit on ad spend, because with retailers undercutting RRP, revenue-based ROAS was actively misleading.
What changed
Budget decisions now run on profit, not platform-reported return. The brand can see which retailer dynamics are a pricing problem versus a marketing problem, which changed the conversation from "why is ROAS down" to "which products should we defend".
Attribution rebuilt after a headless migration broke it
A cross-domain storefront broke attribution end to end. One deterministic join key stitched it back together.