The catalogue outgrew the systems running it
Four hundred and forty-eight products, four systems that each worked, and none of them talking to each other.
MID49 makes cages, top and base plates, handles, side arms, and power distribution for professional cinema cameras — designed and assembled in Dallas by the two founders who built and sold Wooden Camera.
The product was never the problem. The catalogue was: 448 products, 375 of them active, 969 variants, sold through Shopify, advertised through Google and Meta, marketed through Klaviyo. Every one of those systems worked. None of them talked to each other.
How we untangled it.
We opened in January 2024 with a three-campaign architecture — brand awareness, targeted products, retargeting — splitting a modest monthly budget across Meta, Google Search, Google Shopping, and display.
What that first year exposed was not an advertising problem wearing an advertising costume. It was a data problem. A flat 448-row catalogue cannot be segmented against, so neither can the campaigns pointed at it. Everything since has worked outward from the catalogue: enrich it, tier it, label it, and only then advertise against a structure instead of a list.
What was built.
Nine things exist at MID49 that did not exist before, and would not exist without this engagement.
A lifecycle email layer. Five flows, fifteen emails, and three SMS touches, with conditional splits on geography, cart value, and coupon state.
A product database. 385 enriched products at roughly thirty-five properties each, in five operating views — including a client-facing approval surface the founder works in directly.
A checkpointed enrichment pipeline. Five model calls per product, roughly 1,925 per full run, deterministic HTML cleaning, resume-safe checkpointing, and per-call failures captured into a review field rather than silently dropped.
A shopping label schema and a product tier system. Hero, Core, Ancillary, Exclude across 372 rows, plus thirteen consolidated product types replacing an inconsistent free-text field. This is what turns a flat catalogue into a feed you can segment campaigns against.
Server-side conversion tracking. Purchase event match quality of 8.0 out of 10 at full match-key coverage.
A reporting spine. Business reporting, session recording, Search Console, and analytics pulled into one monthly scorecard, replacing four dashboards nobody reconciled.
What changed.
The email layer specified in October 2024 now carries 29.4% of the company's revenue, on a hundred and seventy-five dollars a month of platform cost.
Organic clicks are up 43.0% year over year on 3.7% more impressions, with average position improved from 15.4 to 9.3 — a ranking gain, not a traffic gain. The pages got better, not busier.
The Meta campaign we built returned 6.24 ROAS across its five-month life at a $36.94 cost per acquisition on 339 purchases. Its best stretch ran at 11.36.
A five-day forensic audit across seven data sources found 40.3% of search spend producing zero conversions across 189 broad keywords, a placement set returning nineteen cents on the dollar, and an eight-day conversion blackout traced to a severed authorisation behind an offline upload — reauthorised, with conversions resuming the same evening.
The honest ending: the business is down year over year on flat orders, and the decline is entirely average order value. Good process does not change that, and we do not claim it does. What the work has done is find the money that was leaking and build the structure to spend the rest against.
Shopify · Google Ads · Meta Ads · Klaviyo · GA4 · Search Console · Microsoft Clarity · Notion · Python