F! Insights
Surgical Documentation & Optimization Guide

Overview & Philosophy

F! Insights is a private, self-hosted intelligence engine for local business prospecting and GBP fulfillment. Unlike SaaS tools that charge per location, F! Insights runs on your server, your database, your rules.

The core strategy flips the dynamic of cold outreach: instead of interrupting with a claim, you provide a visitor with their own data and an AI-scored audit of exactly where they are losing ground to competitors. You aren't telling them they have a problem, Google's data is.

Dual Operating Modes
  • Lead Gen Mode: Visitors use the scanner widget to see their own data, and you capture their contact info at peak engagement.
  • Fulfillment Mode: Connect client GBPs to manage posts, service pages, profile optimization, and reviews from a single hub.

The Scan Report

Every scan produces an overall score out of 100 and individual scores across eight categories:

CategoryWhat it measures
Online PresenceProfile completeness, visibility signals, verified status
Customer ReviewsRating, volume, recency, response patterns
Photos & MediaPhoto count, recency, type coverage
Business InfoHours, phone, address, website, attributes, amenities
Competitive PositionComparison against 3 nearby active competitors
Website PerformanceCore Web Vitals via PageSpeed Insights (Mobile/Desktop)
Local SEO SignalsCategory specificity, NAP consistency, keyword positioning
Page SpeedFCP, LCP, TBT, CLS, Speed Index, TTI with AI interpretation

Requirements

  • WordPress 6.2+
  • PHP 8.0+ (required for modern string functions and named arguments)
  • Google Cloud Project with billing enabled (Places, Maps, and GBP APIs)
  • Anthropic API Key (Claude AI-powered analysis)

Installation

1

Upload & Activate

Upload the plugin folder to /wp-content/plugins/ or install via the WordPress plugin screen. Activate the plugin.

2

API Configuration

Go to F! Insights → Settings → API Config. Enter your Google Places and Anthropic API keys.

3

Deploy Shortcode

Add

to any page or post to begin capturing leads.

Technical Architecture

F! Insights is built for reliability and data sovereignty.

  • Database: 19 tables managed via dbDelta(). Idempotent runtime upgrades ensure schema consistency without data loss.
  • Uninstall: A "nuclear" uninstall option is provided, requiring explicit opt-in to wipe all tables, options, and logs.
  • Rate Limiting: Fixed-window per IP with proxy and CDN detection to prevent API abuse.
  • API Layer: All Claude calls route through FI_Claude::request() with automatic 429/529 retry handling and token tracking.
  • Security: Stripe API keys are encrypted at rest with AES-256-CBC. All AJAX handlers use nonce verification and capability checks. Scan access tokens (short-lived transients) prevent cross-user report access.

API Configuration (Settings)

All core settings live under F! Insights → Settings → API Config.

Google API

Requires a Google Cloud project with the following APIs enabled:

  • Places API (New): Core business data.
  • Geocoding API: Lat/lng conversion.
  • PageSpeed Insights API: Performance metrics.
  • Maps JavaScript API: Geogrid ranking map.
  • Google Business Profile API: Fulfillment features.
Critical: Key Restrictions F! Insights makes server-side calls. If your API key uses "Website" (HTTP referer) restrictions, calls will fail. Set restrictions to None or IP addresses.

Claude API

Configure separate models for different tasks:

  • Report Model: Claude Haiku 4.5 is recommended for scan-time analysis (fast, cost-effective, ~$0.01 per scan).
  • Admin Intelligence Model: Claude Sonnet 4.5 or Opus 4 is recommended for Market Intel, Writing Campaign, and Near Me Visibility (higher quality).

Premium License

Enter your Polar.sh license key to activate premium features. The key is validated against the Polar API on save and stored locally. Features unlock immediately on validation.

GBP OAuth

Required for all fulfillment features (GBP Posts, Optimizer, Monitoring). Set up a Google Cloud OAuth 2.0 client ID and secret, then enter the redirect URI shown in the settings panel. Each client connects their own Google account via the connection widget in Client Workspace → Overview.

