Ad campaign exclusion audience case study

How Recommend.my Cut Brand Ad Spend by 18% Without Losing Conversions

I co-founded a home services platform that operates in Malaysia and Indonesia. We get traffic from two groups: homeowners looking for help with renovations or repairs, and service providers (SPs) who bid on those jobs.

SPs are the heavier users. Many of them check the platform daily, some hourly, to see if new jobs have come in. We have a mobile app, but a lot of them prefer the website.

And when an SP wants to log in to our platform, they don’t always have the URL bookmarked. Many just type our brand name into Google, see the paid ad sitting at the top of the results, and click it.

The problem is, we paid good money for that ad click. And it wasn’t even from a new customer. It was a daily, highly active user. If they didn’t see our ads, they would have happily clicked the organic result and get to our site anyway.

I only spotted this when I was poking around our Google Analytics last month. A row I hadn’t paid attention to before: “sessions landing on the SP dashboard page, AND tagged with google / cpc as the source/medium”. We had been spending SGD 20 a month showing ads to service providers just to visit their own dashboards.

SGD20 is a small number on its own. But it pointed at a bigger pattern.

What I found once I looked properly

Above: Two week comparison in GA4. Paid clicks to the SP dashboard before and after the exclusion went live.
Above: Two week comparison in GA4. Paid clicks to the SP dashboard before and after the exclusion went live.

Once you start looking, brand-campaign waste falls into a category: people who would have arrived anyway, and you’re paying for their arrival.

For a marketplace like Recommend.my, there are three obvious groups in that category. Most teams only think about one of them.

Three groups I should not have to pay to reach

Active service providers. This is the marketplace-specific one. We have thousands of SPs on the platform, plus a few thousand more who quote actively each week. They have a job to do. They check the dashboard several times a day. They type our brand name. If the paid ad sits above the organic result, they click it. We pay.

Banned and blacklisted users. Anyone we’ve suspended for fraud, abuse, or repeat policy violations. We don’t want them on the platform. We definitely don’t want to spend money showing them ads.

Recent quote requesters. Anyone who submitted a quote request recently that got matched or made a successful payment. They’re already deep in our funnel. They might come back for a follow-up job, and if they do, they’d probably type the brand name and arrive via Google. Same dynamic as the SPs: a paid click for someone who was going to convert anyway.

The third group is the one most accounts already exclude. The first two are the ones most accounts miss.

Using an exclusion list that self-updates

In order to stop showing ads to the three groups above, you can manually upload a CSV of their emails to Google Ads Customer Match.

But if you upload once, the list goes stale fast. Within a few weeks, you will have new active SPs, more quote requests, and new bans. So either you re-upload a list manually every Monday (you won’t), or you automate.

I built an n8n workflow that runs every Monday at 3am. It pulls the three lists from our production database, dedupes, and pushes them to Google Ads via an API upload. The audience itself is configured with a 10-day Membership Duration in Google Ads, so anything not refreshed each week falls off naturally. The list cleans itself.

Above: n8n workflow on a weekly cron, three parallel SQL pulls, then merge, hash, aggregate, upload.
Above: n8n workflow on a weekly cron, three parallel SQL pulls, then merge, hash, aggregate, upload.

This is the same idea as the mailing list cleaner I wrote about earlier; pull data on a schedule, process it, push it to a third-party platform.

What’s actually in the exclusion list right now

Above: 90% match rate on ad exclusion
Above: 90% match rate on ad exclusion

Each weekly run pushes about 1,400 unique emails. Google’s match rate on those is 90%, which means it can tie 9 out of 10 of the hashes back to a real Google account. That’s high because the data is first-party, hashed from emails our users gave us when signing up. Consumer audiences from third-party sources or older imports often sit at 40–60%.

Once matched, the exclusion is keeping our brand ads away from between 600 to 700 people on Search, Display, YouTube and Gmail.

Cost down 18%, business slightly up

I let it run for three weeks, then compared the results.

Above: The brand-keywords campaign cost went down by 18.15%
Above: The brand-keywords campaign cost went down by 18.15%

Brand campaign cost over 18 days went from ~SGD 706 to SGD 578. That’s about SGD 128 saved in the window, or roughly SGD 2,600 a year on a single campaign.

More importantly, did we lose any business in the process? From our database, we actually experience a 6.5% increase in conversions. Maybe it’s a blip, but total business held.

This is the well-documented “incremental conversions” problem with people searching for your brand name. eBay’s did a 2014 experiment, later published in Econometrica, and found that switching off brand-keyword ads cost the company almost no actual traffic. 99.5% of the clicks shifted to organic instead. The ad mostly steals credit that organic would have got anyway. When you exclude the right segments, paid conversion counts drop on paper, but actual business doesn’t.

Of course, this assumes that you have established some brand name recognition. And the costs for that could be far higher than anything you’re putting into ads. We’re talking billboards, youtube ads, radio, tv commercials, etc.

Some lessons

A few things to be know if you want to try this.

Not every user that you upload to Google Ads will get excluded. Google can only match emails it can tie to a logged-in account. The 9% of our list that didn’t match still see the ads.

iOS users may not get excluded. On iOS 14+ traffic, Customer Match exclusions only work for signed-in users in mobile web Safari. Anyone using the iOS Gmail app, YouTube app, or Search app may still see the ads.

There’s a 24–48 hour lag between when a list uploads and when the exclusion fully propagates.

You can over-exclude. Our recent-requester window is 2 months. If we’d set it higher, we might genuinely cut into repeat customers who’d been waiting to start a new job.

You can’t measure the real cost savings from ad exclusions. Google Ads does not provide a report for this. The closest you get is the kind of before-and-after analysis I did here: see a cost drop in the campaign, check against your own database, and see if there is an increase in organic traffic conversions.

So if you sell on a marketplace, or run a subscription or recurring-purchase business, you might be paying to reach people who already converted. Identify which groups in your business do not need to see your ads, and start creating your exclusion list. Who knows how much you will save?


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *