Most Meta ads accounts for Indian D2C brands get debugged from the top down. Change the budget, swap an audience, try a new bid strategy. The account improves for a fortnight and drifts back. The problem sits further down, in the plumbing: the feed, the events, and the definition of the word conversion. Work upwards instead.
The catalogue is infrastructure
A product catalogue in Meta is not an accessory to the ad account. It is the substrate dynamic product ads, catalogue retargeting and most of the profitable inventory run on. When it is wrong, everything above is capped, and nothing in the interface says so.
Feed quality means a handful of unglamorous fields being right. Titles that read like something a person would search, carrying the category rather than a style name that means nothing outside your office. A correct GTIN or consistent internal identifier, so one product is not ingested twice. Variant mapping grouping colours and sizes under one item group, so an ad shows one shirt and not nine near-identical tiles. Availability syncing often enough that a sold-out size stops being advertised.
That last one costs real money in apparel, where the sizes that sell out first are the sizes most people wear. Astra Socks and Kai Apparel sit in that shape, high SKU count and fast variant churn, where the feed is a maintenance job and not a setup task. Where the store's data model is untidy the feed inherits it, so catalogue work and store structure get scoped together.
Catalogue retargeting is the cheapest inventory a D2C brand can buy. Off a broken feed it shows the wrong item to someone who was ready to buy.
The pixel, the server, and two numbers that will not agree
Below the catalogue sits the event layer: pixel events fired in the browser, server-side events from the backend, deduplication so one purchase is not counted twice. Browser events are lost to tracking restrictions, blockers and consent choices; server events survive but see less.
Then the fact nobody enjoys. Since the consent and tracking changes of recent years, the conversions Meta reports and the orders in your dashboard do not match, and no configuration makes them match. Meta attributes using a view window and modelling. Your dashboard counts orders.
So decide in advance which number runs the business, and make it the one in your own system. Meta's figures judge creative against creative. Your order data is what you bank. Reconcile monthly and accept a stable gap rather than chasing it.
Creative is the targeting
Interest targeting mattered more a few years ago. Delivery now finds buyers largely on its own, and the lever deciding who it finds is the creative. A video of fabric moving reaches a different person than a static price-led offer, because the system learns from who responds to what.
Which makes creative supply the real constraint. Accounts consume creative faster than most brands can produce it, and fatigue arrives quickly on an audience the size of one Indian metro. Popcorrn and Limepop, selling a low-consideration snack, burn hooks faster than an apparel brand, because the decision is made in two seconds and the ad has to earn it in one.
The discipline is variation with intent. Change the hook, the first frame, the format, the person on screen, the claim. Do not change six things at once and wonder which mattered. Organic content and creator footage are the supply line, so we plan it with the Instagram work.
What a conversion means when the customer pays at the door
Here Indian D2C stops resembling the case studies. Cash on delivery changes the meaning of a purchase event. An order placed is not revenue. It is an intention, plus a shipping cost you have already committed. The parcel travels, and at the door it is accepted or refused. If refused, you pay forward freight, return freight and handling. Return to origin turns a healthy-looking ROAS into a loss without ever appearing in the ads dashboard.
So the optimisation event has to reflect reality. Optimising towards every order treats a refused parcel as a win. Feeding delivered orders back as the conversion signal teaches the system to find buyers who take delivery. Prepaid incentives shift the mix the same way, and a confirmation step by call or on WhatsApp filters out the careless orders.
Apparel adds returns and exchanges. Size is the main reason a garment comes back, and a size-driven return is a cost created on the product page, not in the ad account. A size chart in real garment measurements reduces ad cost, which sounds like a category error until you follow the money. Inertia Cart, working platform-side, sees the same pattern from the other end: how much of a merchant's order volume is provisional rather than settled.
Contribution margin decides whether you scale
ROAS is a ratio of revenue to spend. It knows nothing about cost of goods, packing, freight, gateway charges, refused deliveries or returns.
Contribution margin per order does. Take the price paid; subtract cost of goods, fulfilment and freight both ways where relevant, the share of RTO and returns the category produces, and acquisition cost. What remains is what the order gave the business.
If that figure is positive, spending more finds more of the same. If it is negative, spending more finds the same loss faster, while a rising ROAS keeps you comfortable. Working it out per product rather than per account usually shows that some products absorb acquisition cost and some never will. That is the calculation we set up before touching budgets, as part of the paid advertising engagement and the wider fashion and D2C programme.