Tip: The redirect URI must be added to your Google Cloud OAuth consent screen's authorized redirect URIs exactly as shown in the plugin settings, including the trailing parameters.

Stripe Billing

Connect your Stripe account to automate client billing. Enter your Stripe secret key (live or test). Map internal Client Plans to Stripe Price IDs. The plugin handles subscription lifecycle events (payment success, failure, cancellation) via webhooks.

Stripe is optional. If you manage billing outside the plugin (invoices, retainers, or any external arrangement), you can activate clients using the External billing path in Client Workspace without connecting Stripe at all. See Subscriptions & Billing.

Client Plans

Found under Settings → Stripe Billing → Client Plans. Define tiered service plans (e.g., Starter, Professional, Full Management) and map each to a Stripe Price ID. Plans gate feature access across the entire Client Workspace.

Each plan is a checklist of feature flags. When you enable a flag on a plan, all clients on that plan immediately gain access to the corresponding workspace tab or capability, with no page reload required. Disabling a flag removes it just as quickly.

Feature flagWhat it controls
gbp_connectClient can self-connect their Google Business Profile account
gbp_insightsLive impressions, calls, and direction requests on the client dashboard
gbp_auditOne-click profile audit surfacing gaps against Google quality signals
gbp_suggestionsAI-drafted description, category, and attribute recommendations
gbp_auto_updateAgency can push approved profile changes directly to Google
gbp_monitoringDaily check for unauthorised edits and profile changes with email alerts
gbp_qr_genPrintable QR codes for reviews, menu, booking, and custom links
gbp_reportingAutomated monthly PDF performance report delivered to the client
post_schedulerAgency drafts and publishes GBP posts (updates, offers, events)
post_cadenceAI-generated 4-week rolling post queue
service_pagesAI-generated SEO service pages published to WordPress
geo_toolsMap Pack ranking heatmap and Near Me Visibility action plan
geogridGeogrid ranking scan visible in admin and client report
ranking_dashboard6-panel performance dashboard with MoM score history
profile_optimizer6-item GBP completeness checklist with push-to-GBP actions
reviews_setupReview snippet, QR code, email template, and tracking dashboard
review_templatesAI-generated review response and outreach templates
qr_reviewsPrintable QR code for Google review collection
competitor_gapCompetitor gap report with impact scores
dashboardPrivate shareable client dashboard link with score history

Subscriptions & Billing

Client subscriptions are managed from Client Workspace → Overview → Subscription & Plan. The plugin supports two billing modes, giving you full flexibility regardless of how you invoice your clients.

Stripe Billing

When Stripe is connected and a Stripe Price ID is attached to the plan, activating a client via Stripe creates a subscription in your Stripe dashboard and charges the client automatically. Subscription state (active, past due, cancelled) is synced via webhooks: if a payment fails, feature access is automatically suspended until the issue is resolved.

External Billing

If you invoice clients directly (retainer, bank transfer, or any arrangement outside the plugin), use the External billing path. Feature access activates immediately, with no Stripe account required. Optionally set a renewal date and billing note (e.g., "Invoice #412, Net 30") for your own records.

When a renewal date is set, the plugin automatically expires the subscription when that date passes. A renewal action resets the date and re-activates access.

Non-monetized mode: If Stripe is not connected and no subscription record exists, the plugin grants access to all features unconditionally. This is the intended behavior for agency owners running the tool on their own GBP before client billing is set up.

White Label

Found under F! Insights → Settings → White Label. Configure your agency name, logo, brand colors, and remove the F! Insights credit line from all client-facing reports. The report should feel like your proprietary software, not a third-party tool.

Notifications

Found under F! Insights → Settings → Notifications. Configure email alerts for new leads, follow-up reminders, and GBP monitoring events. Uses WordPress's native mail system (wp_mail). Pair with an SMTP plugin for reliable delivery.

Market Leads Page (fi-market-intel)

The primary operations hub for your agency. All prospecting, fulfillment, content, and planning tools live here across eight tabs.

