The challenge
The client was a direct-to-consumer apparel brand on Shopify with roughly $15 million in trailing revenue, growing almost entirely through paid social. The structure was working against them:
- Organic search had been flat for 18 months and represented under 9% of sessions.
- Paid CAC was up roughly a third year-over-year.
- Unit economics were unsustainable at current paid spend.
The technical foundation had real problems: a flat URL structure with no category architecture, roughly 1,400 product pages with duplicate or thin descriptions, a Shopify theme shipping four render-blocking scripts on listing pages, and an agency blog that ranked only for brand terms.
Attribution was equally shaky: GA4 had been hastily configured during the UA sunset, conversion events double-fired on certain flows, and leadership didn't trust channel reporting enough to value organic at all.
The solution
Month 1: Audit, IA, and analytics rebuild
A 47-page technical audit — Ahrefs and Screaming Frog plus manual crawling — established two facts: the site had no category architecture, and the analytics data was unreliable. We rebuilt the information architecture into seven hub categories and reinstalled GA4 against a clean event taxonomy.
Months 2–3: Technical fixes and content engine
- Resolved 280 orphaned URLs and canonical conflicts across 1,400 product pages.
- Cut render-blocking scripts, improving listing page LCP by roughly 1.4 seconds.
- Launched the content engine: two buying guides per week, each mapped to a documented commercial-intent keyword cluster and internally linked to its category hub.
Month 4: The programmatic unlock
We built 112 programmatic category landing pages from the Shopify catalog, combining fit, fabric, color, and use-case modifiers. Quality controls: a minimum of 12 in-stock products per combination, original copy blocks, and curated imagery. By month four, programmatic pages accounted for 38% of new organic sessions.
Months 5–6: Attribution and scale
We added server-side tagging via Shopify and set up a weekly attribution view comparing three models — last-click, data-driven, and position-based. Leadership finally had a defensible valuation of the organic channel, and used it to deliberately throttle paid spend.
What we would do differently
- Ship the GA4 rebuild in week one, not month one — it was the single most useful artifact.
- Start the programmatic build in month two, not four.
- Lock the in-house creative team into the editorial calendar earlier, so hero imagery shipped with the pages instead of after.
