The fastest way to cut PPC cost without losing leads is to stop paying for the searches that were never going to convert, rather than lowering bids across the board. A uniform 20% bid cut removes your worst traffic and your best traffic in equal measure. A negative keyword list built from ninety days of search terms removes only the waste. Same saving on the invoice, very different effect on the lead count.
Most accounts we inherit have three leaks: search terms nobody ever audited, a conversion definition that counts orders which later come back, and a landing page slow enough to be quietly taxed by Google. Fix those and the cost per lead drops before you touch a single bid.
Start with the search terms report, not the campaign view
Pull the last 90 days. Segment by search term, sort by cost, filter to conversions = 0. Sum that column. In accounts that have been running on broad match with Smart Bidding and no maintenance, the number is usually large enough to fund a month of creative production.
Do it as n-grams rather than exact strings. Individual search terms are too long-tail to act on one by one, but the word "free" appearing across 300 queries, or "repair", "jobs", "wholesale", "second hand", "near me" for a brand that ships nationally, gives you a negative list you can add in one sitting. A Google Sheet with a split-and-count formula does this fine. You don't need a tool.
The discipline that matters afterwards: put the negatives at account level in a shared list, not buried in one ad group, and re-run the exercise monthly. Broad match keeps finding new ways to spend your money. That isn't a flaw, it's the mechanism.
The uncomfortable question about brand campaigns
A big share of the "cheap" conversions in most Indian D2C accounts come from people searching the brand name. Cost per acquisition looks beautiful. Incrementality is another matter, because a fair number of those people would have clicked the organic result sitting directly underneath.
Run the test rather than argue about it. Pause brand search for seven days, hold everything else constant, and watch total sessions and total orders, not campaign-level orders. If revenue holds flat and spend drops, you found free money. If revenue dips more than spend, competitors were eating your name and you switch it back on with better ad copy.
Our experience is that the answer differs by category. In jewellery and apparel, where competitor bidding on brand terms is aggressive, brand PPC usually earns its place. For a niche B2B-ish product with no competitor conquesting, it often doesn't. Test it in your account; anyone who tells you the answer without testing is guessing.
You are optimising to the wrong conversion if COD returns aren't in the number
This is the biggest one in India and it gets ignored because it's inconvenient.
Take a store spending ₹5,00,000 a month on Google, reporting ₹20,00,000 in conversion value. Reported ROAS: 4.0. Now say 60% of orders are COD, which is ₹12,00,000 of that revenue, and a quarter of COD orders come back undelivered. That's ₹3,00,000 of revenue that never existed, plus forward and reverse shipping on those parcels. Real ROAS lands around 3.3. Google doesn't know this, so it keeps buying more of the traffic that produced the phantom ₹3,00,000.
Worse, RTO isn't distributed evenly. Tier-3 pincodes, certain Meta placements and discount-led creative all skew high. A campaign showing 5x reported ROAS with 40% RTO is losing to a campaign showing 3.5x with 8% RTO, and the bidding algorithm will happily starve the second one to feed the first.
The fix is to send a corrected value back. Two practical routes: import offline conversions with the net value once the delivery status is known, or fire two separate conversion actions, one at checkout for COD and one at delivery confirmation, and optimise to the delivered event with a longer conversion window. The second is easier to implement on Shopify and works well enough. Prepaid-only incentives on the landing page help too, but changing the signal you feed the algorithm changes the media buy itself, which is a larger lever.
Page speed is a PPC cost line, not just an SEO one
Google's landing page experience component feeds Quality Score, and Quality Score is a direct multiplier on what you pay per click. On top of that, every visitor who abandons before the page paints is spend with no chance of returning. Mobile traffic on a patchy 4G connection in a metro is unforgiving of a 4-second LCP.
The usual culprits on Shopify are predictable: a hero carousel loading four full-size images when the visitor sees one, a review app and a currency switcher and a WhatsApp widget each injecting render-blocking JavaScript, and a theme that lazy-loads nothing above the fold. Getting LCP from around 4s to under 2s on the templates your ads actually point at is often a bigger CPL improvement than a week of bid tuning, and it compounds across every channel.
If you want a running measurement rather than a one-off Lighthouse run, our app SwiftStore scans the store, fixes what can be fixed automatically and tracks the score over time. For the deeper theme and app-script work, that's Shopify speed optimisation proper, and it usually takes a developer a few days, not an afternoon.
One thing we'd push back on: sending paid traffic to a stripped-down custom landing page outside Shopify to win on speed. You lose cart state, the theme's product data, and every app that powers the actual purchase. Fix the theme instead.
Performance Max eats your brand traffic unless you stop it
PMax will cannibalise branded search and then report those conversions as its own. If you're running PMax and brand search side by side with no brand exclusion list applied, your PMax ROAS is flattering and your brand campaign is losing impression share to your own account.
Apply brand exclusions on PMax. Keep a separate brand search campaign so you can see the real number. And check the channel breakdown in the insights tab, because a PMax campaign quietly spending 70% of its budget on Display placements with a ₹6 CPC and a 0.2% conversion rate is not a shopping campaign, it's a remarketing campaign wearing a hat.
Geography, delivery and dayparting: small levers, quick wins
If your 3PL doesn't do COD in a pincode, you shouldn't be buying clicks there. Most stores can name their five worst-performing states for RTO in about ten minutes of looking at order data, and excluding or bid-adjusting those locations is a same-day change.
Location targeting also defaults to "presence or interest", which means a store shipping only within India can pay for clicks from someone in Sharjah researching Indian brands. Switch it to "presence" unless you genuinely want the diaspora traffic, and if you do want it, that deserves its own campaign with its own shipping messaging.
Dayparting is worth less than it used to be under Smart Bidding, since the algorithm already models time of day. Don't spend a week on it. The exception is lead-gen where a human has to call back: if nobody answers the phone after 8pm, paying full rate for 11pm leads is optimism.
On Meta, narrow audiences are usually the expensive mistake
Stacking three interest layers on a ₹2,000 daily budget produces a tiny addressable pool, high frequency, and a CPM that climbs every week the creative stays live. Broad targeting with a strong signal and enough creative variety is cheaper per result in most D2C accounts we work on.
The real cost driver on Meta is creative fatigue, not targeting. Watch frequency against the ad set's audience size. When frequency crosses about 3 on a cold audience within seven days and CPM starts drifting upward, the answer is new creative, not a bid change. Producing four new concepts a month is a cheaper fix than paying an escalating CPM to show the same video to the same people.
Where organic should be doing the work instead
Some queries should never be paid for. Informational searches, care and sizing questions, "how to" terms in your category: these convert slowly, cost real money at auction, and are exactly what a content page ranks for over six to twelve months. Moving them out of PPC and into SEO and content lowers the paid bill permanently rather than for one month.
The reverse also holds. If a commercial term ranks first organically and you also bid on it, check whether the ad is buying you incremental clicks or just moving the same click from free to paid.
What the first two weeks of an account cleanup actually look like
- Days 1 to 3: conversion tracking audit. Duplicate purchase events from both the Shopify pixel and a hard-coded one are common, and they inflate reported conversions enough to break bidding entirely. Fix this before touching anything else, because every other decision depends on the numbers being real.
- Days 3 to 5: 90-day search terms n-gram pass, account-level negative list, location and network settings, brand exclusions on PMax.
- Week 2: RTO-adjusted conversion values wired in, landing page speed on the top three ad destinations, and one structural change at most. Not five. You need to be able to attribute the result.
Budget cuts come last, after the data is trustworthy. Cutting spend on a broken measurement setup just moves you to a different wrong answer.
Start with the arithmetic in section one: ninety days of search terms, zero-conversion rows, sum the cost column. That single number tells you how much of the problem is waste and how much is structural. If it comes back large and you'd rather someone else do the surgery, our free audit covers tracking, campaign structure and the landing pages the ads point at.