Lead Form Leads Bulk Scan Analytics Market Intel Viz Beta Client Workspace Beta Writing Campaign Beta Road Map

Lead Form

Configure the public-facing scanner shortcode that visitors use to scan their Google Business Profile. Settings include the form headline, CTA button text, redirect URL after report delivery, and campaign-level overrides. Changes here affect every instance of

unless a campaign slug overrides them.

Tip: Use campaigns for vertical-specific landing pages. A plumber landing page with
can have a different headline, CTA, and redirect than the default scanner.

Leads & Prospects

Manage all contacts in your pipeline. Leads are visitors who scanned their own business via the shortcode. Prospects are businesses imported via Bulk Scan that have not yet engaged with you. Both types can be promoted to Client status, which makes them available in Client Workspace.

Actions available per row: view report, generate AI pitch, send email, promote to client, update status, and add notes. The Generate Prospect List widget at the top uses AI to find new businesses by category and location.

Bulk Scan

Run automated scans against a CSV list of businesses in the background via WP-Cron. Upload a file with business names and addresses, set a scan job running, and let it process asynchronously. The dashboard shows real-time progress, pass/fail counts, and token usage.

Supports pause, resume, per-item retry, and automatic recovery for items that get stuck in a scanning state. Completed results appear in the Leads & Prospects tab as Prospects.

Analytics

An interpretive briefing of your lead pipeline. Insight panels unlock progressively as your scan volume grows (10, 25, 50, 100, 250 scan thresholds). Includes score distribution, category gap patterns, and pipeline health metrics. Use this to identify which vertical or location has the most underperforming profiles, informing where to focus outreach.

Market Intel

AI-powered competitive and market analysis generated from your accumulated scan data. Produces industry-specific reports on profile quality gaps, common weaknesses, and optimization opportunities across your pipeline. Reports are cached and regenerated as your scan volume grows.

Includes a Pitch Generator that crafts outreach emails using the specific gaps from a lead's scan, replacing generic cold messages with data-backed observations the prospect can verify for themselves.

Viz Beta

A public-facing data visualization layer that publishes aggregated scan data as embeddable D3.js charts. The core SEO strategy: third-party sites that embed your charts link back to your hub page with a contextual attribution link, turning your scan database into a passive backlink engine.

How it works Add
to a page (the plugin auto-creates one at /f-data/ on first Viz tab visit). Anyone can embed a chart on their own site using a one-line iframe — each embed links back to your hub page with your attribution text. Five chart types unlock as your scan volume grows.

Visualization modules

ModuleChart typeUnlocks atWhat it shows
Score PulseRadial / radar10 scansAverage GBP scores across all 8 audit categories in a radial area chart
Score MapVoronoi / Delaunay25 scansEach cell represents a business, colored by overall score — reveals geographic score clusters
Market ClustersForce-directed50 scansBusinesses grouped by vertical, node size = score; high-density verticals visible at a glance
Category BreakdownSunburst partition100 scansLayered breakdown by market → vertical → category; click to drill down
Co-Failure MapChord diagram250 scans8×8 matrix showing which audit categories tend to fail together across your scan population

REST endpoints

EndpointPurpose
/wp-json/fi-insights/v1/viz/dataReturns aggregated chart data as JSON. Supports ?module=, ?vertical=, ?city= filters. CORS open (*). Rate-limited per IP.
/wp-json/fi-insights/v1/viz/iframeReturns a complete self-contained HTML page for embedding in an <iframe>. Sets X-Robots-Tag: noindex and Content-Security-Policy: frame-ancestors per your allowed-origins setting.

Shortcodes

ShortcodeDescription
Hub mode: shows all unlocked modules with a vertical/city filter bar. Auto-placed on the /f-data/ page.
Single-module mode: renders one chart inline. Valid values: radial_pulse, voronoi_map, force_cluster, sunburst, chord.
Pre-filter the chart to a specific vertical and city.
1

Go to Market Leads → Viz

The plugin automatically creates a page at /f-data/ with the

