
Context: One 'Roodepoort' Campaign, Two Very Different Sets of Customers
Imagine a hypothetical Wilropark-based appliance repair business running one Google Search campaign set to 'Roodepoort (city)' plus 'Johannesburg' with presence-or-interest. After a month, most conversions show up in Florida and Florida Park, while a meaningful slice of spend leaks to Johannesburg CBD and Krugersdorp. The map looks right, but the customers aren't. This is the core problem with treating Roodepoort as one place.
Roodepoort is a cluster of suburbs-Wilropark, Constantia Kloof, Helderkruin, Honeydew, Ruimsig, Little Falls, Discovery, Florida-each with its own driving patterns, income bands and search behaviour. A single city targeting setting cannot distinguish between them.
Why 'Roodepoort' Is Not a Single Targeting Unit on Google Ads
Google Ads location targeting uses a geographic taxonomy grouping areas into cities, regions and countries. Roodepoort is officially part of the City of Johannesburg metropolitan area, so setting 'Roodepoort' often pulls in a broader region than you expect-or a narrower one, depending on how Google defines the boundary. 'Roodepoort' might include Constantia Kloof but exclude parts of Ruimsig under a different suburb label. Never assume a city name matches your service area: use the location search tool to see exactly which suburbs each option includes, and cross-check against your delivery or service radius.
Presence vs Presence or Interest: The Toggle That Decides Who Sees Your Ad
The default is 'Presence or interest', showing ads to people physically in your target area or who have shown interest in it. For a local plumber or electrician, this wastes budget on someone in Sandton who once searched for 'Roodepoort electrician' but won't hire locally. 'Presence' ensures only people actually in the area see the ad-critical for time-sensitive services.
For home services, set 'Presence' first. Only test 'Presence or interest' if you have evidence people outside the area travel in for your service (e.g., a specialist clinic).
City, Radius or Location Group: Choosing the Right Method for a West Rand Business
Each method solves a different problem. Use the table below as a starting point.
| Method | Best for | Example in Roodepoort | Watch out for |
|---|---|---|---|
| City targeting | National brands with local presence | A retail chain with a store in Wilropark Mall | May include neighbouring suburbs you don't serve |
| Radius targeting | Service businesses with a driving limit | A pool service covering 15 km from Ruimsig | Overlaps other suburbs; can include areas across a highway |
| Location group (suburb list) | Businesses targeting specific suburbs | A legal firm wanting only Florida and Constantia Kloof | Requires precise suburb selection; may miss adjacent areas |
When a 5-10 km Radius Beats City Targeting
If travel time and cost matter-appliance repair, plumbing, mobile beauty-a tight radius around your base is more efficient. A 10 km radius from Wilropark covers Florida, Constantia Kloof and parts of Helderkruin while excluding Johannesburg CBD, cutting wasted clicks from people too far to serve.
When a Suburb Location Group Beats Both
To target high-value suburbs without radius spillover into industrial or low-income areas, a location group of individual suburbs is more precise. A financial advisor might target only Constantia Kloof and Little Falls, where property values and income align with their services.
Why 'Roodepoort vs Johannesburg' Confusion Wastes Budget
Adding 'Johannesburg' as a secondary location can dilute local intent and raise cost per acquisition (CPA). Someone searching from Sandton is less likely to convert for a Roodepoort business. Use separate campaigns per city and allocate budget from historical conversion data, not guesswork.
Building the Core Campaign: Search Structure for a Local Service Business
Start with one campaign per service category (e.g., 'Appliance Repair' and 'Geyser Installation') and ad groups per suburb or suburb cluster. Use exact and phrase match for high-intent keywords like 'appliance repair Roodepoort' and 'geyser repair Florida'. Keep broad match for discovery but monitor the search terms report weekly and add negatives aggressively.
Modelling a ZAR Budget Before You Spend It
Before setting a daily budget, calculate your break-even cost per lead from gross margin and close rate. The example below assumes a 40% gross margin and 25% close rate.
// Hypothetical break-even CPL calculation
const averageJobValue = 2500; // ZAR
const grossMargin = 0.40;
const closeRate = 0.25;
const breakEvenCPL = averageJobValue * grossMargin * closeRate;
console.log(breakEvenCPL); // 250Here you can afford up to R250 per lead. If actual CPL is higher, raise close rate, raise prices, or cut cost per click. Treat this as a guardrail, not a target.
Playbook: Splitting Spend Across Suburbs Without Fragmenting Data
Once targeting is set, allocate budget across suburbs by performance. Start with equal splits, then reallocate weekly using conversion data. Use campaign-level location bid adjustments to raise bids in low-CPA suburbs and lower them in high-CPA ones. Keep a single conversion tracking setup to avoid data fragmentation.
Negative Keywords and Excluded Locations: Plugging the Leaks
Review the search terms report weekly and add irrelevant queries as negatives. For a Roodepoort appliance repair business, that might include 'training', 'jobs', 'spare parts', and 'diy'. Exclude locations you don't serve-if you only cover the West Rand, exclude Johannesburg CBD, Sandton and Pretoria at campaign level to prevent spend leakage.
Excluding locations can inadvertently block nearby suburbs with similar names. Always check the excluded area's map boundary before applying.
Landing Pages Built for a Suburb, Not a Country
A generic 'Serving South Africa' page underperforms for local searches. Build suburb-specific landing pages that mention the suburb name, local landmarks and area testimonials-a 'Florida' page might reference Florida Lake and local schools. This raises relevance and conversion rate; dynamic text replacement can insert the suburb name into the headline automatically.
Measuring What Matters: CPL, Cost Per Booked Job and Consent-Safe Tracking
Click volume is vanity; cost per lead (CPL) and cost per booked job are sanity. Track conversions at multiple stages: form submission, phone call, WhatsApp message and booked appointment, assigning values based on your break-even model.
GA4, Call Tracking and WhatsApp Lead Attribution
Implement GA4 with server-side tracking to capture events accurately across devices. Use dynamic number insertion (DNI) to attribute calls to the right campaign, and a UTM-tagged WhatsApp link with CRM integration to mark leads as 'booked'. Without this, you're guessing which suburbs drive revenue.
POPIA and Consent: What to Get Right Early
South Africa's Protection of Personal Information Act (POPIA) requires consent for collecting personal data. Ensure lead forms include a clear marketing opt-in and that your call tracking provider complies with consent mode. For more, see our conversion rate optimisation services.
Break-Even Maths and Budget Reallocation
Use the break-even CPL to set target CPA bids. If a suburb's CPA exceeds break-even, reduce bids or pause it; reallocate to suburbs where CPA is below break-even and volume is stable. Review weekly and adjust monthly for seasonality (e.g., geyser repairs spike in winter).
What a Well-Run Roodepoort Campaign Should Produce
A disciplined local PPC campaign in Roodepoort should deliver a predictable cost per booked job, transparent suburb-level reporting, and a clear line of sight from ad click to bank deposit. You should know which suburbs are profitable and scale spend on the winners. If that clarity is missing, start with a targeting audit-our Google Ads management team can help.




