BigQuery-driven performance dashboards for organic search, keyword
positioning, office-location pages, and long-range historical trends.
Checking data freshness…
Pages ranking in positions 1-20 where actual click-through rate is below
benchmark. Improving title tags, meta descriptions, and SERP features on
these pages could recover estimated monthly clicks without any ranking
change. Sorted by the size of that opportunity.
Total Potential Clicks / Month-
Pages Below Benchmark-
Median CTR Gap-
Loading CTR opportunities...
Page
Impressions
Position
Actual CTR
Benchmark CTR
CTR Gap
Potential Clicks
Daily organic clicks and impressions for the last 90 days. Vertical
markers show milestone events (redesigns, BoFu launches, GBP changes)
so you can visually correlate interventions with performance movements.
Comparison window:
Loading comparison...
Daily Clicks & Impressions (90 days)
Loading site performance...
Comparison window:
Top queries — the actual search terms driving
clicks, sorted by clicks in the current window. Use Prior/Last/% to spot
seasonal trends (tax-season queries, end-of-year spikes, etc.) and
content that's building or losing momentum.
Loading top queries...
Query
Prior Clicks
Last Clicks
Δ Clicks
% Change
Impressions
CTR
Avg Position
Top pages — page-level performance with prior-period
comparison. A green arrow on MoM Position means the page improved in the
rankings (lower position = better).
Loading keyword performance...
Page
Prior Clicks
Last Clicks
Δ Clicks
% Change
Impressions
CTR
Avg Position
Pos Δ
Performance of the six office-location pages (/locations/*)
over the last 28 days. Use this to spot which markets are producing
search visibility vs. which need more local signal building.
Clicks by Office Location (28 days)
Loading location chart...
Loading location table...
Location
Clicks
Impressions
Avg Position
Days w/ Data
Loading integrity status...
Performance by office (latest complete month) -- calls, direction
requests, website clicks and profile views pulled daily from the Google Business
Profile Performance API, with prior-month comparison. The current month is excluded
until Google finalizes it (the API lags ~3-7 days). See the
GBP Month-over-Month tab for the full monthly history.
The integrity audit runs daily via Google Places API and
detects unauthorized "suggest an edit" changes to NAP, categories, hours, and website.
Loading GBP performance...
Monthly Interactions by Office (last 12 months)
Loading trend chart...
Top search keywords (last 3 months)
Search terms users typed into Google before viewing each office profile.
The GBP API returns impression buckets rather than exact counts;
we display the bucket midpoint for sortable comparison.
Loading keywords...
Keyword
Office
Month
Impressions (est.)
Integrity audit -- recent events (90 days)
Every detected change to a tracked NAP/profile field. Critical = phone,
address, primary category, website. Warning = hours, additional
categories, business name. Info = description, attributes.
Loading events...
Detected
Office
Field
Old Value
New Value
Severity
Status
GBP Posts — published & performing
Posts published to each office's Google Business Profile from the blog
content pipeline. Impressions / clicks populate ~7 days after publish via
the GBP per-post insights API.
GBP post clicks by office (last 28 days)
Loading chart...
Post history (last 90 days)
Loading post history...
Blog Title
Office
Published
Impressions
Clicks
CTR
Month-over-month GBP performance — calls, direction
requests, website clicks and profile views pulled daily from the Google
Business Profile Performance API across all 6 offices. Each row is one
complete calendar month with the change vs. the prior month. The
current month is intentionally excluded: the GBP API lags ~3–7 days,
so the running month is incomplete until Google finalizes it.
Agency totals by month (all offices combined)
Loading month-over-month...
Month
Calls
Directions
Website
Profile views
Total interactions
Total interactions by office
Each office's total interactions (calls + directions + website clicks) per
month, with the most recent complete month's change vs. the prior month.
Loading by office...
Search queries that triggered each office's GBP UTM landing page
in Google organic results — pulled daily from gsc_query_page, no
manual CSV download required. Data covers all 6 offices simultaneously.
Filter by office or switch windows with the controls below.
Loading GBP keyword data...
Keyword
Office
Clicks
Impressions
CTR
Avg Position
Homepage (/), practice-area pages
(/practice-areas/*) and location pages
(/locations/*) are the money-maker URLs. This tab tracks
them as a group so you can see conversion-driving pages improve or decline
against total organic.
Comparison window:
Loading summary cards...
Monthly Clicks by Page Type (last 12 months)
Loading trend chart...
Top Movers. Pages and queries with the biggest absolute
change in clicks vs the prior window. Gains in green, losses in red.
Uses the comparison window selected above.
Top Mover Pages
Loading top movers (pages)...
Type
Page
Prior Clicks
Last Clicks
Δ Clicks
% Change
Impressions
Top Mover Queries
Loading top movers (queries)...
Query
Prior Clicks
Last Clicks
Δ Clicks
% Change
Impressions
Filter:
Loading page detail...
Type
Page
Clicks
Impressions
CTR
Avg Position
MoM Pos
Queries routing to these pages (28 days). Which search
terms are putting impressions on the homepage, practice-area, and
location URLs. Use the filter pills above to narrow by bucket. Queries
with fewer than 5 impressions in the window are hidden.
Loading query detail...
Type
Query
Clicks
Impressions
CTR
Avg Position
A 90-day window smooths out weekly noise and surfaces trends that a 28-day
view can't see. Use this to validate which pages / queries are
sustaining traffic vs. spiking briefly, and to give recently-launched
content time to accumulate enough data to judge.
Loading 90-day summary...
Top queries (last 90 days). Filters out queries with fewer than 20 impressions in the window.
Loading top queries...
Query
Clicks
Impressions
CTR
Avg Position
Pages
Top pages (last 90 days).
Loading top pages...
Page
Clicks
Impressions
CTR
Avg Position
Homepage & BoFu per-page detail (last 90 days).
Same filter pills as the 28-day BoFu tab.
Filter:
Loading BoFu detail...
Type
Page
Clicks
Impressions
CTR
Avg Position
Days w/ Data
Long-range monthly performance stitched from historical exports
(kylerobbinslaw.com era) into live daily BigQuery data.
Bars show imported monthly rollups; the solid line shows live data.
All milestone events (domain migration, redesigns, BoFu launches)
are annotated as vertical lines.
Monthly Organic Clicks (Historical + Live)
Loading historical view...
Commercial-intent data accumulated by the blog pipeline: official Google
Ads CPC ranges, MOFU pivot questions, validated FAQ pairs, and live
competitor ad copy. This becomes the targeting + knowledge layer the
day Google opens Conversational Discovery Ads & Business Agent for Leads.
CPC Opportunity — Bid While Organic Catches Up
Keywords where Google Ads top-of-page bids are ≥ $15 but
organic rank is page 2+ (or absent). These are the highest-ROI ad targets —
paid covers what organic can’t yet.
Loading CPC opportunities...
Keyword
Top-of-Page Bid (High)
Low Bid
Competition
Organic Position
Trend
Gap?
MOFU Pivot Questions — Conversational Discovery Ad Targets
Questions that signal the shift from research to intent. These become
your Conversational Discovery Ad targeting list when Google opens the product.
Export as CSV for direct upload.
Loading MOFU questions...
Question
Parent Keyword
Times Seen
Last Seen
FAQ Library — Business Agent for Leads Knowledge Base
Validated Q&A pairs from published posts, organized by practice area.
This is the knowledge base for your Business Agent for Leads configuration.
Loading FAQ library...
Competitor Ads — Who Is Bidding on Your Keywords
Ad copy captured from Google paid SERP results during blog post research.
Domains seen 3+ times are flagged as persistent competitors.
Loading competitor ads...
Domain
Keyword
Ad Title
Description
Est. CPC
Times Seen
Triage Logic — Validated Reader Psychology
Core fears, decision triggers, and opening intake questions extracted from
every Strategic Brief. The rules below configure Google’s Business Agent for
Leads when general access opens, and ground the upcoming non-commodity content
agent in real reader psychology — not generic anxieties.
Sorted by times observed — the most validated patterns surface first.
Loading triage logic...
Practice Area
Location
Core Fear
Decision Trigger
Opening Intake Question
Times Observed
Confidence
Last Updated
Month 4 build checkpoint for the non-commodity content engine
(case studies + FAQ hubs + scenario-grounded blog posts). Compares AI
Overview citation rate against the commodity baseline, tracks fan-out
coverage from multi-LLM follow-up signals, and shows the cost-per-cited-
asset trend used in the renewal decision. Pre-rendered nightly from the
Knowledge Base and the REL local DB — loads in under 2 s with no
client-side queries.
Time range:
Loading Non-Commodity ROI...
AI Overview Citation Lift
—
Non-commodity: — cites / post (30d)
Commodity baseline: — cites / post (30d)
Fan-Out Match Rate
—
— of
— follow-ups answered
Unanswered gap: —
Scenario Reuse Multiplier
—
Indexable assets per Kyle intake — scenarios in library
Cost per Cited Asset
—
Agent cost this month: —
Last month: —
Weekly Citations — Commodity vs Non-Commodity (trailing 16 weeks)
Multi-piece bundles (BoFu + ToFu/MoFu spokes) produced against one
shared research run. Status pills: completed = ready
to copy/paste to MODX, published = live, in_progress = orchestrator
running, partial_failure = needs --rerun-failed.