shortcode on your first visit. The page URL appears as a green info row at the top of the Viz tab once active.

2

Set your attribution text

In Viz Settings, enter the text and fallback URL for the attribution link that appears in the footer of every embedded iframe. Default: "Data by F! Insights". This becomes the anchor text on the backlink pointing to your hub page.

3

Embed on partner sites

Each unlocked module card shows a ready-to-copy iframe URL. Share these with partner agencies, clients, or local business directories. When they embed the iframe, the attribution footer links back to your hub page.

4

Configure allowed embed origins (optional)

By default, Allowed embed origins is set to *, which lets any site embed your iframes — recommended for maximum backlink reach. Restrict to specific domains only if you need to limit who can embed your data.

Cache & rate limits: Chart data is cached server-side (default 6 hours). The Co-Failure Map always uses a 24-hour minimum TTL regardless of your cache setting, since the chord matrix is computationally expensive. The Viz API is rate-limited per IP (default 60 requests/hour) — adjust in Viz Settings if you expect high embed traffic.

Client Workspace Beta

The unified fulfillment hub. Select a client from the dropdown to open their workspace. All sub-tabs operate in that client's context. The selector bar shows GBP connection status, current plan, and subscription state at a glance.

Client Workspace sub-tabs
Overview
Reviews Setup
Map Pack
Near Me
GBP Posts
Service Pages
Optimizer
Rankings
Review Templates
Post Cadence
Sub-tabDescriptionRequires
OverviewPlan, billing status, GBP connection, feature access summary, and progress report generation.Any plan
Reviews SetupReview snippet for the website, printable QR code, branded email template, and review count tracking.reviews_setup
Map PackGeogrid ranking heatmap showing position 1-20 across a configurable grid around the business location.geo_tools + GBP
Near Me Visibility5-pillar action plan generated from the latest Map Pack scan. The plan becomes the Phase 1 deliverable.geo_tools + scan
GBP PostsDraft, schedule, and publish posts (updates, offers, events) directly to the client's Google Business Profile.post_scheduler + GBP
Service PagesAI-generated SEO pages for services and locations, published as WordPress draft posts for review.service_pages + GBP
Optimizer6-item completeness checklist with AI-generated suggestions and push-to-GBP write actions.profile_optimizer + GBP
Rankings6-panel dashboard showing score history, MoM/YoY deltas, and geogrid progression over time.ranking_dashboard + GBP
Review TemplatesAI-generated templates for responding to existing reviews and requesting new ones (SMS and email formats).review_templates
Post CadenceAI generates a 4-week rolling post queue. Drafts are reviewed then published to keep the profile consistently active.post_cadence + GBP
Tab locking: Sub-tabs that require a GBP connection show a lock icon when the client has not connected their account. Sub-tabs gated by plan features redirect to Overview with an upgrade prompt. Switching clients automatically falls back to Overview if the new client's plan or GBP state cannot support the current tab.

Writing Campaign Beta

A keyword-first content sprint engine. Enter a focus keyword and get a prioritized article queue split across funnel stages: 60% BoFu (bottom-of-funnel, high-intent), 20% MoFu, and 20% ToFu. Each article is generated by Claude with SEO-anchored titles and funnel-appropriate framing.

1

Create a Sprint

Click + New Sprint. Enter a campaign name, a focus keyword (e.g., "HVAC repair Tampa"), and optionally a unique differentiator: a fact only this business can claim (e.g., "200+ jobs since 2019, 4.9-star rating"). This claim is woven into every article's opening, making the content impossible to replicate.

2

Set Article Count

Default is 10 articles. The funnel-split chips update live as you adjust the count. Minimum 3, maximum 30.

3

Generate Articles

Open the sprint queue and click Generate on individual items, or use Generate All to run the full queue sequentially. Each article produces a title and a full draft.

4

Publish to WordPress

Click Save to WP on any completed item to push it as a WordPress draft post, tagged with the sprint keyword and linked back to the sprint record via post meta.

Road Map

