What makes local PPC different
A national e-commerce brand can run Performance Max with a 50-mile radius meaning nothing — anyone can buy from anywhere. A local HVAC company's 50-mile radius means the difference between a profitable lead and a wasted click, because someone 45 miles away is never going to book a same-day repair.
Local businesses also typically have lower conversion volume than the 30–50 conversions/month Smart Bidding strategies want to see for reliable optimization. That does not mean Smart Bidding cannot be used — it means starting with Maximize Conversions (no target) or even Maximize Clicks while volume builds, and being patient about adding a tCPA target.
Most importantly, the conversion itself is often offline: a phone call, a booking through a third-party scheduling tool, or a walk-in. If these are not being tracked as conversions in Google Ads, the account is bidding blind — Smart Bidding optimizes toward whatever is tracked, and if that is just "contact form submitted" while 80% of your leads come by phone, you are optimizing for the wrong 20%.
Google Ads for local: location targeting and call tracking
Set location targeting based on "Presence" (people physically in or regularly in your targeted locations) rather than "Presence or Interest" for service-area businesses — the latter can show ads to people merely searching about a location, which wastes spend for businesses that cannot serve remote customers.
Define your radius based on real travel behavior, not convenience. A specialty medical practice might reasonably draw patients from 25–30 miles. A residential plumber's realistic same-day service area might be 10–15 miles. Use your existing customer address data, if available, to calibrate — Claude can help analyze a CRM export to find your actual customer distribution.
Call tracking is essential. Use Google's call conversion tracking (forwarding numbers that track calls from ads, or call extensions with conversion tracking enabled) so that calls of a minimum duration count as conversions. Without this, a campaign driving 40 phone calls a month and 2 form fills looks like it is converting at a tiny fraction of its real rate.
- Use "Presence" location targeting for service-area businesses, not "Presence or Interest"
- Set radius based on realistic service area, not a round-number default
- Enable call conversion tracking with a minimum call duration threshold (e.g., 60 seconds) to filter out missed calls and wrong numbers
- Consider Local Service Ads (LSAs) for eligible categories (home services, legal, real estate) — they appear above standard Search ads and charge per lead, not per click
- Use location extensions and location asset groups so ads show your address, hours, and "get directions" link
Meta Ads for local: lead forms over pixel-dependent retargeting
Most local businesses do not generate enough website traffic to build effective Custom Audiences or Lookalikes from pixel data alone. Rather than waiting months to accumulate pixel volume, lead generation campaigns using Meta's native Instant Forms often outperform website-conversion campaigns for local businesses — the form loads instantly within Meta's app, reducing drop-off compared to sending users to a website.
Radius targeting on Meta works similarly to Google: set it based on your real service area, centered on your business location (or multiple locations for multi-location businesses, each as a separate ad set or campaign).
For businesses with a physical storefront, the Store Traffic objective and location-based ad formats (showing distance and directions) can drive foot traffic directly, which is often a more natural fit than trying to force an online conversion for a business that primarily transacts in person.
- Use Instant Forms (lead ads) for service businesses where a phone call or form is the goal
- Set radius targeting around each physical location for multi-location businesses — run separate ad sets
- For storefronts, test Store Traffic objectives with distance/directions creative
- Sync leads from Instant Forms to your CRM automatically (via integration or Zapier-style connector) — manual export delays follow-up and hurts close rates
Budget allocation for local businesses
With limited budgets, concentration beats spreading thin. A common mistake is splitting a small budget across Search, Display, and Social equally — each channel ends up too underfunded to gather meaningful data. Start with the channel most aligned to active intent (usually Google Search for "near me" and service-category searches), prove it works, then expand.
A reasonable sequencing for a new local PPC budget: start with Google Search campaigns targeting your core services plus "near me" and location-modified keywords (e.g., "[service] in [city]"). Once Search is generating leads at a sustainable cost, add Meta lead generation to build broader awareness and capture demand that has not yet searched. Local Service Ads, where eligible, can run alongside Search from day one since they are a separate, often lower-competition channel.
- Prioritize Google Search for "near me" and location-modified service keywords first
- Add Local Service Ads in parallel where your category is eligible — pay-per-lead pricing suits limited budgets
- Layer in Meta lead generation once Search is producing leads at a sustainable cost
- Avoid Display and broad Social awareness campaigns until Search and lead-gen channels are profitable — they are harder to attribute and need more budget to show results
Reporting that matters for local business owners
A local business owner does not need impression share charts — they need to know: how many leads did this generate, what did each lead cost, and how many of those leads turned into actual customers. The last part requires closing the loop with whatever booking or sales tracking the business already uses (even if that is a simple spreadsheet).
With MCP Ads, Claude can pull cost and lead-volume data from Google Ads and Meta directly and combine it into a single weekly summary: "Show me total spend, number of calls (over 60 seconds), and number of form submissions for last week vs the prior week, broken down by Google Ads and Meta. Calculate cost per lead for each channel." For a local business owner, that single number — cost per lead by channel — is usually the only metric that drives a budget decision.
Doing this with Claude connected to the account
Local accounts are small, which means the owner rarely has time to check radius performance, call reporting, and ad schedules separately. With Google Ads and Meta Ads connected through MCP Ads, those checks become questions asked in plain language.
Prompt 1: "Break down the last 60 days by city and postal code within my targeted radius. Show spend, calls, form leads, and cost per lead for each, and flag any location that has spent over $100 with no lead." Claude calls google_ads_geo_performance for the location split and google_ads_call_metrics for the call conversions. What comes back is a ranked list of locations instead of a map you have to squint at. As an illustrative example, a plumber targeting a 25-mile radius might find that two suburbs on the far edge account for 30 percent of spend and 5 percent of leads — a clear case for tightening the radius or adding a negative location with google_ads_remove_location_target.
Prompt 2: "Show performance by hour and day of week and propose an ad schedule that keeps ads on during business hours and reduces bids 30 percent after 6pm." This uses google_ads_hourly_breakdown and google_ads_ad_schedule_report, then google_ads_set_ad_schedule to apply the schedule. Setting a schedule is a write, so Claude shows the exact hours and bid adjustments before doing anything and waits for approval.
Prompt 3: "Create a Meta lead campaign for the spring HVAC tune-up offer, targeting a 15-mile radius around the shop, with an instant form asking for name, phone, and postcode. Keep it paused." Claude uses meta_ads_build_geo_targeting for the radius, then meta_ads_create_lead_campaign and meta_ads_create_lead_form_and_paused_ad. The campaign is created paused by default, so nothing spends until you have looked at it. Once it is running, "export this week's leads" calls meta_ads_lead_export and gives you the names and phone numbers to hand to whoever answers the phone.
A local owner does not need a weekly dashboard. They need this conversation once a week, and the Google Ads and Meta skills can run it on a schedule and send a short summary instead.
Where the manual way still wins
The Google Ads API reports calls, but not what was said on them. Whether a call was a booked job, a wrong number, or an existing customer only lives in the call tracking provider or the front desk notebook. Claude can count calls; it cannot grade them unless you feed the outcomes back. Local Services Ads also sit outside the standard API, so those leads and reviews have to be checked in their own interface.
Radius decisions also carry knowledge that is not in the data: which neighbourhoods the crew will actually drive to, where the competitor with a better price is, and what the owner considers their area. Use the location report to inform that decision, not to replace it.