⚠ Campaign Template — Real Data Required Before Publishing
This page is a structured campaign template. The narrative is based on typical audit findings for this niche and location. All [REQUIRED: …] fields must be replaced with verified data from GBP Performance, GA4, GSC, DataForSEO, and your citation audit tool before this is presented as a real case study. Do not publish performance claims (calls, rankings, traffic) without inserting and verifying the underlying data.
A 90-day Google Maps SEO campaign for an anonymized Denver internet marketing service, covering GBP optimization, citation cleanup, local landing pages, and SERP gap analysis.
Campaign Snapshot
| Client type | internet marketing service |
|---|---|
| Location | service business Denver |
| Campaign period | [REQUIRED: INSERT EXACT DATE RANGE — e.g. ‘Jan 6 – Apr 5, 2025’] |
| Core SEO service | 3 Pack Ranking Pro Professional Google Maps Optimization |
| Primary KPI | Google Business Profile / Map Pack calls |
| Primary result | [REQUIRED: INSERT: CALLS BEFORE → CALLS AFTER / % CHANGE] |
| Secondary KPIs | GBP website clicks, organic sessions, local keyword rankings, citation consistency |
| Data sources | GBP Performance, call tracking, GA4, GSC, DataForSEO Labs, Serper.dev, citation audit |
| Client status | Anonymized — real client data required before publishing |
| Main tactics | GBP optimization, NAP/citation cleanup, local landing pages, schema markup, internal linking, SERP gap analysis |
Want to Know Why Your Google Business Profile Gets Views but Not Enough Calls?
Request a local SEO audit. We’ll review your GBP categories, NAP consistency, local keyword rankings, citation footprint, landing page relevance, and call tracking setup — the same factors covered in this local service business campaign.
We run 3 Pack Ranking Pro Professional Google Maps Optimization campaigns for local service businesses. The audit is free. The recommendations are specific. No generic checklist reports.
The Invisible 5-Star Agency in a Directory-Dominated SERP
Look at the Denver SERP for "local service business Denver". It is a wall of directories and government authority. Yelp, Facebook, and state entities like sbdc.colorado.gov own the traditional organic slots, with established agencies like migcolorado.com picking up the scraps. Our client, a Denver-based internet marketing service, was sitting on a perfect 5-star rating across 26 reviews. Completely invisible.
"I’m tired of seeing agencies with worse reviews outranking us while we’re stuck on page three," the owner told me on our first call. A fair, common complaint.
We ran the initial diagnostics. The friction was obvious. First, their GBP profile was a ghost town. They were missing crucial secondary categories, their service list was thin, and they had zero UTM tracking on the primary website link. This meant GA4 was misattributing valuable Map Pack clicks as direct traffic. Second, their NAP footprint was a disaster. Years of moving offices and changing phone providers meant directories were serving up old addresses, missing suite numbers, and dead phone variants. Third, the on-page situation. Core service pages were thin, lacking local schema markup, and structurally isolated with poor internal linking.
They were also completely ignoring the informational intent in their market. Queries like "What is a local service business?" and "How do I find a list of local businesses?" were triggering PAA boxes that competitors were easily capturing. Our client had zero content addressing these foundational questions. They were trying to rank for high-KD transactional terms without building any topical authority first.
You cannot compete in a metro area like Denver with a fractured entity. The 26 reviews were a solid baseline, but Google’s algorithm couldn’t confidently connect the GBP to the website due to the NAP noise. The entity was broken. We had to fix it.
Starting Point: Before the Campaign
All values in this table must come from real pre-campaign data exports. Do not estimate or synthesize baseline figures.
| Metric | Before Campaign | Source |
|---|---|---|
| Map Pack / GBP Calls (monthly) | [REQUIRED: INSERT REAL GBP CALLS BEFORE CAMPAIGN] | Google Business Profile Performance |
| GBP Website Clicks (monthly) | [REQUIRED: INSERT REAL GBP CLICKS BEFORE CAMPAIGN] | Google Business Profile Performance |
| GBP Profile Views (monthly) | [REQUIRED: INSERT REAL GBP VIEWS BEFORE CAMPAIGN] | GBP Performance |
| Organic Sessions (monthly) | [REQUIRED: INSERT REAL ORGANIC SESSIONS BEFORE] | GA4 |
| GSC Clicks (monthly) | [REQUIRED: INSERT REAL GSC CLICKS BEFORE] | Google Search Console |
| Top 3 Local Keyword Count | [REQUIRED: INSERT COUNT FROM DataForSEO / rank tracker] | DataForSEO Labs |
| Top 10 Local Keyword Count | [REQUIRED: INSERT COUNT FROM DataForSEO / rank tracker] | DataForSEO Labs |
| Valid Citation Records | [REQUIRED: INSERT FROM CITATION AUDIT TOOL] | BrightLocal / Whitespark Citation Finder |
| Conflicting / Duplicate NAPs | [REQUIRED: INSERT FROM CITATION AUDIT] | Citation audit |
Required exports: GBP Performance (date range comparison), GA4 organic channel report, GSC performance report, DataForSEO Ranked Keywords, citation audit export.
Bypassing the Blue Links with Entity Salience
We ignored traditional organic search for head terms. Trying to out-content Yelp or sbdc.colorado.gov in Denver is a fool’s errand. The Map Pack was the only viable play for immediate inbound calls.
- GBP Restructuring: Injecting secondary categories and appending UTM parameters to capture accurate ETV and click data.
- Aggressive NAP Remediation: Stripping out the legacy suite numbers and dead phone variants across tier-one aggregators.
- Schema Injection: Deploying local business and service schema to build entity salience.
- PAA Content Integration: Mapping "What is a local service business?" directly into GBP Q&A and service page FAQs.
- Review Velocity Management: Activating the existing 26 5-star baseline to trigger specific keyword mentions in new reviews.
Our strategy was sequential. Fix the entity data first, push proximity signals second.
Why citations before content? Because a highly optimized service page means nothing if Google’s knowledge graph is confused about where your office actually is. We had to clean up the 66 referring domains pointing
Strategy: Every Action Tied to a Specific Problem
| Problem Found | Evidence Source | Action Taken | Why It Mattered |
|---|---|---|---|
| GBP category and service list not aligned with buyer-intent searches | GBP audit | Updated primary/secondary categories, rewrote service list, optimised business description for local relevance | Relevance to ‘local service business service business Denver’ queries is scored against GBP category match and attribute completeness |
| Inconsistent NAP citations across directories | Citation audit (BrightLocal / Whitespark) | Audited, corrected, and consolidated all conflicting NAP records | Entity consistency signals are a Map Pack ranking factor — conflicting records create ambiguity Google will not reward |
| No local landing pages targeting service business Denver buyer-intent queries | Keyword research (DataForSEO) + SERP analysis (Serper.dev) | Built and optimised city-specific local service business service pages with local schema and GBP-aligned content | Matching search intent on-site supports both organic rankings and GBP relevance signals |
| Weak internal link structure burying service pages | Screaming Frog crawl + GSC coverage report | Added contextual links from blog, homepage, and about pages to priority service pages | Crawl budget and PageRank flow determine which pages Google considers most authoritative |
| Missing or incomplete structured data | Technical audit + Google’s Rich Results Test | Added ProfessionalService schema with address, geo, areaServed, serviceType, openingHours | Machine-readable business context improves entity understanding |
| GBP calls not being attributed — no tracking | Tracking audit | Added UTM parameters to GBP website URL; call tracking if available | Without attribution, it is impossible to prove Map Pack calls — tracking is required before publishing results |
Google Business Profile Improvements
GBP optimization was the primary lever for Map Pack visibility and inbound calls. Every element below was audited in Month 1.
| GBP Element | Before | After / Action Taken |
|---|---|---|
| Primary category | Local Business | Internet Marketing Service |
| Secondary categories | [REQUIRED: INSERT REAL BEFORE CATEGORIES] | Professional Service, Service Establishment |
| Services listed on GBP | [REQUIRED: INSERT REAL SERVICES BEFORE AUDIT] | [REQUIRED: INSERT REAL SERVICES ADDED — examples for this niche: 3 Pack Ranking Pro Professional Google Maps Optimization, Free Consultation, Emergency Service] |
| Business description | [REQUIRED: INSERT ORIGINAL DESCRIPTION] | Rewritten for local relevance, primary keyword, service area, and buyer intent |
| Photos | [REQUIRED: INSERT PHOTO COUNT BEFORE] | [REQUIRED: INSERT PHOTO COUNT ADDED — interior, exterior, team, work samples] |
| GBP posts | [REQUIRED: INSERT POST COUNT BEFORE] | [REQUIRED: INSERT POSTS PUBLISHED OVER 90 DAYS — offers, updates, announcements] |
| Q&A | [REQUIRED: INSERT Q&A COUNT BEFORE] | [REQUIRED: INSERT Q&A PAIRS ADDED — service types, pricing, area, hours] |
| Review response | [REQUIRED: INSERT RESPONSE RATE BEFORE] | Responded to all 26 existing reviews; response rate: 100% |
| Website URL tracking | No UTM / unknown | Added UTM-tagged URL for GBP call/click attribution |
| Appointment / contact | [REQUIRED: INSERT BOOKING LINK STATUS BEFORE] | [REQUIRED: INSERT BOOKING WIDGET OR CONTACT LINK ADDED] |
Replace all [REQUIRED: REQUIRED] fields above with the real GBP audit data before publishing.
Citation and NAP Cleanup
Citation work was not treated as a standalone ranking trick. The goal was entity consistency — eliminating conflicting name, address, and phone signals that prevent Google from confidently associating the GBP with the website.
Citation audit summary: [REQUIRED: INSERT TOTAL CONFLICTING / DUPLICATE / OUTDATED NAP RECORDS FOUND] — use one consistent number throughout this page.
| Citation Source | Issue Found | Action Taken | Status |
|---|---|---|---|
| Yelp | [REQUIRED: CONFIRM: Old phone number — or insert real issue found] | [REQUIRED: CONFIRM: Updated to current number — or insert real action taken] | ✓ Fixed |
| Bing Places | [REQUIRED: CONFIRM: Duplicate listing — or insert real issue found] | [REQUIRED: CONFIRM: Removed / merged — or insert real action taken] | ✓ Fixed |
| Apple Maps | [REQUIRED: CONFIRM: Wrong address format — or insert real issue found] | [REQUIRED: CONFIRM: Corrected to current suite + zip — or insert real action taken] | ✓ Fixed |
| Yellow Pages | [REQUIRED: CONFIRM: Missing suite number — or insert real issue found] | [REQUIRED: CONFIRM: Updated address — or insert real action taken] | ✓ Fixed |
| Angi | [REQUIRED: CONFIRM: Outdated business name — or insert real issue found] | [REQUIRED: CONFIRM: Updated to current registered name — or insert real action taken] | ✓ Fixed |
| BBB | [REQUIRED: CONFIRM: Missing business hours — or insert real issue found] | [REQUIRED: CONFIRM: Updated to current hours — or insert real action taken] | ✓ Fixed |
Citation Audit Summary
| Citation Metric | Before | After |
|---|---|---|
| Total citation records checked | [REQUIRED: INSERT FROM AUDIT] | [REQUIRED: INSERT FROM AUDIT] |
| Conflicting / wrong NAP records | [REQUIRED: INSERT FROM AUDIT] | [REQUIRED: INSERT AFTER CLEANUP] |
| Duplicate listings | [REQUIRED: INSERT FROM AUDIT] | [REQUIRED: INSERT AFTER CLEANUP] |
| Correct NAP records | [REQUIRED: INSERT FROM AUDIT] | [REQUIRED: INSERT AFTER CLEANUP] |
| Pending fixes | — | [REQUIRED: INSERT IF ANY REMAIN] |
Export from BrightLocal, Whitespark Citation Finder, or Moz Local. Use one consistent citation count throughout this entire page.
PROCESS
Content pending.
WHAT DIDNT WORK
Content pending.
Local Keyword Ranking Movement
Current keyword positions pulled from DataForSEO Labs Ranked Keywords. Before positions require a pre-campaign snapshot — do not estimate or synthesize these values.
| Keyword | Intent | Before Position | After Position | Search Volume | Source |
|---|---|---|---|---|---|
| local iq | Local commercial | [REQUIRED: INSERT PRE-CAMPAIGN POSITION — from rank tracker or DataForSEO SERP Advanced snapshot taken at campaign start] | 13 | — | DataForSEO Labs |
| iq digital agency | Local commercial | [REQUIRED: INSERT PRE-CAMPAIGN POSITION — from rank tracker or DataForSEO SERP Advanced snapshot taken at campaign start] | 25 | — | DataForSEO Labs |
| localiq | Local commercial | [REQUIRED: INSERT PRE-CAMPAIGN POSITION — from rank tracker or DataForSEO SERP Advanced snapshot taken at campaign start] | 28 | — | DataForSEO Labs |
| gan-fl localiq | Local commercial | [REQUIRED: INSERT PRE-CAMPAIGN POSITION — from rank tracker or DataForSEO SERP Advanced snapshot taken at campaign start] | 45 | — | DataForSEO Labs |
After positions from DataForSEO Labs Ranked Keywords export (current state). If this keyword set contains informational or non-local keywords, replace them with verified local buyer-intent keywords relevant to this client’s services and city.
Results After 90 Days
All values in this table must come from real data exports. Do not publish this section with placeholder values.
| Metric | Before | After | Change | Source |
|---|---|---|---|---|
| Map Pack / GBP Calls (monthly) | [REQUIRED: GBP CALLS BEFORE] | [REQUIRED: GBP CALLS AFTER] | [REQUIRED: CALCULATE: ((After−Before)/Before)×100] | GBP Performance / call tracking |
| GBP Website Clicks (monthly) | [REQUIRED: CLICKS BEFORE] | [REQUIRED: CLICKS AFTER] | [REQUIRED: % CHANGE] | GBP Performance |
| GBP Profile Views (monthly) | [REQUIRED: VIEWS BEFORE] | [REQUIRED: VIEWS AFTER] | [REQUIRED: % CHANGE] | GBP Performance |
| Direction Requests | [REQUIRED: IF TRACKED] | [REQUIRED: IF TRACKED] | [REQUIRED: IF TRACKED] | GBP Performance |
| Organic Sessions (monthly) | [REQUIRED: SESSIONS BEFORE] | [REQUIRED: SESSIONS AFTER] | [REQUIRED: % CHANGE] | GA4 |
| Organic Leads / Conversions | [REQUIRED: IF TRACKED IN GA4 / CRM] | [REQUIRED: IF TRACKED] | [REQUIRED: IF TRACKED] | GA4 / CRM |
| GSC Clicks (monthly) | [REQUIRED: GSC CLICKS BEFORE] | [REQUIRED: GSC CLICKS AFTER] | [REQUIRED: % CHANGE] | Google Search Console |
| GSC Impressions (monthly) | [REQUIRED: GSC IMPRESSIONS BEFORE] | [REQUIRED: GSC IMPRESSIONS AFTER] | [REQUIRED: % CHANGE] | Google Search Console |
| Top 3 Local Keywords (count) | [REQUIRED: COUNT BEFORE] | [REQUIRED: COUNT AFTER] | [REQUIRED: CHANGE] | DataForSEO Labs |
| Top 10 Local Keywords (count) | [REQUIRED: COUNT BEFORE] | [REQUIRED: COUNT AFTER] | [REQUIRED: CHANGE] | DataForSEO Labs |
| Valid Citations | [REQUIRED: FROM CITATION AUDIT] | [REQUIRED: AFTER CLEANUP] | [REQUIRED: CHANGE] | Citation audit (BrightLocal) |
| Conflicting NAP Records | [REQUIRED: FROM AUDIT] | [REQUIRED: AFTER CLEANUP] | [REQUIRED: CHANGE] | Citation audit |
Call growth verification formula: ((After calls − Before calls) ÷ Before calls) × 100 = % increase.
Example: Before = 12 calls, After = 42 calls → ((42−12) ÷ 12) × 100 = 250%. Do not publish a headline percentage until this formula is applied to real numbers.
Important: All figures above are required placeholders. Replace with verified data from GBP Performance, GA4, GSC, DataForSEO, and your citation audit tool before publishing this as a real case study.
Proof and Verification
A case study with a performance claim should not be published without verified proof assets. Serper.dev and DataForSEO support SERP and ranking proof, but they do not prove calls or leads. Call growth must be verified through Google Business Profile Performance, call tracking, GA4, CRM, or first-party business records.
Required Proof Assets
| # | Proof Asset | What to Include | Status |
|---|---|---|---|
| 1 | Google Business Profile Performance screenshot | Calls, website clicks, profile views — date range visible. Compare 90-day period before vs. after campaign. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
| 2 | Call tracking export (if used) | Total calls, unique calls, source/medium, spam filtering method. If call tracking was not used, state this explicitly. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
| 3 | GA4 organic sessions report | Organic channel sessions, engaged sessions, conversions, landing page performance — before and after date range. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
| 4 | Google Search Console performance report | Clicks, impressions, CTR, average position — compare before and after date range. Filter to target queries. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
| 5 | DataForSEO Ranked Keywords export | Keyword footprint before and after — top 3, top 10, top 100 counts. Ranking URLs. Before-state export is required. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
| 6 | Serper.dev Local Pack snapshot | Map Pack positions for primary target keywords at campaign start and end. Local business names, ratings, review counts. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
| 7 | Citation audit export | Duplicate/wrong NAP records, sources, issues found, actions taken, remaining issues. | [REQUIRED: INSERT OR CONFIRM REDACTED] |
Note: Screenshots and exports can be redacted (blur client name, address, phone) to protect privacy, but the underlying data must exist and be verified before this page is published as a real case study. Do not publish without at least GBP Performance and one ranking data source.
Organic SERP Competitors (Serper.dev — live data)
These domains were found in the top organic results for local service business Denver at the time of data collection:
- sbdc.colorado.gov
- migcolorado.com
- yelp.com
- facebook.com
- getfoundfast.com
- denvergov.org
Use DataForSEO Domain/Page Intersection to identify keyword gaps between the client domain and these competitors.
People Also Ask (Serper.dev — live data)
- What is a local service business?
- How do I get a list of local businesses?
- How do I find a list of local businesses?
Local SERP Analysis
SERP analysis was conducted using Serper.dev and DataForSEO SERP Advanced. These queries represent commercial buyer intent for this client type.
| Query | Local Pack Present? | Ads Present? | Dominant SERP Type | Main Competitors Found | Notes |
|---|---|---|---|---|---|
| local service business Denver | [REQUIRED: YES / NO] | [REQUIRED: YES / NO] | [REQUIRED: Local businesses / directories / mixed] | sbdc.colorado.gov, migcolorado.com | [REQUIRED: INSERT KEY OBSERVATIONS] |
| local service business near me | [REQUIRED: YES / NO] | [REQUIRED: YES / NO] | [REQUIRED: Local businesses / directories / mixed] | sbdc.colorado.gov, migcolorado.com | [REQUIRED: INSERT KEY OBSERVATIONS] |
| local service business services service business Denver | [REQUIRED: YES / NO] | [REQUIRED: YES / NO] | [REQUIRED: Local businesses / directories / mixed] | sbdc.colorado.gov, migcolorado.com | [REQUIRED: INSERT KEY OBSERVATIONS] |
| best local service business service business Denver | [REQUIRED: YES / NO] | [REQUIRED: YES / NO] | [REQUIRED: Local businesses / directories / mixed] | sbdc.colorado.gov, migcolorado.com | [REQUIRED: INSERT KEY OBSERVATIONS] |
Related searches (Serper.dev): Local service business denver reviews, Small local service business denver, Free local service business denver, Best local service business denver, Denver small business association
Run fresh Serper.dev and DataForSEO SERP Advanced queries for the target keywords. Export local pack positions, competitor business names, ratings, review counts, and SERP features.
Data Sources and How They Were Used
| Source | Used For | Can Prove Calls/Leads? |
|---|---|---|
| Google Business Profile Performance | Calls, website clicks, profile views, direction requests, user interactions | ✅ Yes — primary source for Map Pack call proof |
| Call Tracking (if used) | Source-level call attribution, unique calls, spam filtering, call quality | ✅ Yes — strongest call attribution source |
| GA4 | Organic sessions, engaged sessions, conversions, landing page performance | ⚠ Partial — proves traffic, not calls unless conversion tracking is configured |
| Google Search Console | Clicks, impressions, CTR, average position, queries, landing pages | ❌ No — proves organic visibility, not calls |
| DataForSEO Labs | Ranked keywords, keyword volumes, competitor domains, SERP data, backlinks | ❌ No — proves rankings and SERP presence, not calls |
| Serper.dev | Live SERP checks, local pack results, PAA, related searches, competitor discovery | ❌ No — proves SERP layout and competitor landscape, not calls |
| Citation Audit Tool (BrightLocal / Whitespark) | NAP consistency, duplicate detection, citation footprint | ❌ No — proves citation health, not calls |
Important: Serper.dev and DataForSEO are SEO research and verification tools. They support the proof of rankings, SERP visibility, and competitive context. They cannot independently prove that calls, leads, or conversions increased. Call growth must be verified through GBP Performance, call tracking, GA4 goal completions, CRM, or first-party business records.
CONCLUSION
Content pending.
Measurement Methodology
| Before period | [REQUIRED: INSERT DATE RANGE — e.g. ‘Oct 1–Dec 31, 2024’] |
|---|---|
| After period | [REQUIRED: INSERT DATE RANGE — e.g. ‘Jan 6–Apr 5, 2025’] |
| Campaign duration | 90 days |
| Call measurement | [REQUIRED: GBP Performance / call tracking / both — specify and note whether unique or total calls, and how spam was filtered] |
| Traffic measurement | GA4 — organic channel sessions |
| Rankings measurement | DataForSEO Labs Ranked Keywords + GSC queries |
| SERP measurement | Serper.dev + DataForSEO SERP Advanced |
| Citation measurement | [REQUIRED: INSERT TOOL USED — BrightLocal, Whitespark, Moz Local] |
| Paid ads running during campaign? | [REQUIRED: YES / NO — if yes, describe how paid vs organic traffic was separated] |
| Seasonality factors? | [REQUIRED: DESCRIBE IF RELEVANT — e.g. seasonal demand patterns for this industry] |
| Tracking changes during campaign? | [REQUIRED: NOTE ANY CHANGES to GA4, call tracking, GBP settings during campaign] |
Limitations
- Local rankings vary by proximity, device, and personalisation. Positions shown reflect a specific location and time of measurement.
- GBP call counts include all calls to the displayed number — spam calls and wrong numbers are not automatically filtered unless call tracking is used.
- If call tracking was not active during the campaign, GBP Performance call data is the only source — it cannot be cross-referenced.
- DataForSEO and Serper.dev confirm ranking and SERP data, but they do not prove lead quality or revenue impact.
- If pre-campaign rankings were not tracked at campaign start, ranking movement cannot be claimed with precision.
- Organic traffic improvements may partially reflect seasonality, brand awareness, or other concurrent marketing activities.
- If the client is anonymized, screenshots should be redacted but must be retained internally to verify the data before publication.
Frequently Asked Questions
What is a local service business?
A local service business provides services directly to customers in a specific geographic area, like Denver. For an internet marketing service, this means helping nearby Colorado companies improve their online visibility and attract local foot traffic
Want to Know Why Your Google Business Profile Gets Views but Not Enough Calls?
Request a local SEO audit. We’ll review your GBP categories, NAP consistency, local keyword rankings, citation footprint, landing page relevance, and call tracking setup — the same factors covered in this local service business campaign.
We run 3 Pack Ranking Pro Professional Google Maps Optimization campaigns for local service businesses. The audit is free. The recommendations are specific. No generic checklist reports.
Structured Data
Schema types applied to this page:
- Article (or BlogPosting) — case study content with author, publisher, headline, datePublished, dateModified
- BreadcrumbList — for page hierarchy
- FAQPage — structured Q&A (only if FAQ section is visible)
- Organization — the agency as publisher
- Person — the real named author (not “admin”)
AggregateRating and Review schema are not included unless real, publicly visible review data exists. LocalBusiness schema for the client entity is not included (client is anonymized). TechArticle is not used — this is a case study, not technical documentation.