A kanban board showing the current development state of F! Insights. Three columns: Shipped (last 10 released features), In Progress (currently in development), and Up Next (planned backlog). The Road Map tab is always the last tab in Market Leads.

Reviews Setup

Found inside Client Workspace → Reviews Setup. Provides a complete review collection kit per client: a review snippet (embeddable widget for the business website), a printable QR code, a branded email template for outreach, and a running review count tracker.

All assets are generated per client and can be re-generated at any time. The QR code links directly to the client's Google review submission URL.

Map Pack (Geogrid)

Found inside Client Workspace → Map Pack. Run a geogrid ranking scan for the client's business and target keyword. The result is a heatmap showing position 1-20 across a configurable grid of points radiating from the business location.

After a successful scan, a Build Visibility Plan button appears that takes you directly to the Near Me Visibility tab with the scan result pre-loaded as the input for the action plan.

Tip: Use a 5x5 or 7x7 grid for the first scan to get a broad picture. Tighten to 3x3 for a dense urban core where position accuracy matters more than coverage radius.

Near Me Visibility

Found inside Client Workspace → Near Me Visibility. Builds a 5-pillar action plan from the client's most recent Map Pack scan:

  1. GBP-Web Alignment: NAP consistency between GBP and website.
  2. Hyper-Local Content: Neighborhood and service-area content gaps.
  3. Attribute Gap Analysis: Missing category-specific GBP attributes.
  4. Authority Signals: Citation gaps, link opportunities, and trust factors.
  5. Review Velocity: Review frequency, recency, and response patterns.

Each pillar outputs a prioritized list of actions with difficulty and impact ratings. This plan is designed to be handed directly to the client as a Phase 1 deliverable.

GBP Profile Optimizer

Found inside Client Workspace → Optimizer. A 6-item completeness checklist that audits the client's GBP profile against Google quality signals. For each gap, Claude generates an optimized replacement (description, categories, attributes, services) that can be pushed directly to Google with one click, without the client needing to log in.

Service Pages

Found inside Client Workspace → Service Pages. Generates AI-written, SEO-optimized service area pages and publishes them as WordPress draft posts for review before going live. Page count is gated by plan: 10 pages on Professional, 30 pages on Full Management.

Each page is built around a target keyword, includes schema-ready content, and is linked to the client record via post meta for tracking.

Ranking Dashboard

Found inside Client Workspace → Rankings. A 6-panel performance overview showing score history with month-over-month and year-over-year deltas, geogrid ranking progression, category-level trend lines, and a comparison against the client's baseline scan. Designed to be shared with the client as a retention-focused monthly check-in.

Debug Logs

Found under F! Insights → Debug Logs. Structured logs for all API calls, scan runs, cron events, and errors. Log files rotate daily and are stored in /wp-content/fi-insights-logs/. Most production issues are either expired API keys or Google Cloud billing limits, both visible immediately in the error log.

Optimization Guide: Maximizing F! Insights

Follow these steps to turn the plugin into a high-performance agency engine.

1. Foundation & Configuration

A

Model Selection

Use Haiku 4.5 for the Report Model to keep scan costs at approximately $0.01 per scan. Reserve Sonnet 4.5 or Opus 4 for Admin Intelligence tasks: Market Intel, Writing Campaign, and Near Me Visibility plans.

B

White-Labeling

Configure the White Label tab immediately. Use your agency colors and remove the credit line to establish authority. The report should feel like your proprietary software.

2. Prospecting & Lead Gen

A

Campaign Overrides

Use campaigns. Instead of a generic scanner, use

on an HVAC-specific landing page with a customized CTA and redirect URL for that vertical.

B

AI Pitch Generation

Stop writing manual emails. Use the Pitch Generator in Market Intel. It uses the specific gaps from the scan (missing hours, low review velocity) to craft a message the prospect can verify for themselves.

3. Onboarding & Fulfillment

A

Near Me Visibility Plan

After a client signs, run a Map Pack scan and generate the Near Me Visibility plan. This 5-pillar strategy becomes your Phase 1 deliverable, proving immediate value before any profile changes are live.

B

