Hire me ↘
Hire me ↘
← Back to work
Live Campaign · 01 Performance · Meta Ads · D2C

The House of Goods
× Meta Ads.

A ₹5,000 conversion campaign run end to end on a live Shopify store. Real money, real data, and a funnel problem that moved rather than disappeared.

₹4,962
Managed ad spend
147
Add to carts
₹23.78
Cost per add to cart
12.04%
Click-through rate

The Context

The House of Goods is a D2C graphic apparel brand on Shopify, where I work as marketing lead on a freelance basis across paid social, organic content, SEO and store conversion. In August I ran the brand's first paid campaign on a ₹2,000 traffic objective. It reached 109K users at a ₹0.66 CPC and drove 3,700+ store sessions, but almost none of that traffic converted.

Cheap clicks are easy to buy. The interesting question was why they weren't turning into carts.

The Diagnosis

Working through Shopify analytics alongside the campaign data, the drop-off was sitting between sessions and add to carts. The ads were doing their job; the product pages weren't. Every listing used flat mockups rather than photographs of the product on a person, so visitors had no way to judge fit, fabric or scale.

That gave me something specific to fix before spending again.

What I Changed

  • Shot and uploaded model photography across every product page
  • Verified Meta Pixel and set up Conversions API on Shopify, testing that ViewContent, AddToCart, InitiateCheckout and Purchase all fired correctly
  • Built three custom audiences: website visitors 180d, Instagram engagers 365d, and add-to-cart-no-purchase 180d
  • Switched the objective from traffic to conversions
Product page rebuilt with model photography
Product page after the photography rebuild · Shopify
Custom audiences built in Meta Ads Manager
Custom audiences · Meta Ads Manager

The Campaign Structure

Two campaigns, not two ad sets.

Split deliberately so that budget couldn't drift toward the cheaper-converting retargeting audience and starve prospecting.

Cold Prospecting Retargeting
ObjectiveSalesSales
Optimised forAdd to CartPurchase
Daily budget₹350₹150
Duration10 days10 days
AudienceBroad, 18–34, 7 metros3 custom audiences stacked
ExclusionsWebsite + IG audiences—
Creatives31 carousel
Why add-to-cart optimisation?

Meta needs roughly 50 conversion events per week to exit the learning phase. At ₹350/day a purchase-optimised campaign would have generated single-digit events and never learned. Optimising one step up the funnel gave the algorithm enough signal to work with.

Why manual controls over Advantage+?

Advantage+ treated my audience inputs as suggestions rather than limits, which meant no hard age cap. I switched to limited-reach controls to keep delivery within 18–34, accepting a lower Meta campaign score in exchange for knowing where the money actually went.

The Results

Metric Cold Retargeting
Spend₹3,471₹1,490
Reach15,2554,403
Impressions18,41920,971
Link clicks2,218157
CTR12.04%0.75%
CPC₹1.57₹9.49
CPM₹188.47₹71.06
Frequency1.214.76
Add to carts1461
Cost per ATC₹23.78₹1,490.26
Purchases10
ROAS0.24—
Ad-level performance breakdown in Meta Ads Manager
Ad-level breakdown · Meta Ads Manager

What The Numbers Actually Say

One purchase from 147 add to carts.

A 0.7% cart-to-purchase rate. That's a bad number, and it's the most useful thing the campaign produced.

In August the funnel was breaking between session and cart. After the photography fix, it was breaking between cart and checkout. The problem didn't go away, it moved — which told me the imagery diagnosis had been right, and that there was a second blocker underneath it.

The 12% CTR is too good.

Typical D2C cold traffic runs 1–2%. 2,218 link clicks produced only 1,342 landing page views, meaning around 40% of clicks never loaded the page. That gap points to low-intent or accidental clicks rather than genuine interest, which reframes the whole cold result.

Retargeting failed on audience size, not creative.

A 4,403-person pool at ₹150/day over ten days pushed frequency to 4.76 and CTR down to 0.75%. The same people saw the same ad five times. The pool was too small for the budget, and I should have either lowered the spend or widened the audience.

₹1,490 for one add to cart.

The clearest single lesson in the campaign. Spending retargeting money on an audience that small was a structural error, not a creative one.

What I'd Do Differently

  • Run checkout diagnostics before spending — test the full purchase flow, check payment options, and confirm shipping costs weren't surfacing late
  • Cut retargeting budget to ₹50/day or pause it until the audience pool crossed 10,000
  • Audit placement breakdown on day one rather than day three, given the click-to-landing-page gap
  • Optimise for Initiate Checkout rather than Add to Cart, to push the signal closer to purchase
  • Run a prepaid discount or COD option test, since cart abandonment at this rate on Indian D2C often traces to payment friction

What I Learned

/ 01

Cheap traffic is not a result.

A ₹1.57 CPC and a 12% CTR look excellent on a screenshot and meant very little here. The metrics that mattered were the ones further down the funnel, and they were the ones I had the least control over.

/ 02

Fixing one bottleneck reveals the next.

The photography fix worked — session to add-to-cart performance improved substantially. It just exposed a checkout problem that had been invisible while nobody was reaching checkout.

/ 03

Audience size governs budget, not the other way round.

I set the retargeting budget first and fitted the audience to it. It should have been the reverse.

/ 04

Platform defaults optimise for the platform.

Advantage+ and Meta's campaign score both pushed toward broader delivery and less control. Overriding them cost me a lower score and gave me data I could actually read.