“Why are my ads not working?” is the first question on almost every discovery call we run. The honest answer is rarely that the platform is broken. Meta, LinkedIn and Google all do their job well. The system around the ads is what fails.
Four things usually break it: creative built on a guess, an algorithm that was never given time to learn, no CRM feedback loop, and a budget that cannot cover the industry’s CPCs. Below is the platform-by-platform breakdown, with live 2026 South African CPC data pulled the week this article went live.
The four things that quietly kill ad performance
Almost every under-performing account we audit is bleeding from one of these four wounds. Usually two or three at once.
Creative built without research
The biggest predictor of paid performance is whether the creative speaks to a problem the audience already has language for. Failing accounts start with product features. Winning accounts start with customer pain: real objections, reviews, sales-call transcripts. If the creative went from a designer’s brief straight into the ad account, the platforms have no engagement signal to reward. Weak creative gets shown to fewer people at higher cost. The account looks broken. It just never earned distribution.
Cutting the learning phase off at the knees
Every platform has a learning phase. Meta needs about 50 conversions per ad set inside a 7-day window. Google’s Smart Bidding needs roughly 30 conversions in 30 days per campaign. LinkedIn behaves similarly. Most SA accounts we audit pause, restructure or duplicate ad sets weekly, resetting learning every time. Six weeks of resets look identical to six weeks of a broken platform. Leave the account alone for longer than feels comfortable. That discipline alone fixes most accounts.
No feedback loop from your CRM back to the algorithm
Most agencies skip this section because it means touching your systems. Every ad platform optimises against the signal you send it. Send “form submitted” and the algorithm finds more form-submitters, buyers or not. Send “form submitted, then closed as a R50,000 customer” and it finds more customers. That closed loop separates accounts that improve month on month from accounts that plateau in month three.
A budget that cannot buy your industry's clicks
The maths is unforgiving. If your industry’s average CPC is R70, R150 a day buys two clicks. Sixty clicks a month, one to three leads. No creative fix rescues that. Budget-to-CPC mismatch is the most common structural problem in accounts under R10,000 a month, and it is a maths problem, not a platform problem. CPC ranges are in the cost section below. Check yours before blaming the ads.
Why the feedback loop matters more than the ad
Ad platforms are prediction engines. They do not just match your targeting settings; they predict who is most likely to take the action you optimised for, using browsing history, similar-customer patterns, real-time context and your own conversion data. That last piece is where most accounts collapse.
Take a Meta campaign optimised for “lead”. The pixel fires on form submit. Meta learns the shape of people who submit forms and delivers more of them. Whether any of those leads are worth anything is a question Meta was never asked. Half might be tyre-kickers, students or competitors scoping your follow-up flow. Meta keeps delivering the same profile because the signal you sent was “form-fill”, not “customer”.
The fix is the same on every platform, with a different name in each place:
- Meta: the Conversions API (CAPI) plus offline event uploads. Push server-side events for “lead qualified”, “opportunity created” and “customer won” from your CRM back into Meta, with the original lead’s event ID so the platform can attribute correctly.
- LinkedIn: the LinkedIn Conversions API. Same idea. Send stage progressions back to LinkedIn against the original member ID so the algorithm learns which member profiles turn into customers.
- Google Ads: Enhanced Conversions for Leads and Offline Conversion Imports. Upload the customer’s Google Click ID (GCLID) alongside the stage change so the bidding model can learn which query and audience combinations actually produce revenue.
Once the loop is live, the algorithm stops chasing volume and starts chasing your good customers. Cost per lead usually goes up. Cost per customer comes down. If your reporting only shows the first number, you will read the shift as a regression and switch the feature off. Pair the loop with reporting that measures customers, not form-fills.
Why are my Meta ads not working?
Four reasons cover most failing Meta accounts:
- Learning phase never exits. An ad set needs 50 conversions in a 7-day window. R150 a day at a R400 cost per lead is 11 conversions a week. Never exits. Raise the budget, or optimise for a cheaper upstream event and filter for quality in your CRM.
- iOS signal loss without CAPI. The browser pixel loses 15 to 40 percent of iOS conversions. Without server-side Conversions API, Advantage+ is working with a fraction of the truth. Fixable in a day. Usually lifts reported cost per lead by 20 to 40 percent.
- Creative fatigue. Meta creative burns out in 3 to 6 weeks. Response halves, CPL climbs, account looks broken. Rotate one creative per ad set every four weeks and it will look fine again.
- Advantage+ audience turned off. Meta’s own audience-expansion beats manual interest targeting for most SA lead-gen accounts. Locked, hand-built interest sets are a legacy habit. Test Advantage+ against your current creative before anything else.
The R150-a-day question comes up on every call. Honest answer: for most SA lead-gen categories, R150 a day is a learning-phase failure by design. R5,000 to R8,000 a month per active ad set is the floor.
Why are my LinkedIn ads not working?
LinkedIn is where structure decisions matter most. A click can cost R60 to R200, and no budget rescues bad targeting. Four failure modes:
- Audience too small. LinkedIn wants 50,000 members minimum. Below 20,000, CPCs jump 30 to 60 percent. Broaden by function or seniority before you throw more money at a narrow list.
- Wrong objective. “Website Visits” is the wrong choice for almost every SA B2B lead-gen account. Native Lead Gen Forms convert 30 to 60 percent cheaper by pre-filling from the profile and cutting the landing-page hop.
- No Conversions API. The pixel alone gives surface data. The Conversions API pushes CRM stage changes (MQL, SQL, closed-won) back to LinkedIn. Without it, you optimise for form-fills. With it, you optimise for real prospects.
- Budget below the floor. Under R8,000 a month, LinkedIn does not learn. Concentrate on one campaign at a viable budget, or pause LinkedIn and put the money into Google Search until you can fund it properly.
LinkedIn is expensive because it is small and premium. It rewards accounts that treat it like a sales channel with real budget. It punishes accounts that treat it like a cheap awareness tool.
Why are my Google ads not working?
Google fails differently because search intent does half the work. When it under-performs, it is usually one of these:
- Match types wrong. Broad match with Smart Bidding needs a strong negative-keyword list. If your search terms report is full of tangential queries, that is the problem. Not the ads.
- Performance Max without guardrails. PMax burns budget on whichever asset group it finds easiest, usually display and YouTube, on cheap conversions that never turn into sales. Constrain it: brand exclusions, focused asset groups, a customer-value signal from your CRM.
- Conversion tracking measuring noise. If your primary conversion is a page-view, a phone-number click, or a form-submit that counts spam and duplicates, Smart Bidding is optimising against garbage. Fix the definitions first. Everything else waits.
- No Enhanced Conversions or offline imports. Same principle as Meta CAPI. Upload GCLIDs from your CRM at every stage change. Smart Bidding starts finding better queries, not just more.
Shopping vs Search: which one is actually right for you?
Two campaign types, two problems. Search wins on high-intent service and considered-purchase queries where the customer reads a headline and clicks. Shopping wins on physical products with clear prices, images and a clean merchant feed.
| Industry | Lean Search | Lean Shopping | Why |
|---|---|---|---|
| Financial services (advisor, retirement) | Yes | No | No product SKU; the sale is a consultation. |
| E-commerce (mattresses, home goods) | Yes, for brand and category | Yes, primary channel | Feed-ready SKUs with price and image; Shopping does the heavy lifting. |
| Professional services (accountant, attorney) | Yes | No | Service, not product. Search intent carries the conversion. |
| Home services (plumber, electrician) | Yes, plus Local Services Ads where available | No | Emergency and near-me queries convert on Search. |
| Beauty (salon, perfume, cosmetics) | Yes for services and brand | Yes for products | Salon services go to Search; product SKUs go to Shopping. |
The common mistake is running both without a feed strategy. Shopping’s reach is broad. Untuned titles, categories and negatives will pay for impressions you never wanted. A well-run Shopping campaign starts with the feed. Not the bid.
What ads actually cost in South Africa (live 2026 data)
The table below is a live Google Ads keyword pull for South African search, taken the week this article went live. Costs are in ZAR, converted from USD at roughly R18.50. “Top-of-page bid” is what Google estimates a bid needs to be to sit in the top slot. Average CPC usually lands lower once quality score and competition settle.
| Industry | Sample keyword | Avg CPC (ZAR) | Top-of-page bid range (ZAR) |
|---|---|---|---|
| Financial services | financial advisor south africa | R70 | R17 to R205 |
| Financial services | retirement planning south africa | R53 | R11 to R60 |
| E-commerce (mattresses) | queen size mattress | R8 | R2 to R12 |
| E-commerce (mattresses) | memory foam mattress south africa | R4 | R2 to R9 |
| Professional services | accountant johannesburg | R91 | R27 to R104 |
| Professional services | attorney cape town | R28 | R11 to R43 |
| Home services | plumber johannesburg | R67 | R26 to R122 |
| Home services | emergency plumber near me | R121 | R29 to R110 |
| Beauty / personal care | hair salon johannesburg | R4 | R6 to R20 |
| Beauty / personal care | buy perfume online south africa | R19 | R3 to R20 |
Two things stand out. The range inside an industry is wider than the range between industries. “Retirement planning” is cheaper than “emergency plumber near me” despite being financial services; intent and competition matter more than sector. And e-commerce and beauty CPCs look low because most transactional demand sits in Google Shopping, where the auction runs on feed quality, not bid.
Three-month training budget by platform and industry
These are the ranges we scope new accounts against. Media spend only, no management fees. Enough to clear the learning phase and give the algorithm real data to work with. Below these numbers, you are testing. Not running.
| Industry | Meta (3 months) | LinkedIn (3 months) | Google (3 months) |
|---|---|---|---|
| Financial services / wealth | R30k to R60k | R45k to R90k | R45k to R90k |
| E-commerce (home goods) | R30k to R75k | Not recommended | R30k to R75k (Search + Shopping) |
| Professional services | R24k to R45k | R36k to R75k | R36k to R75k |
| Home services | R24k to R45k | Not recommended | R30k to R60k (Search + LSA) |
| Beauty / personal care | R30k to R60k (Meta + IG) | Not recommended | R18k to R45k (Search + Shopping) |
Read this as the cost of finding out whether the channel works. Not the cost of a working channel. Accounts that clear these thresholds and wire the feedback loop settle into a sensible cost per customer by month four. Accounts below them spend the same amount over a longer period, and learn less.
What "working" should actually look like after 90 days
The right question is not “are the ads working”. It is “what is the cost per customer, and is it below what a customer is worth?” Three numbers matter, in order:
- Cost per lead. Useful for diagnostics. Misleading as a headline metric.
- Cost per qualified lead. Comes from your CRM, on your sales team’s definition. This is where a working feedback loop first shows up.
- Cost per customer, against lifetime value. The only number that decides whether the ads work. R2,000 per customer is excellent for a R50,000 client and terrible for a R500 sale.
Most SA accounts we take over report only the first number, which is why they cannot tell whether the ads are working. Fix the reporting and “why are my ads not working” often becomes “actually, they are. You just could not see it”.
The short version
Before blaming the platform, check four things in order. Is the creative built on real customer language? Has the learning phase been left alone to run? Is your CRM sending outcomes back to the ad platform? Does your budget match your industry’s CPCs? Get those right and Meta, LinkedIn and Google all work about as well as you would expect. Get them wrong and no platform will save the account.
If you want an outside eye, we run paid-media audits that walk your account through this exact checklist and put numbers on each gap. The output is a written report, not a sales call. Related reading: what LinkedIn Ads actually cost in SA, what SA SMEs should spend on Google Ads, and when Meta Advantage+ makes sense.