Profile Optimizer

Use the Optimizer to push approved changes (description, categories, attributes) directly to Google. It's the fastest way to show "Work in Progress" to a new client without waiting for organic ranking movement.

4. Management & Retention

A

Post Cadence

Set up a Post Cadence (e.g., 2 posts/week). This keeps the client's profile active on autopilot, maintaining ranking gains between manual optimization sessions.

B

Writing Campaign

Run a content sprint for each client using their unique differentiator. A 10-article sprint targeting a high-intent keyword creates a content moat that reinforces the GBP profile signals over time.

C

Review Templates

Provide the client with Review Request Templates (SMS/Email). Consistent review velocity is the top signal for local ranking stability. This is the highest-leverage retention deliverable you can hand off.

5. Debug & Maintenance

A

Log Monitoring

Check Debug Logs weekly. Most broken features are expired API keys or Google Cloud billing limits, both immediately visible in the error log.

B

WP-Cron Health

Bulk Scans, Post Cadence, geogrid monitoring, and subscription expiry checks all rely on WP-Cron. If background jobs aren't processing, install a Cron monitoring plugin or configure a real server cron to fire wp-cron.php on a schedule.

Shortcodes

ShortcodeDescription
Main lead capture and scan form. Inherits default Lead Form settings.
Load a campaign-specific configuration override (custom headline, CTA, redirect URL).
Visualization hub: all unlocked chart modules with a vertical/city filter bar. Auto-placed on the /f-data/ page.
Render a single chart inline. Modules: radial_pulse, voronoi_map, force_cluster, sunburst, chord.

Roadmap & Changelog

v1.0.23 - Current
  • Client Plans feature descriptions enriched: every feature now has a plain-English explanation of what the client gets, visible in the Add/Edit Plan modal.
v1.0.21
  • Client Workspace Overview: billing CTAs surfaced directly in the Subscription & Plan card. No sub: two-box UI shows Stripe path and External path side by side. Existing sub: Billing row shows source badge, renewal date, billing note, and Renew action.
v1.0.20
  • Manual (External) billing mode: billing_source column decouples GBP feature access from Stripe. Agencies can activate clients on any plan without requiring a Stripe connection.
  • Auto-expiry cron for manual subscriptions with a set renewal date.
  • Renew action for manual subscriptions from the Subscriptions admin tab and Client Workspace.
v1.0.19
  • Security: Stripe API keys now stored with AES-256-CBC encryption (migrates legacy XOR-encoded keys transparently on next read).
  • Security: IDOR prevention on PageSpeed fetch (domain ownership check) and email report delivery (short-lived scan access tokens).
  • Security: FI_Client_Subscriptions::can() no longer returns true unconditionally when Stripe is unconfigured.
  • Security: Webhook signing implemented with HMAC-SHA256; signing secret auto-generated per install.
  • Security: JSON schema validation added for all LLM output in Near Me Visibility.
  • Security: Geogrid monitor capped at 5 runs per cron tick to prevent runaway API usage.
v1.0.18
  • Writing Campaign tab badge changed from "New" to "Beta" to match Client Workspace styling.
  • Road Map tab pinned as the last tab in Market Leads regardless of tab order changes.
  • Road Map kanban updated: last 10 shipped items, 3 in-progress, remainder in Up Next column.
  • "Forcing variable" label renamed to "Unique differentiator" throughout Writing Campaign.
  • Help banners with deep links added to all Market Leads sub-tabs that were missing them.
  • Docs snippet updated to v1.0.18.
v1.0.17
  • Near Me Visibility action plan generator (5-pillar strategy).
  • Map Pack geogrid integration in Client Workspace.
  • Claude Haiku 4.5 and Sonnet 4.5 support.
  • Fixed: Hallucination prevention in AI neighborhood analysis.

Planned

  • Billing source toggle on existing subscriptions (switch between Stripe and External from the Overview tab).
  • Review monitoring: real-time detection and alerts for new Google reviews.
  • Booking/menu URL sync: direct push to GBP Optimizer from the service setup screen.