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.
- 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:
| Category | What it measures |
|---|---|
| Online Presence | Profile completeness, visibility signals, verified status |
| Customer Reviews | Rating, volume, recency, response patterns |
| Photos & Media | Photo count, recency, type coverage |
| Business Info | Hours, phone, address, website, attributes, amenities |
| Competitive Position | Comparison against 3 nearby active competitors |
| Website Performance | Core Web Vitals via PageSpeed Insights (Mobile/Desktop) |
| Local SEO Signals | Category specificity, NAP consistency, keyword positioning |
| Page Speed | FCP, 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
Upload & Activate
Upload the plugin folder to /wp-content/plugins/ or install via the WordPress plugin screen. Activate the plugin.
API Configuration
Go to F! Insights → Settings → API Config. Enter your Google Places and Anthropic API keys.
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.
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.
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.
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 flag | What it controls |
|---|---|
gbp_connect | Client can self-connect their Google Business Profile account |
gbp_insights | Live impressions, calls, and direction requests on the client dashboard |
gbp_audit | One-click profile audit surfacing gaps against Google quality signals |
gbp_suggestions | AI-drafted description, category, and attribute recommendations |
gbp_auto_update | Agency can push approved profile changes directly to Google |
gbp_monitoring | Daily check for unauthorised edits and profile changes with email alerts |
gbp_qr_gen | Printable QR codes for reviews, menu, booking, and custom links |
gbp_reporting | Automated monthly PDF performance report delivered to the client |
post_scheduler | Agency drafts and publishes GBP posts (updates, offers, events) |
post_cadence | AI-generated 4-week rolling post queue |
service_pages | AI-generated SEO service pages published to WordPress |
geo_tools | Map Pack ranking heatmap and Near Me Visibility action plan |
geogrid | Geogrid ranking scan visible in admin and client report |
ranking_dashboard | 6-panel performance dashboard with MoM score history |
profile_optimizer | 6-item GBP completeness checklist with push-to-GBP actions |
reviews_setup | Review snippet, QR code, email template, and tracking dashboard |
review_templates | AI-generated review response and outreach templates |
qr_reviews | Printable QR code for Google review collection |
competitor_gap | Competitor gap report with impact scores |
dashboard | Private 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.
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
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.
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.
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
| Module | Chart type | Unlocks at | What it shows |
|---|---|---|---|
| Score Pulse | Radial / radar | 10 scans | Average GBP scores across all 8 audit categories in a radial area chart |
| Score Map | Voronoi / Delaunay | 25 scans | Each cell represents a business, colored by overall score — reveals geographic score clusters |
| Market Clusters | Force-directed | 50 scans | Businesses grouped by vertical, node size = score; high-density verticals visible at a glance |
| Category Breakdown | Sunburst partition | 100 scans | Layered breakdown by market → vertical → category; click to drill down |
| Co-Failure Map | Chord diagram | 250 scans | 8×8 matrix showing which audit categories tend to fail together across your scan population |
REST endpoints
| Endpoint | Purpose |
|---|---|
/wp-json/fi-insights/v1/viz/data | Returns aggregated chart data as JSON. Supports ?module=, ?vertical=, ?city= filters. CORS open (*). Rate-limited per IP. |
/wp-json/fi-insights/v1/viz/iframe | Returns 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
| Shortcode | Description |
|---|---|
| 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. |
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.
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.
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.
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.
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.
| Sub-tab | Description | Requires |
|---|---|---|
| Overview | Plan, billing status, GBP connection, feature access summary, and progress report generation. | Any plan |
| Reviews Setup | Review snippet for the website, printable QR code, branded email template, and review count tracking. | reviews_setup |
| Map Pack | Geogrid ranking heatmap showing position 1-20 across a configurable grid around the business location. | geo_tools + GBP |
| Near Me Visibility | 5-pillar action plan generated from the latest Map Pack scan. The plan becomes the Phase 1 deliverable. | geo_tools + scan |
| GBP Posts | Draft, schedule, and publish posts (updates, offers, events) directly to the client's Google Business Profile. | post_scheduler + GBP |
| Service Pages | AI-generated SEO pages for services and locations, published as WordPress draft posts for review. | service_pages + GBP |
| Optimizer | 6-item completeness checklist with AI-generated suggestions and push-to-GBP write actions. | profile_optimizer + GBP |
| Rankings | 6-panel dashboard showing score history, MoM/YoY deltas, and geogrid progression over time. | ranking_dashboard + GBP |
| Review Templates | AI-generated templates for responding to existing reviews and requesting new ones (SMS and email formats). | review_templates |
| Post Cadence | AI generates a 4-week rolling post queue. Drafts are reviewed then published to keep the profile consistently active. | post_cadence + GBP |
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.
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.
Set Article Count
Default is 10 articles. The funnel-split chips update live as you adjust the count. Minimum 3, maximum 30.
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.
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.
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:
- GBP-Web Alignment: NAP consistency between GBP and website.
- Hyper-Local Content: Neighborhood and service-area content gaps.
- Attribute Gap Analysis: Missing category-specific GBP attributes.
- Authority Signals: Citation gaps, link opportunities, and trust factors.
- 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
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.
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
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.
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
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.
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
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.
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.
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
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.
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
| Shortcode | Description |
|---|---|
| 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
- 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.
- 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.
- Manual (External) billing mode:
billing_sourcecolumn 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.
- 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.
- 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.
- 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.