Maximum Local Dashboard

See campaign performance in WordPress admin. Fire conversion events to Google Analytics 4. Connect a Google service account once — no license keys.

Plain-English campaign dashboard for WordPress — track conversions to GA4 and see campaign results without leaving admin.

Free WordPress plugin · GPLv2 or later · By Stafford Technologies · Not affiliated with Google

Maximum Local Dashboard is not affiliated with, endorsed by, or sponsored by Google. You need your own Google Cloud service account (for admin reports) and GA4 measurement ID (for front-end tracking).

What It Does

Maximum Local Dashboard gives administrators a Campaign Dashboard menu that pulls GA4 and Search Console reports, and a front-end tracker that sends conversion events (phone, email, outbound, downloads, CTAs, form submits) to GA4 when a measurement ID is configured.

It is not affiliated with Google. You need your own Google Cloud service account (for admin reports) and GA4 measurement ID (for front-end tracking).

Key Features

  1. Campaign Dashboard — admin menu with tabs: Overview, Campaigns, Conversions, Traffic, Search, Facebook (placeholder), Clarity (placeholder), Settings.
  2. GA4 Data API reports — sessions, users, conversions, campaigns, traffic sources/devices/pages, conversion events.
  3. Search Console — top queries for the configured site URL.
  4. Front-end conversion tracking — loads gtag.js when a measurement ID is set; events include phone_click, email_click, outbound_click, file_download, cta_click, form_submit.
  5. Configurable selectors — CTA selectors, form selectors, download extensions (safe generic defaults; no client-specific hosts).
  6. Production host gate — tracking on matching host only; staging uses ?mld_debug=1 (legacy ?ml_debug=1 still works).
  7. Encrypted service account at rest — OpenSSL AES-256-CBC (mld1: prefix), key derived from wp_salt( 'auth' ), plaintext fallback if OpenSSL unavailable; never returned to the browser after save.
  8. No license keys / no update server — free forever in this release.
  9. Upgrade-friendly options — keeps ml_settings and ml_service_account_json from private 1.0.0.
  10. Docs & Support links on the Plugins screen → this page.
  11. Translation-ready — text domain maximum-local-dashboard, /languages + .pot.

Facebook Ads and Microsoft Clarity tabs show “Not connected” — those integrations are not live. Do not treat them as connected features.

How It Works

Admin reports

  1. Administrator pastes a Google Cloud service account JSON under Campaign Dashboard → Settings.
  2. Sets GA4 property ID, optional Search Console site URL, production host, date range.
  3. Dashboard AJAX (mld_dashboard_data) exchanges a JWT for an access token at Google’s OAuth token endpoint, then calls the GA4 Data API / Search Console API. Responses are cached ~15 minutes in transients.

Front-end tracking

  1. When a GA4 measurement ID is saved, the plugin enqueues Google’s gtag.js and assets/js/tracking.js.
  2. On production host (or with debug query flag), clicks/submits matching configured selectors fire GA4 events.
  3. UTMs are stored in sessionStorage and a first-party cookie mld_utm (SameSite=Lax; Secure on HTTPS).

Settings (Campaign Dashboard → Settings)

SettingBehavior
Service account JSONPasted once; encrypted at rest; clearable
GA4 property IDNumeric property for Data API
GA4 measurement IDe.g. G-XXXXXXXX; enables gtag + events
Search Console site URLProperty URL for Search tab
Production hostHostname that enables live tracking
Default date range (days)1–90 (default 28)
CTA selectorsOne CSS selector per line
Form selectorsOne CSS selector per line
Download extensionse.g. pdf, docx, zip

Requirements

RequirementValue
WordPress6.0 or higher
Tested up to (WP)7.1
PHP7.4 or higher
OpenSSLRecommended (encryption + JWT signing)
Google CloudService account with GA4 Viewer (and Search Console access if used)
License keysNone

Installation

  1. Plugins → Add New → Upload Plugin → upload maximum-local-dashboard-1.1.0.zip → Install → Activate.
  2. Open Campaign Dashboard.
  3. Settings → paste service account JSON → Save.
  4. Enter GA4 property ID, measurement ID, optional Search Console URL, production hostname → Save settings.
  5. In Google Cloud / GA4 / Search Console, grant that service account access.
  6. Optionally tune CTA / form selectors and download extensions.
  7. On production, click a tracked CTA / submit a matching form and confirm events in GA4. On staging, use ?mld_debug=1.

FAQ

Is this free?
Yes. Free ($0). No license keys and no paid update server.

Do I need a Google service account?
Yes for admin reports. Create one in Google Cloud, download the JSON key, paste it under Settings, and grant access to your GA4 property (and Search Console if you use Search).

Is the service account key safe?
Stored in a WordPress option, encrypted at rest with OpenSSL when available. Never returned to the browser after save. Uninstall deletes options and plugin transients.

Will tracking run on staging?
Only if the hostname matches Production host, or with ?mld_debug=1 / legacy ?ml_debug=1. Empty production host → tracking off unless the debug flag is present.

Does this load Google’s gtag.js?
Yes, when a GA4 measurement ID is configured. See External services in the readme.

Where do I get support?
Email helpdesk@staffordtechnologies.net · https://staffordtechnologies.net/maximum-local-dashboard/

Upgrading from private maximum-local 1.0.0?
Option keys are kept. Replace the old plugin folder with this zip. Re-enter property/host settings — client-specific baked-in defaults were removed.

Version & Changelog

Current version: 1.1.0
Plugin name: Maximum Local Dashboard
Short title (admin menu): Campaign Dashboard
Slug: maximum-local-dashboard
Download: GitHub release zip (v1.1.0) (release notes: v1.1.0)
Repository: https://github.com/StaffordTechnologies/maximum-local-dashboard

1.1.0

  • Public GPLv2+ release prepared for WordPress.org as Maximum Local Dashboard (slug maximum-local-dashboard).
  • Removed all client-specific defaults (GA4 IDs, production host, Search Console URL, and support CTA selectors). Settings start empty; tracking selectors are configurable with safe generic defaults.
  • Encrypt service account JSON at rest (OpenSSL AES-256-CBC, key derived from wp_salt( 'auth' )) with graceful plaintext fallback; re-encrypt legacy plaintext on activate.
  • Front-end UTM cookie now sets the Secure flag on HTTPS; load gtag.js when a measurement ID is configured; form submits honor configured form selectors.
  • No license keys or remote update server. Stafford Technologies branding (author, URIs, Docs/Support plugin_row_meta, icons).
  • Document External services (GA Data API, Search Console API, OAuth token endpoint, front-end gtag). Tidied uninstall SQL for ml_* / mld_* transients. Kept option keys ml_settings / ml_service_account_json for upgrades.

1.0.0

  • Initial private Campaign Dashboard pilot (GA4 + Search Console reports, front-end conversion tracking).

Support

Stafford Technologies

On the WordPress Plugins screen, Docs and Support both link to this page.

Support is by email and this page only.

License

Licensed under GPL-2.0-or-later (GPLv2 or later). Free ($0).
License details: https://www.gnu.org/licenses/gpl-2.0.html

Maximum Local Dashboard is not affiliated with, endorsed by, or sponsored by Google. You need your own Google Cloud service account and GA4 measurement ID.

Version label: Current version: 1.1.0

Secondary: Email helpdesk@staffordtechnologies.net