SEO Analytics

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...
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...
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...
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...
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...

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...

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...
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...

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...
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)...

Top Mover Queries

Loading top movers (queries)...
Filter:
Loading page detail...
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...
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...
Top pages (last 90 days).
Loading top pages...
Homepage & BoFu per-page detail (last 90 days). Same filter pills as the 28-day BoFu tab.
Filter:
Loading BoFu detail...
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...

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...

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...

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...
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...