Changelog
Active development — SEO AutoPilot is updated regularly with SEO, schema and dashboard improvements.
SEO AutoPilot
Latest
v0.170
28 July 2026
IMPROVED
- GBP location resolution is now cached permanently after the first successful Test connection — subsequent post publishes use the cached value with zero API calls
- Entering the full accounts/{accountId}/locations/{locationId} resource name in the Location ID field now bypasses the Account Management API entirely (no quota risk)
- Location resolution errors now include step-by-step instructions to find the full resource name directly from Business Profile settings
FIXED
- GBP auto-posting was calling the Account Management API (mybusinessaccountmanagement.googleapis.com) on every single post publish, exhausting the low per-minute quota and causing 100% error rate on subsequent calls
- Test connection button triggered a fresh account resolution call even when the location was already cached — now uses the cache when available
v0.169
10 July 2026
FIXED
- GBP 'Test connection' and 'Save' result messages no longer vanish after a moment — errors now stay on screen until your next action (they can be several sentences of Google's diagnostics), wrap onto their own line, and only success confirmations auto-fade
v0.168
10 July 2026
NEW
- GBP location setup now accepts just the numeric Location ID from your Business Profile — SEO AutoPilot looks up the owning Google account automatically and remembers the full resource name. No more hunting for the accounts/…/locations/… format (the cause of 'HTTP 404' push failures)
IMPROVED
- Test connection now reports the exact resolved location it will post to, and explains clearly when a Location ID can't be matched to any account the connected Google login manages
v0.167
10 July 2026
NEW
- GBP tab now shows exactly what happened with auto-posting: a green 'last update pushed' confirmation, a red banner with Google's actual error message when the last push failed, and a neutral note when no update has been attempted yet
IMPROVED
- Recent GBP activity badges are now plain English — e.g. 'Failed — Google denied access (GBP API approval required)' or 'Not sent — Google connection expired, reconnect' instead of a bare HTTP code
FIXED
- GBP pushes that were skipped before reaching Google (missing location ID, expired connection that could not be refreshed) previously failed silently with no trace. They are now recorded against the post and raise an admin notification linking to the GBP tab
v0.166
6 July 2026
IMPROVED
- The two content modes are now labelled 'B2C' and 'B2B' consistently across the setup wizard, Settings → Business, and the Local Content tab (previously 'Consumer' / 'B2B lead gen')
v0.165
6 July 2026
FIXED
- Post titles now pluralise the target industry correctly — mass nouns like 'Retail' read 'Retail Businesses' (not 'Retails'), and words ending in -y like 'Agency' read 'Agencies' (not 'Agencys'). Count nouns (Plumbers, Cafes, Boilermakers) are unchanged
v0.164
6 July 2026
IMPROVED
- AI content generation now uses Google's gemini-2.5-flash model. The previous gemini-1.5-flash is retired, which caused AI generation to fail silently and fall back to the built-in templates even when a valid API key was set
v0.163
6 July 2026
NEW
- Admin warning when Content AI is off — on RankLocal screens, a dismissible notice now flags when new posts are being generated from the built-in static templates (generic copy), with a one-click link to turn on Content AI for longer, service-specific articles
v0.162
6 July 2026
FIXED
- B2B posts no longer confuse the reader's own industry with their customers. Copy describing who the reader wants to attract now reads 'customers' / 'someone in {location}' instead of, for example, putting a plant nursery 'in front of plant nursery businesses'. Applies to every targeted industry
v0.161
6 July 2026
FIXED
- Industry names entered as plurals in the wizard are now normalised so posts read correctly — 'Web Designers' becomes 'Web Designer businesses' and 'a Web Designer business owner' instead of the double-plural 'Web Designers Businesses' / 'a Web Designers business owner'. Words like Logistics, Fitness and Accommodation are left untouched
v0.160
6 July 2026
IMPROVED
- 'Near me' posts now adapt when the target location is a whole state or territory — they read 'in {location}' and drop the 'near me' framing that only makes sense for a suburb or town (fixes awkward titles like 'Businesses Near Northern Territory')
v0.159
6 July 2026
FIXED
- Service and target-industry names now display in title case across B2B and consumer posts — titles, headings and sentence starts — even when typed in lower case (e.g. 'Graphic Design' and 'Pub businesses', not 'graphic design' / 'pub businesses')
v0.158
6 July 2026
IMPROVED
- Auto-post content now adapts to the service you actually sell — B2B lead-gen posts and FAQs no longer assume SEO, so agencies offering social media, web design, ads, or any service get copy that stays on topic
- Consumer posts and FAQs now match your business type and how you deliver — correct wording for salons, clinics, retail and mobile/at-home trades (e.g. plumbers) instead of hospitality-only 'guests / visit us' language
FIXED
- B2B posts no longer contradict their own title (e.g. a 'Social media' post that pitched Google rankings and keywords)
- Correct a / an grammar in B2B posts (e.g. 'an Accommodation business')
- Target industry names are now capitalised consistently in B2B titles and headings (e.g. 'Boilermaker businesses'), even when typed in lower case
- Fixed an undefined variable that dropped the audience name from the B2B listicle's closing section
v0.157
2 July 2026
IMPROVED
- Display rebrand: user-facing product name is now SEO AutoPilot (technical slug and APIs unchanged)
v0.156
2 July 2026
IMPROVED
- Daily heartbeat reports content_api_enabled to AgencySuite — Agency Hub can show Content API status per client site
v0.155
2 July 2026
IMPROVED
- Server-outage resilience — Content API failures use a 5-minute cooldown, then local AI generation before static templates
- Content API flag auto-syncs from license activate/check, server ping, and blocking heartbeat responses
- Update checker keeps showing the last known good version metadata when AgencySuite is temporarily unreachable
FIXED
- WordPress RankLocal → Settings submenu (ranklocal-settings) no longer shows a blank screen on cached hosts
- License tab showed Content API off after re-activation even when the server reports content_api_enabled: true
- Content API stayed off because RL_USE_CONTENT_API was always defined false in the plugin bootstrap, ignoring the license-synced option
v0.154
2 July 2026
FIXED
- Content API stayed off because RL_USE_CONTENT_API was always defined false in the plugin bootstrap, ignoring the license-synced rl_content_api_enabled option
v0.153
2 July 2026
IMPROVED
- Content API flag auto-syncs from license check and server ping when licensed but the local option was never set
FIXED
- License tab showed Content API off after re-activation even when agencysuite.com.au/api ping reports content_api_enabled: true
v0.152
2 July 2026
FIXED
- WordPress Settings submenu (ranklocal-settings) no longer shows a blank screen when redirect runs after admin output has started
v0.151
2 July 2026
NEW
- Content API — plugin auto-enables server-side generation from license/trial sync (no wp-config change required when RL_CONTENT_API_ENABLED is on the server)
IMPROVED
- License tab shows Content API active/off status; AgencySuite Ecosystem shows server Content API flag from ping
v0.150
2 July 2026
NEW
- Content API phase 2 — server-side AI generation using the customer's API key when content API is enabled for the site
IMPROVED
- Prompt engineering stays on AgencySuite server; plugin falls back to local templates if API is unavailable
v0.147
2 July 2026
IMPROVED
- Consumer mode — admin UI uses CTA / CTA Form terminology (sidebar, settings pills, enquiries pipeline, appearance, stale alerts) instead of Leads / lead capture
- Settings → Business — content targeting card with Consumer vs B2B picker and business type (same control as wizard and Local Content)
- Consumer CTA form — enquiry copy and fields without budget or industry; B2B keeps quote form with budget ranges and client industries
- Consumer FAQ and wizard copy updated for venue owners (content targeting, business type, CTA form)
v0.146
25 June 2026
IMPROVED
- Consumer wizard — CTA form labels (not lead capture); config summary shows featured image source and API keys
- Settings → Business — content targeting and business type picker
FIXED
- Consumer posts — CTA form no longer swallowed into last FAQ answer (raw CSS / broken form at post bottom)
v0.145
25 June 2026
IMPROVED
- Settings → Business — content targeting (Consumer vs B2B) and business type picker (same as wizard)
- Consumer settings hide Target Industries; services relabelled What you offer
v0.144
25 June 2026
FIXED
- Wizard step 10 — B2B industries no longer cleared when content_mode omitted from AJAX (inferred from payload)
- content-mode.php — AJAX hook registration guarded for CLI/tests (no add_action fatal)
v0.143
25 June 2026
NEW
- Wizard — business type picker (Restaurant, Café, Salon, Retail, Dentist, Other) drives images, copy, and FAQs
- Settings → Leads — form targeting card with consumer vs B2B CTA presets (auto or custom copy and fields)
IMPROVED
- Consumer lead form — enquiry copy, no budget/industry fields by default; B2B keeps quote + budget
- Featured images — search and AI prompts use service + business name + type (no hospitality/restaurant fallback)
- Consumer posts — guest-focused FAQ block and schema; category parent uses business name in consumer mode
- Content mode 2.5.142 — Post targeting banner, consumer/B2B templates, wizard defaults
FIXED
- Consumer static posts missing FAQ section and FAQPage schema
- Lead form showed B2B budget ranges on restaurant and venue sites
v0.142
25 June 2026
NEW
- Content mode — Consumer (restaurant, café, venue → diners and locals) vs B2B lead gen (agency → business clients); wizard step 3 + Content tab
IMPROVED
- Consumer mode — posts use guest-focused titles and copy (no "businesses" audience); default templates Near me, Listicle, Seasonal
- Local Content tab — Post targeting banner shows whether posts are set up for local customers or business clients (B2B)
- Featured images — stock and AI image search/prompts are mode-aware (hospitality vs B2B business photography)
- Wizard — consumer is default; industries hidden in consumer mode; services relabelled "What you offer"; price field hidden for venues
- Wizard — draft/approval ON by default; trial hides custom posting frequency (daily schedule enforced)
v0.141
2 July 2026
IMPROVED
- Wizard — industries optional for restaurants and direct-to-consumer sites; services + locations still required
- Wizard — draft/approval mode on by default; trial schedule shows daily-only (frequency picker hidden, matches paid lock)
- Content templates — plain-language description under each format; consumer sites default to Near me, Listicle, and Seasonal
FIXED
- Trial wizard allowed custom posting frequency despite schedule being a paid feature
- Schedule AJAX save now blocked during trial (consistent with Content tab gate)
v0.137
1 July 2026
IMPROVED
- RankLocal dismiss-notice AJAX handler, overview expiry banner, contextual FAQ help links, mobile admin CSS
v0.135
1 July 2026
IMPROVED
- WooCommerce same-tier renewals extend the existing licence key (+1 year from current expiry) instead of issuing a duplicate key
v0.133
1 July 2026
NEW
- Client dashboard card on Reports tab — prominent portal link with one-click copy for paid Single licences
- First-report success confirmation when reports are enabled or first email is sent
- Approval queue badge on Dashboard nav when drafts await review
IMPROVED
- Onboarding checklist deep-links to Reports settings with scroll highlight
- Dismissible Dashboard notice nudging paid users to enable client reports after 7 days
- Publishing health card visible on trial (read-only) with upgrade prompt for stall email alerts
- Approval notification emails link directly to the approval queue
v0.131
1 July 2026
IMPROVED
- Plugin auto-update uses POST for zip download (avoids host WAF blocking license keys in URLs)
- Update API allows download for any valid active licence even if domain activation record is stale
- Clearer error messages when one-click update fails (shows API reason instead of generic Forbidden)
FIXED
- Update failed: Forbidden on sites with valid licences after domain change or strict server firewall
v0.130
1 July 2026
NEW
- Approval mode email — branded notification to post/lead/admin recipients when a draft queues for review
IMPROVED
- Client dashboard marketing copy on website index, features, and Single site licence page
v0.129
1 July 2026
IMPROVED
- Licence tiers simplified to Trial, Single site, and Agency — 5-site and 10-site retired from marketing and new sales
- Legacy multi-site keys still validate; labels show as (legacy) in admin
v0.127
25 June 2026
IMPROVED
- Lead notification emails now use the same branded template as reports and client reply emails
FIXED
- Lead notification header titles were invisible in some email clients (white text on white when gradient backgrounds were stripped)
v0.125
30 June 2026
IMPROVED
- Trial Landing Page Editor — live preview only (section reorder list removed)
- Agency Landing Page Editor — section list kept for enable/configure; drag-to-reorder removed
- Trade Connect default form headline uses {service} and {region} tokens
FIXED
- Live pages showing broken token text (e.g. "in — available today", "Get a free quote for in") — service, industry, and location now resolved from post meta, landing-pages DB row, and page slug
- Live hero copy ignored saved template headlines when stale per-page AI meta was present — render now always uses section template tokens with resolved page context
v0.124
30 June 2026
IMPROVED
- Editor preview iframe always passes section order while dragging
- Organic LP pages auto-switch to RankLocal template on first front-end view if migration was missed
FIXED
- Hero image wiped on Save template — duplicate brand[hero_*] fields in Brand panel overwrote Hero section values
- Live landing pages showing theme template instead of RankLocal standalone renderer
- Section drag-reorder not reflected on live pages after save
v0.123
29 June 2026
NEW
- Organic landing pages use a standalone RankLocal template — live pages re-render from current settings (hero image, section order, form layout)
IMPROVED
- Tighter section spacing and grey page canvas so the quote form sits in the sticky rail like the editor preview
- Hero image fields in Hero section; image URL auto-enables image mode on save
- Editor preview iframe refreshes after Save template
FIXED
- Theme CSS breaking quote form labels on live pages (blue boxes)
- Section reorder now drives template render order via ordered section keys
- Hero image not appearing when media type was left on None
v0.122
29 June 2026
IMPROVED
- Hero section in Landing Page Editor: image/video fields with Media Library picker (no longer hidden in Brand only)
- Landing Page Builder previews use your saved template settings (same 3-column ATF as Editor)
FIXED
- Section drag-reorder now updates preview iframe — templates read section order from preview settings, not stale DB
- Hero headline forced white on dark background (theme override fix for live pages)
- Builder Preview modal matches Editor when wizard is complete
v0.121
29 June 2026
IMPROVED
- Agency Landing Page Editor: live iframe preview column updates as you drag section order
- Trial Landing Page Editor: section reorder now re-renders preview (order passed into template engine)
FIXED
- Demo template preview ignored section_order query — reordered sections never appeared in iframe
- Settings preview now applies section_order from URL for agency reorder visualization
v0.120
29 June 2026
IMPROVED
- Landing Page Editor Brand settings: logo source, hero image, and video URL fields with Media Library picker
- Builder template previews use saved settings path when wizard is complete (matches Editor preview)
FIXED
- Wizard step 6 → 7: step 7 was capped at 6 in rl_lp_render_wizard_screen so Recipients could not advance to Generate
- Section editor save no longer wipes logo and hero media from brand settings
- Hero h1 explicit white text on dark hero background (theme override contrast fix)
v0.119
25 June 2026
NEW
- Wizard step 4: add testimonial pool (reviews) during setup
- Step 2: company or custom logo, hero image or video URL
IMPROVED
- Renamed Landing Page Builder (setup/list) and Landing Page Editor (section customisation)
- ATF layout: copy + media in hero row, lead form in separate sticky rail
- Template previews use your saved brand, logo, and sections when available
- Unified admin button styling across LP screens
v0.118
25 June 2026
IMPROVED
- Landing page Builder: switch between Authority Pro and Trade Connect templates
- Wizard step 3: visual service checkboxes with $ pricing (no headline template field)
- Wizard step 4: URL preview only — meta title/description auto-generated per page
v0.117
25 June 2026
IMPROVED
- Authority Pro and Trade Connect: professional above-the-fold layout with sticky lead form in a dedicated column
- Landing page URLs use /lp_/ parent slug (replaces legacy /lp/ and avoids lp__trashed paths)
- Lead form CTA, typography, trust blocks, and section spacing refined for conversion-focused pages
FIXED
- Organic landing pages no longer inherit trashed parent slug in permalinks
v0.108
25 June 2026
NEW
- Agency Reports: landing page performance section (published LPs, top LP pages, LP lead totals)
- Agency Reports: leads split by source — local content vs landing pages vs other (email, PDF, portal)
IMPROVED
- Sidebar labels: Landing page Setup and Landing page builder (was Templates / section builder)
- Local content performance consolidated under Reports tab
v0.100
29 June 2026
FIXED
- Landing page preview and generated pages now render sections in saved drag-reorder order (Authority Pro and Trade Connect)
- Plugin zip build script updated for identity.php (mascot.php removed)
v0.099
29 June 2026
NEW
- Full-width live preview modal for Authority Pro and Trade Connect templates (Templates tab in preview mode)
- Section Editor drag-and-drop reorder for Agency users — order persists on save
IMPROVED
- Section Editor Preview button opens your saved template with real settings
- Template thumbnail cards include expand overlay and open-in-new-tab links
FIXED
- Section order now saves correctly on first save (merges defaults before persisting order field)
v0.092
27 June 2026
IMPROVED
- Local WordPress test environment (Laragon + WP-CLI) runs full wizard step 3 integration tests without Docker
- Wizard AJAX JSON response no longer clears unrelated output buffers
FIXED
- WordPress integration test harness (nonce handling, wp_die capture) for reliable pre-deploy verification
v0.091
27 June 2026
IMPROVED
- Pre-build PHP tests now run automatically (wizard save, AJAX output, base64 normalization)
- Step 3 sends wizard_payload_json instead of base64 to avoid POST encoding issues
FIXED
- Step 3 Market save invalid server response — missing handler guard, output buffer conflicts, and payload encoding
v0.090
27 June 2026
IMPROVED
- Wizard save logic moved to includes/wizard-save.php with pre-build PHPUnit-style tests
- Market step sends a single base64 payload to avoid WAF/ModSecurity blocking JSON fields
- DB migrations no longer run during AJAX (prevents corrupt JSON responses)
FIXED
- Step 3 Market save fatal error (undefined rl_wizard_save_market_lists) causing invalid server response
v0.089
27 June 2026
IMPROVED
- Wizard pages always load a fresh AJAX nonce and admin scripts
- Wizard save errors return proper JSON instead of raw -1 responses
FIXED
- Setup wizard failing on Business (step 2) and Market (step 3) save — nonce handling, POST serialization, and removed production-unsafe debug HTTP calls
v0.088
27 June 2026
IMPROVED
- Wizard step 3 save errors now show clearer messages (session expired, network, validation code)
FIXED
- Setup wizard Market step (step 3) failed to save when multiple industries or locations were added — POST arrays are now sent as JSON
v0.087
27 June 2026
IMPROVED
- Pollinations.ai tried first when no stock photo API keys are configured
- Wizard and settings warn when stock API keys are missing — similar images may repeat across same-service posts
FIXED
- Featured images no longer duplicate across posts in the same service type when using Pollinations or curated Pexels fallback
v0.086
27 June 2026
IMPROVED
- Launch RankLocal now redirects to the main dashboard after the first sample post is generated
v0.084
27 June 2026
FIXED
- Setup wizard Market step (step 3) save — industries/locations posted as native arrays instead of JSON blobs
- Trial expiry sync no longer runs during AJAX (was blocking wizard saves)
v0.083
27 June 2026
IMPROVED
- Re-run Setup Wizard button on dashboard (green, top of page)
FIXED
- Legacy 3-day trials automatically extended to 14 days from original registration on admin visit
- Wizard save blocked on expired trial — setup wizard AJAX now allowed during re-run
v0.082
26 June 2026
IMPROVED
- Free trial extended to 14 days with daily auto-publishing for the full trial period
- Reports tab unlocked during trial — monthly email, PDF download, and client portal link
FIXED
- Trial dashboard now shows days remaining only (removed confusing 3-post limit messaging)
v0.080
26 June 2026
IMPROVED
- Plugins page link to clear stale update cache after failed update
- Updater validates downloaded file is a zip before install (clear error instead of PCLZIP_ERR_BAD_FORMAT)
v0.079
26 June 2026
FIXED
- WordPress one-click update failed with PCLZIP_ERR_BAD_FORMAT — update package now downloads fresh at click-time via license-authenticated URL (not a stale 15-minute token cached in update_plugins)
v0.078
26 June 2026
NEW
- Settings General section — feature toggles, white-label, and wizard reset merged into dashboard Settings (legacy Settings submenu redirects)
- Wizard step 4 — monthly report recipient fields (enabled, email, cc, name)
- Landing Pages link in dashboard sidebar Tools group
IMPROVED
- Admin welcome notice shows live plugin version (RL_VERSION)
- Reports tab send-day copy reflects configured day of month, not hardcoded 1st
- Overview post sync uses friendly toast instead of JSON alert
- Wizard step 1 GSC rank tracking card shows Agency badge; step 5 GBP links to Settings Integrations
FIXED
- Removed dead Core Web Vitals feature toggle (never used)
- UTF-8 mojibake in ranklocal.php comments and arrows replaced with ASCII/HTML entities
v0.075
26 June 2026
NEW
- Branded email template for lead reply emails (Leads tab Reply to client)
v0.073
26 June 2026
IMPROVED
- Removed duplicate Run SEO backfill button from Recent Posts header (primary button remains in SEO backfill section)
v0.072
26 June 2026
IMPROVED
- Trial and Agency feature locks use compact banners instead of blur overlays — UI stays visible behind disabled controls
- Content tab Post Schedule shows frequency cards during demo with Daily selected and a one-post-per-day demo message
- SEO backfill section now gated during trial with the same banner pattern
- Agency locks (GBP, GSC, white-label, Integrations) unified to the same compact banner component
v0.070
26 June 2026
IMPROVED
- Article schema rebuild fills datePublished and image from post data
FIXED
- Schema warnings for missing datePublished and featured image URL on rebuild (#429)
- Fix & rebuild attaches a featured image when the post has none
v0.069
26 June 2026
IMPROVED
- FAQ repair replaces truncated AI FAQ sections (questions without answers) with full template Q&A
FIXED
- Partial FAQ blocks blocked full template restore on schema rebuild (#429 near-me posts)
- Article schema save verified after write with automatic fallback
v0.068
26 June 2026
IMPROVED
- Robust JSON-LD script parsing for schema validation (handles large or complex Article blocks)
FIXED
- Article schema missing on some posts when FAQ schema saved but Article JSON failed to parse (#429)
v0.067
26 June 2026
IMPROVED
- SEO backfill card moved above Recent Posts with a shortcut button in the table header
FIXED
- SEO backfill hidden behind trial upgrade gate — now available on all licenses including trial
v0.066
26 June 2026
IMPROVED
- Related Articles cross-links other RankLocal posts (same location or any sibling post) so internal link score is reachable
- Schema check re-enriches posts (links, excerpt, meta, alt text) and refreshes SEO score
FIXED
- SEO scores capped around 80 because posts had 0 internal links when only one post existed per service
v0.065
26 June 2026
IMPROVED
- Schema check and Fix & rebuild now wipe corrupt legacy markup before rebuilding
- Per-post schema check/repair available on trial (not gated as bulk backfill)
FIXED
- Article schema missing on older posts after partial FAQ schema repair (#429)
v0.064
26 June 2026
FIXED
- Mojibake punctuation in post content (broken UTF-8 sequences to em/en dash) in templates and AI output
- Fix & rebuild and schema check now normalize encoding on existing posts
v0.063
26 June 2026
IMPROVED
- Schema check auto-repairs missing Article blocks and corrupt JSON-LD, not just missing FAQPage
FIXED
- Article schema missing when post content contains invalid UTF-8 (JSON encode failure)
v0.062
26 June 2026
IMPROVED
- Schema check auto-syncs FAQPage markup when post content has FAQ but stored schema does not
FIXED
- FAQPage schema missing despite visible FAQ questions (UTF-8 JSON encoding + save verification)
v0.061
26 June 2026
IMPROVED
- Schema check messages now suggest Fix & rebuild when legacy markup or missing FAQ is detected
FIXED
- Fix & rebuild restores template FAQ block when Content Refresh removed the FAQ section
- Legacy corrupt _rl_schema_markup (unparseable JSON-LD) is replaced on rebuild
- New posts and refreshes auto-merge template FAQ when AI output omits it
v0.060
26 June 2026
NEW
- Content tab — per-post schema check with validation panel (Article + FAQ parity with visible content)
- SEO backfill card — optional rebuild schema from post content checkbox (full-width layout)
IMPROVED
- FAQPage schema is built from visible FAQ questions in post content, not hardcoded templates
- Article schema includes datePublished, dateModified, url, description, image, and publisher logo
v0.057
26 June 2026
FIXED
- Plugin activation unexpected output from UTF-8 BOM reintroduced in ranklocal.php during release build
v0.056
26 June 2026
FIXED
- Plugin activation unexpected output warning from UTF-8 BOM in ranklocal.php and autopost.php
v0.055
26 June 2026
FIXED
- Plugin activation fatal error from invalid FAQ accordion match expression syntax
v0.054
26 June 2026
FIXED
- FAQ accordion recognizes Common Questions and FAQ headings, not only Frequently Asked Questions
- FAQ answers may include multiple paragraphs, lists, and blocks (not only a single p tag)
- FAQ accordion boxed style match expression syntax on PHP 8+
v0.053
26 June 2026
IMPROVED
- Report footer — "RankLocal Report generated by {agency name}" on email, PDF, and client portal (uses white-label agency name)
v0.052
26 June 2026
IMPROVED
- PDF report parity with email — pipeline, suburbs, win rate, content cycle, recent enquiries
- PDF and email — leads by source post, SEO score summary, GSC site traffic, rank snapshot
- Client portal — leads by post, GSC traffic, SEO scores, rank snapshot sections
v0.051
26 June 2026
NEW
- Integrations — Test connection buttons for Google Search Console and Google Business Profile
IMPROVED
- Performance tab — site-wide GSC clicks/impressions summary (28 days)
- Performance tab — top pages table from Search Console
- Rank tracking — up to 30 keyword combos per check (was 15)
- GBP local posts use Business Profile API v4 endpoint
FIXED
- GBP OAuth failures now show a clear error message instead of a silent failed redirect
- GBP auto-post blocked for non-Agency licenses at the hook level
v0.050
25 June 2026
IMPROVED
- Google Search Console is now Agency-only, matching Google Business Profile
v0.049
19 June 2026
IMPROVED
- Animated mascot in dashboard sidebar (compact, between logo and Main nav)
- Performance tab GSC card links to Settings → Integrations when connected or not
v0.048
13 June 2026
FIXED
- Dashboard next-post banner "Content schedule →" now opens the Content tab
v0.047
7 June 2026
IMPROVED
- GBP Integrations setup documents Google's private API access request workflow
- Content tab GBP card notes Agency license + Google API approval requirement
v0.046
1 June 2026
IMPROVED
- GSC/GBP OAuth use shorter stable redirect URIs
- Copy redirect URI button on Integrations page
FIXED
- Google OAuth redirect_uri_mismatch when connecting Search Console
v0.045
26 May 2026
NEW
- Trial demo overlays on Post Schedule, SEO Backfill, Reports, and Performance tabs
- Locked sections stay visible with icon, plan requirement, and Upgrade CTA
IMPROVED
- Approval Mode remains fully available during trial
- Trial AJAX blocked for locked features (schedule save, backfill, reports, rank checks)
v0.044
19 May 2026
IMPROVED
- Trial expiry: full mascot lockout with Purchase Now on all dashboard tabs
- Expired trial blocks all RankLocal admin AJAX except license activation
FIXED
- Autopost cron no longer reschedules after trial ends when visiting wp-admin
- Scheduled posting reliably stopped when trial or license expires
v0.043
13 May 2026
NEW
- Dashboard Overview: next scheduled post banner with date, template type, and service/suburb preview
- Post Schedule: 7× per week frequency option (every day, Mon–Sun)
IMPROVED
- Wizard step 4 frequency cards aligned with Content tab (1× / 3× / 5× / 7×)
- Legacy daily schedule frequency automatically maps to 7×
v0.042
7 May 2026
IMPROVED
- Reports tab: Download report PDF button and how-clients-receive-reports guide
- PDF report uses same current-month data as the dashboard preview
v0.041
1 May 2026
FIXED
- Appearance tab mojibake characters fixed (dashes, arrows, checkmarks) after Phase B encoding corruption
v0.040
25 April 2026
FIXED
- Appearance tab fatal error — invalid PHP in section template files from Phase B refactor
v0.039
19 April 2026
FIXED
- Removed UTF-8 BOM from appearance module files that caused "3 characters of unexpected output" on plugin activation
v0.038
13 April 2026
NEW
- Lead notification email field in Settings → Leads
- Appearance tab sub-navigation with Lead Form, PDF Reports, Email, FAQ Accordion, and Client Portal sections
IMPROVED
- Google Search Console and Google Business Profile setup moved to Settings → Integrations with OAuth redirect URI instructions
- Performance tab shows compact GSC link when not connected; Content tab shows compact GBP status card
- OAuth callbacks for GSC and GBP redirect to Settings → Integrations
v0.037
7 April 2026
IMPROVED
- Settings sub-nav pills restyled in orange for clearer section navigation
v0.036
1 April 2026
NEW
- Settings sub-navigation with Business, Content & AI, Leads, Integrations, and Advanced sections
IMPROVED
- Quick/Advanced view toggle available on all settings sections
v0.035
26 March 2026
IMPROVED
- Post Schedule now full-width with color-coded frequency cards (Recommended in green)
- SEO Backfill moved to a compact sidebar-style box below the scheduler
v0.034
20 March 2026
IMPROVED
- Recent Posts table redesigned with Service, Suburb, Template, SEO score bar, link count, and status badges
v0.033
14 March 2026
IMPROVED
- Content tab Post Schedule redesigned with frequency cards, publish day checkboxes, and dedicated Approval Mode section
FIXED
- Autopost scheduling now respects selected publish days (Mon“Sun) at the configured time
v0.032
7 March 2026
NEW
- Settings panel to map each service to a WordPress page for automatic internal linking
- Related Articles footer (min 2 same-category posts) replaces Related reading
- Service price estimates injected into posts when pricing context fits
- Internal link count shown in Post history and Recent posts
IMPROVED
- SEO Backfill now re-applies service links, price estimates, Related Articles, schema, and SEO scores on every run
v0.031
1 March 2026
IMPROVED
- Lead form service dropdown now shows service names only (no price ranges)
v0.030
23 February 2026
IMPROVED
- Unread lead notifications now appear on the main Dashboard instead of Settings
FIXED
- Lead notification badge moved from Settings to Dashboard; notifications no longer auto-mark read when opening Settings
v0.029
17 February 2026
IMPROVED
- Setup wizard restored to original 5-step layout with animated mascot sidebar
FIXED
- Wizard reset showed broken 12-step single-column UI instead of 5-step welcome flow
- Wizard navigation uses ranklocal-wiz-N URLs again instead of invalid tab=wizard links
v0.028
11 February 2026
FIXED
- Blank RankLocal admin page when mascot.php missing — defensive fallbacks on wizard and trial lockout screens
v0.027
5 February 2026
FIXED
- Trial expiry lockout no longer fatals — restored rl_wizard_mascot() and animation CSS from backup
v0.025
24 January 2026
IMPROVED
- Quote form anti-spam timestamp now starts on first field interaction, not page load
FIXED
- Quote form returned 'Something went wrong' for legitimate submissions — honeypot autofill and 3-second page-load timer blocked real users
- Quote form now reports database save failures instead of silently failing
v0.024
18 January 2026
IMPROVED
- Client report links now use admin-ajax (reliable on all hosts); /client-report/{token}/ still supported
FIXED
- Client report page blank — portal now dispatches on init, template_redirect, and wp_ajax_nopriv
- Report stats sync throttled to prevent AJAX timeout; errors show HTTP status in preview panel
v0.023
12 January 2026
IMPROVED
- Client report URLs use /client-report/{token}/ pretty permalinks (bypasses homepage cache)
- Report preview stats load via AJAX with on-screen diagnostics (version, tracked counts, debug tail)
FIXED
- Reports tab could white-screen when heavy sync ran during page render
- Open in new tab preview clears output buffers and sets correct content-type
v0.022
6 January 2026
IMPROVED
- Report preview renders in an iframe (fixes blank inline preview) plus Open in new tab fallback
- [rl_client_report] shortcode auto-creates a client link if none exists yet
FIXED
- Client report link no longer reloads the page after generation
- Preview and portal AJAX now surface errors instead of failing silently
v0.021
30 December 2025
NEW
- Reports tab — live report preview with current dashboard stats and full email preview
- Reports tab — client report link generator (90-day bookmarkable URL, no login required)
- [rl_client_report] shortcode — embed a button or link to the live client report on any page
IMPROVED
- Performance reports now include win rate, content cycle, lead pipeline, recent enquiries, and posts by suburb
- Client portal page uses the same stats as the dashboard overview
- Post publish notifications — explicit Don't send / Send toggle (Don't send is the default)
FIXED
- Blank or sparse email reports — stats now sync from WordPress post dates and backfill tracked posts before generating
v0.020
24 December 2025
IMPROVED
- Report send confirmation shows plugin version and inline debug tail for verification
- Post notification email loads from saved autopost settings as well as wizard data
FIXED
- Monthly report counts — sync published_at from WordPress post_date before counting; fixed duplicate time suffix on date range queries
v0.019
18 December 2025
IMPROVED
- Send test report and Send report now show the period and counts in the admin confirmation message
- Performance report email footer includes plugin version for deployment verification
FIXED
- New autopost entries now set published_at explicitly so monthly report counts match publish date
v0.018
12 December 2025
IMPROVED
- Monthly report Send now and Send test report use the current calendar month (month-to-date); scheduled cron still reports the previous complete month
- Report settings Save now persists the report name field
FIXED
- Manual and test performance reports showed zero posts/enquiries while totals were correct — date range always queried last month instead of the current month
v0.017
6 December 2025
IMPROVED
- Leads tab — Source field shows the blog post title the enquiry came from (linked when available)
- Leads tab — Status uses colour-coded radio pills in the table and enquiry modal; changing status still updates the pipeline
FIXED
- Quote form now captures the source post when submitted from a blog page (post ID and URL fallback)
v0.016
30 November 2025
NEW
- Leads tab — enquiry pipeline panel (same as Dashboard) at the top of the Leads tab
- Reply to client form in enquiry View modal — editable subject, message, and Send button
IMPROVED
- Sending a quote email automatically sets lead status to Quoted and updates pipeline counts on the Leads tab
v0.015
24 November 2025
IMPROVED
- Dashboard restored to vertical sidebar layout with inline schedule editor, approval queue, post history bulk/export, and Appearance tab
- Schedule save now normalises publish time, reschedules cron, and reloads so Next post matches Publish time in site timezone
FIXED
- Edit schedule showed wrong Next post time (e.g. 7:10 AM saved but 9:10 PM displayed) — time parsing, frequency mapping, and display timezone corrected
- Clear all notifications on Settings tab did not persist after page refresh
- Quote form spam — honeypot field and minimum submit delay block bot submissions
v0.013
18 November 2025
NEW
- Google Ads section — bulk select, delete selected, and delete all ads variants (organic pages kept)
v0.012
12 November 2025
NEW
- Landing Pages dashboard — bulk select and delete multiple pages at once
v0.010
31 October 2025
FIXED
- Critical error on activation — restored missing rl_ensure_autopost_cron() and rl_render_wizard_screen() functions
v0.009
25 October 2025
FIXED
- Release zip now uses WordPress-standard nested layout (ranklocal/ranklocal.php) instead of flat root files
v0.008
18 October 2025
FIXED
- Plugin activation fatal error — release zip was missing portal.php, updater.php, and rest-api.php
- Build script now validates required files before creating ranklocal.zip
v0.007
12 October 2025
IMPROVED
- Google Ads export section always visible on Landing Pages dashboard (with empty-state guidance)
- Step 6 completion links directly to Google Ads export section
FIXED
- Plugin activation fatal error — missing portal.php, updater.php, and rest-api.php in release zip
- Landing page generation reported 0 pages when pages already existed — batch now regenerates all scoped combos
- Progress bar offset bug when resuming batch generation
v0.006
6 October 2025
NEW
- Landing page hero uses the same image provider chain as blog posts (Pexels, Pollinations, etc.) based on page title
- Google Ads dashboard card — copy ads URL or download/copy Responsive Search Ad layout per page
IMPROVED
- Hero above-the-fold now includes AI marketing hook paragraph (45“60 words) plus clearer headline contrast
- Hero background image with readable overlay on Authority Pro and Trade Connect templates
v0.005
30 September 2025
NEW
- Landing Pages Step 6 — choose which services and regions to generate, with live page count
IMPROVED
- Two scope modes: per-service region picks, or combined service × category × region selection
- Optional target page count with match indicator before generation
v0.003
18 September 2025
FIXED
- Landing Pages menu no longer shows a blank screen — wizard redirects moved to admin_init before headers are sent
v0.002
12 September 2025
IMPROVED
- Landing Pages wizard uses dedicated admin pages (ranklocal-lp-wiz-N) for reliable step navigation on cached hosts
FIXED
- Landing Pages Step 1 — template selection no longer stacks multiple Selected badges when switching templates
- Landing Pages Step 2 — Next: Brand no longer shows a blank screen after Step 1 (query-param redirect issue)
v0.009
25 August 2025
IMPROVED
- Post history table headers use 12px font with nowrap so column labels align on one line
v0.008
19 August 2025
IMPROVED
- Related reading block is inserted before the quote form so it always renders on the live post
FIXED
- FAQ accordion filter stripped everything after the FAQ section including Related reading and the quote form on the frontend
v0.007
12 August 2025
IMPROVED
- SEO backfill always refreshes service page links and rebuilds the Related reading footer using current mappings
v0.006
6 August 2025
NEW
- Settings panel to map each service to a WordPress page for automatic internal linking in posts
- Internal link count shown next to SEO score in Recent posts and Content history
v0.004
25 July 2025
IMPROVED
- Autopost cron auto-repairs on admin load when the scheduled time does not match the configured publish time
FIXED
- Next post showed wrong time (e.g. 12:00am) when a legacy recurring cron event was still registered
- Saving schedule now reschedules cron and reloads the page to show the corrected next post time
v0.003
19 July 2025
IMPROVED
- Autopost scheduling uses WordPress site timezone and respects the configured publish time (e.g. 8:30am)
FIXED
- Scheduled posts did not fire at the configured time — wizard completion scheduled 5 minutes after setup instead of the chosen publish time
- Autopost cron used PHP server timezone (mktime) instead of the WordPress site timezone
v0.002
13 July 2025
IMPROVED
- Setup wizard uses dedicated admin pages (ranklocal-wiz-1 through ranklocal-wiz-5) so step navigation survives LiteSpeed and page-cache hosts that strip query parameters
- Wizard step detection falls back through GET, REQUEST, QUERY_STRING, and REQUEST_URI when wstep is stripped by the server
- Legacy ?wstep=N URLs automatically redirect to the matching wizard admin page
- Monthly report schedule supports a configurable send day (1st“28th of each month)
FIXED
- Critical: setup wizard Continue button restarted at step 1 on cached hosts — step was always read as 1 even when the URL showed wstep=3
- Duplicate RankLocal installs on the same site no longer cause a fatal redeclare error — admin notice shown instead
- Demo post featured image failed to attach when media.php was not loaded — sideload now loads dependencies and uses temp download helper
- FAQ accordion filter now applies on standard published posts, not only landing pages
- Wizard screens send no-cache headers to prevent LiteSpeed from serving stale step HTML
v0.001
7 July 2025
NEW
- Trial expiry overlay — after 3-day trial ends, dashboard locks with an animated mascot overlay and Buy Now buttons; License tab remains accessible to enter a key
- Settings tab now includes a Lead Capture Form section with shortcode reference, Copy button, page builder compatibility notes, and a direct link to Appearance for form styling
- Setup wizard step 1 expanded — feature grid now covers all 8 standard features including SEO scores, rank tracking, suburb weighting, and approval mode; agency plan teaser banner added below trial notice
IMPROVED
- White-label: report email header badge now shows your agency name instead of hardcoded 'RankLocal'
- Replaced 'unlimited auto-publishing' wording in trial wizard with 'full auto-publishing'
FIXED
- 'Unlimited' wording now only appears under Agency tier across portal upgrade cards and pricing table
- Portal button text colour now applies correctly — theme CSS specificity issue resolved with !important on colour variables
- Activation error: unexpected output (UTF-8 BOM) in dashboard render file removed
v0.001
1 July 2025
NEW
- Auto-updater: WordPress now shows native update notifications when a new version is available — update with one click from the Plugins screen
v0.001
25 June 2025
NEW
- Inline schedule editor on Auto-post tab — change frequency and publish time without re-running the wizard
- Trial now allows 3 posts: 1 published immediately on wizard launch, 2 more via autopost schedule
IMPROVED
- Daily, 3x, and 5x/week frequencies now schedule at correct intervals
- Dashboard trial banner updated to show correct 3-post limit
- Wizard market and content steps now save correctly
FIXED
- Critical: wizard market and content steps were silently discarding all saved data
- Daily autopost frequency was falling through to 3x/week default
- Trial banner showed 6-post limit instead of 3
v0.001
19 June 2025
NEW
- Performance tab — keyword rank history charts powered by Google Search Console data, 28-day trend view
- Notification preferences — choose which events trigger email alerts (new lead, post published, report sent)
- Approval mode — enable draft mode on the Content tab so AI-generated posts queue for review before publishing
- Suburb weighting — priority slider per location so high-value areas receive more frequent posts
IMPROVED
- Dashboard overview redesigned with icon stat cards and two-column recent activity layout
- Content tab now shows SEO score inline in the published posts table
- Lead capture form now records the source post URL for every enquiry
FIXED
- GSC OAuth token refresh was failing silently on some server configurations — added explicit error logging
- Appearance settings were not saving on sites with object caching enabled
- Report email was sending to admin email instead of configured report recipient when field was left blank
v0.001
13 June 2025
NEW
- White-label settings — customise report email header with your agency name, brand colours, and reply-to address
- Custom report name — set a unique report title per installation so clients see their business name in the email subject
- CC field for monthly reports — add an account manager address to receive a copy of every client report
- Manual report trigger — send a report any time from the Reports tab without waiting for the monthly schedule
IMPROVED
- Report email HTML redesigned — cleaner layout, responsive for mobile, stat cards with colour coding
- License tab now shows plan name, expiry date, domain count, and a one-click recheck button
- Wizard welcome screen updated with feature overview grid
FIXED
- Monthly report cron was not registering correctly on multisite installations
- Report email was missing lead count when no enquiries had been received that month
- White-label name was not applied to the report email subject line
v0.001
7 June 2025
NEW
- Landing page generator — generate a unique SEO-optimised landing page for every service + suburb + industry combination with one click
- Google Ads CSV export — export all landing pages as a ready-to-upload Google Ads campaign file with AI-written headlines and descriptions
- Landing page SEO scoring — every generated page receives an SEO score (0“100) visible in the Landing Pages dashboard
- Ad variant pages — each landing page automatically gets a paid traffic variant optimised for Google Ads Quality Score
- Google Business Profile integration — connect via OAuth and automatically post a GBP update each time a new article publishes
IMPROVED
- AI post generation refactored to support 5 post templates: Standard Article, Near Me Search, Problem/Solution, Listicle, Seasonal Guide
- Location targeting now supports up to 50 suburbs per installation
- Service list now accepts optional price range per service, displayed on the lead capture form
FIXED
- AI provider API key was being stored in plaintext — now stored with base64 encoding and validated on save
- Post generation occasionally created duplicate suburb/service/industry combinations — tracking table now prevents repeats
- Landing page permalink conflicts with existing pages resolved via unique slug generation
v0.001
31 May 2025
NEW
- Landing Pages admin screen — basic list view of all generated landing pages with publish/draft status and edit links
- SEO score calculation — each published post is scored against title, headings, keyword density, internal links, and word count
- SEO score badge shown on post list in the Content tab
- Google Search Console integration — connect your GSC account via OAuth2 to pull weekly keyword rank data automatically
IMPROVED
- Post content generation prompt refined to include structured data (LocalBusiness schema) in every article
- Autopost now rotates evenly across all service/suburb/industry combinations before repeating any
- Leads tab filter bar now includes date range picker
FIXED
- Quote form was not submitting on some themes due to jQuery conflict — rewritten to use vanilla JS fetch
- Monthly report cron was duplicating on plugin reactivation
- SEO score was returning 0 for posts with non-Latin characters in the title
v0.001
25 May 2025
NEW
- Appearance tab — customise lead capture form colours, button text, border style, and headline from the dashboard without touching code
- Form preview — live preview of the styled quote form updates as you change appearance settings
- Shortcode advanced options — [rl_quote_form headline="..."] attribute for custom form headline per placement
IMPROVED
- Lead capture form now shows service dropdown populated from your services list automatically
- Budget/price range selector added to the quote form using your configured service price ranges
- Enquiries table now supports bulk status updates (select multiple leads and mark all as Quoted/Won/Lost)
FIXED
- Appearance settings were resetting to defaults after plugin update
- Form submit button was inheriting theme button styles on some WordPress themes — scoped CSS added
- Leads with special characters in the name field were breaking the enquiries table row
v0.001
19 May 2025
NEW
- Monthly report email — automated HTML report sent on the 1st of each month showing posts published, leads received, and top-performing posts
- Reports tab — view report history, resend previous reports, and configure recipient email address and report name
- Enquiry status workflow — mark leads as New, Quoted, Won, or Lost with colour-coded status badges
IMPROVED
- Dashboard overview now shows month-to-date lead count and posts published alongside all-time totals
- Email notification for new enquiries now includes the visitor's message and the source post title
- Wizard step 3 now validates that at least one industry, one service, and one location are entered before allowing progress
FIXED
- Enquiry notification email was sending to WordPress admin email instead of the configured contact email
- Reports tab was blank on first activation — now shows a prompt to configure and a preview of the report format
- Lead count on the dashboard stat card was including spam/test submissions from localhost
v0.001
13 May 2025
NEW
- Lead capture form shortcode [rl_quote_form] — embed the enquiry form on any page or post
- Leads / Enquiries tab — view all form submissions with name, phone, service, suburb, and date
- Email notification — instant alert to the business owner when a new enquiry arrives
- Lead detail panel — click any lead row to view full contact details and visitor message
IMPROVED
- Auto-generated posts now include a lead capture form section automatically at the bottom of each article
- Wizard step 2 now pre-fills website URL and contact email from WordPress site settings
FIXED
- Auto-post was not respecting the configured publish time on sites in non-UTC timezones
- Post generation failed silently when the AI provider API key was missing — wizard now validates the key before saving
v0.001
7 May 2025
NEW
- Support for OpenAI GPT-4o Mini and Anthropic Claude Haiku as AI providers in addition to Google Gemini
- AI provider selection in wizard step 4 with free/paid badges and API key input per provider
- Post template system — Standard Article template with suburb, service, and industry variable substitution
- Location weighting — assign a priority level (low/medium/high) to each suburb so busier areas get covered more frequently
- Trial activation — 3-day trial auto-registers on plugin activation with no license key required
IMPROVED
- Setup wizard redesigned with 5-step progress indicator, animated mascot, and step-by-step guidance
- Content tab now shows post status (Published, Pending, Failed) and allows manual trigger of the next post
- Auto-post schedule expanded to support Daily, 3x/week, and 5x/week frequencies
FIXED
- Auto-post cron was not registering on some shared hosting environments — fallback to WP-Cron alternative added
- Wizard data was not persisting between steps when browser back button was used
v0.001
1 May 2025
NEW
- Initial release of RankLocal — automated local SEO content for WordPress
- 5-step setup wizard: Welcome, Business details, Market (industries, services, suburbs), Content preferences, Launch
- AI-powered post generation using Google Gemini — unique articles for every suburb + service + industry combination
- Auto-publish scheduler — set a weekly frequency and RankLocal publishes targeted posts automatically
- Dashboard overview — stat cards for total posts, leads, and average rank position
- License tab — enter and verify your license key, view plan details and activation count
Agency Hub
Latest
v0.008
2 July 2026
IMPROVED
- Team access lists all WordPress users — administrators show as «full Hub access» with an explanation instead of a misleading empty state
FIXED
- Team access showed «no users to assign» when every registered user was a WordPress Administrator (both users already had full access)
v0.007
2 July 2026
IMPROVED
- Sidebar product name defaults to Agency Hub — white-label agency name is optional and no longer copied from the WordPress site title
FIXED
- Sidebar showed «Agency Suite» on agencysuite.com.au because get_bloginfo('name') was used as the default white-label agency name
- One-time migration clears auto-filled blog-title names (Agency Suite, AgencySuite, etc.) on upgrade
v0.006
2 July 2026
IMPROVED
- Team access card always visible on License tab for Hub managers — no longer hidden when license activation block is showing
- Empty state when only administrators exist — explains to add WordPress users under Users → Add New
FIXED
- Team access card missing after update when Agency license was inactive or only admin user existed on the site
- get_users() query for team roster — load full user objects so role dropdowns work reliably
v0.005
2 July 2026
IMPROVED
- Alerts and webhooks save via admin_init — avoids blank admin-post.php screen after Save settings
- Team access roles — caps re-sync on upgrade for existing Hub viewer/operator/manager roles
FIXED
- Alert settings save showing empty WordPress admin bar instead of redirecting back to Alerts tab
- Alerts tab restricted to Hub managers; operators/viewers see a clear permission message
- Team access save uses same-page POST with reliable redirect
v0.004
2 July 2026
NEW
- WordPress auto-updater — one-click Agency Hub updates from Plugins (hub_update_check + hub_plugin_update_download API)
- Team access — assign Hub viewer, operator, or manager roles to WordPress users without full administrator access
- Publish-stall alerts — email and webhook notifications when client auto-publishing stalls (heartbeat signal)
- Client Sites — RankLocal version pill per site, Content API status, Update needed and Publish stalled filters
IMPROVED
- Webhooks — rlah_dispatch_webhooks wired to alert events (new_lead, stale_draft, site_offline, publish_stall, license_expiring) with HMAC signing
- Network KPIs — Content API on, clients needing RankLocal v2.5.155+, and publish-stalled counts on Client Sites
- Activity tab — fixed site_license_key and offline/stale status detection
FIXED
- White-label and webhook save forms on License/Alerts tabs — admin_post handlers now persist settings
- Alert cron fatal when firing webhooks — missing rlah_dispatch_webhooks() implementation
- Removed debug telemetry POST from admin.js
- Approve buttons respect rlah.canApprove for operator role users
v0.003
1 July 2026
FIXED
- Client Sites filter pills stuck — Needs attention, Has drafts, and Low health now mutually exclusive; list refreshes correctly when switching filters
v0.002
1 July 2026
NEW
- Read-only REST API — GET /wp-json/ranklocal-hub/v1/sites, /stats, /leads (application password or manage_options + active license)
- Network posts/week benchmarking — network average KPI and per-site rate pills on Client Sites
IMPROVED
- Send report from Hub passes require_gsc to client REST /report/send
- Client report ↗ link on site rows (read-only portal via RankLocal REST /portal)
- load_plugin_textdomain() for rl-agency-hub text domain
v0.001
1 July 2026
FIXED
- Agency Hub admin access denied after upgrade — rlah_view capabilities now registered on init, not only plugin activation
v0.001
1 July 2026
NEW
- White-label Hub — agency name, logo URL, primary colour, and footer text on License tab
- Staff roles — rlah_view, rlah_approve, rlah_manage capabilities gate Hub tabs and approve actions
- Activity tab — chronological feed of publishes, leads, offline sites, and stale drafts
- Hub webhooks — POST JSON on new_lead, post_published, and site_offline with optional HMAC secret
- Client portal link (Portal ↗) on each site row via RankLocal REST /portal
- Leads status dropdown in Hub — updates client site via REST POST /enquiries/{id}/status
- Content variants network KPI and per-site counts from heartbeat
- Publish-health rollup — stalled publishing warning pill on site rows
IMPROVED
- License tab API ping before client roster
- Dismissible min-version banner — lists client domains needing RankLocal 2.5.116+ / 2.5.76+ / 2.5.136+
- Loading skeleton on Refresh data
- SEO note on Landing Pages tab — GSC is per-site in RankLocal Integrations, no network tab
FIXED
- Compliance Pro LP template enabled (removed coming_soon stub)
v0.001
25 June 2026
NEW
- Landing Pages network tab — LP pages, published count, LP leads, ads variants, and GBP status per client
- Leads tab source filter — local content vs landing pages vs other
- Send report action on each client site row (RankLocal REST /report/send)
- Client connectivity card — REST reachability across all registered sites
IMPROVED
- Client links aligned with RankLocal v2.5.116 — LP Setup, Reports, Google Business Profile paths
- Heartbeat extended with lp_published, lp_leads_total, lp_ads_variants, gbp_connected (requires RankLocal + API update)
FIXED
- Removed GSC Performance tab — search analytics deferred to dedicated SEO plugins
v0.002
25 June 2026
v0.001
25 June 2026
FIXED
- Client Sites HTTP 500 when agency_sites API queried GSC columns before DB migration — API now migrates safely and falls back to zero GSC fields
- License API deploy: upload both api/index.php and api/db-helpers.php; verify with ?action=ping
v0.001
26 June 2026
NEW
- Performance tab — cross-site GSC rollup (network clicks, impressions, weighted CTR, avg position) from client heartbeats
- Agency notes per client site — internal textarea on expanded site rows, stored in Hub WP options
IMPROVED
- Sortable GSC performance table by domain, clicks, impressions, CTR, position, and data age
v0.001
25 June 2026
NEW
- Client health score (0–100) on each site row — heartbeat, queue, license, REST reachability
- Low health filter pill and sites sorted lowest-first by default
IMPROVED
- Health badge tooltip lists contributing factors (offline, stale draft, expiring license, etc.)
v0.001
26 June 2026
NEW
- Email alerts tab — offline sites, stale drafts, new leads, expiring licenses
- Twice-daily cron checks with cooldowns to avoid duplicate emails
- Send test email and Run check now buttons on Alerts tab
v0.003
26 June 2026
FIXED
- Leads tab HTTP 404 when Hub and client share the same WordPress site — uses internal REST dispatch instead of server loopback
- Normalize client site URLs (https + domain match) before REST calls
- Failed lead fetches no longer cached; 401/403 license errors surfaced correctly
v0.002
26 June 2026
IMPROVED
- Leads fetch errors show HTTP status code for easier diagnosis
- Distinguishes “RankLocal active but too old for Leads” vs plugin missing entirely
- Failed enquiry fetches cached only 1 minute (was 10) so client updates show sooner
v0.001
26 June 2026
IMPROVED
- Leads tab error copy now correctly asks for RankLocal v2.5.76+ (not v2.5.0+)
- When roster shows leads but REST is unavailable, empty state explains the sync vs detail mismatch
FIXED
- Misleading v2.5.0+ message on Leads tab when client site lacks the /enquiries endpoint
v0.001
26 June 2026
NEW
- Leads tab — unified enquiry table across all client sites with site, contact, service, suburb, and status
IMPROVED
- Refresh data link on Inbox and Leads tabs (not just Client Sites)
- Nav queue badge respects ?refresh=1 cache bust
v0.001
26 June 2026
NEW
- Approval Inbox tab — all pending drafts across client sites in one queue
- Action required panel — offline sites and pending drafts surfaced at top of Client Sites
- Compact expandable site list with search and filters (active, needs attention, has drafts)
IMPROVED
- Approve/reject updates in place with toast — no full page reload
- Post data cached 10 minutes per client site; cache busts after approve/reject
- Friendlier error messages when client REST is unreachable or outdated
- Styles moved to admin.css (removed inline CSS block)
v0.003
25 June 2026
FIXED
- Remove client site on License tab failed with Unknown action — now falls back to the deactivate API action supported on the live license server
v0.002
9 May 2026
NEW
- License tab — Registered client sites list with Remove button for inactive, stale, offline, or expired sites
FIXED
- Agency can free domain slots when RankLocal is deactivated or uninstalled on a client site without contacting support
v0.001
23 March 2026
FIXED
- Production build cleanup — removed internal debug logging
v0.001
3 February 2026
NEW
- Each client site shows separate Draft Posts and Published Posts cards with titles, service, location, and dates
- Publish and Reject buttons on draft posts — release content without logging into the client site
IMPROVED
- Post lists fetched directly from each client site REST API instead of the AgencySuite server proxy
- Clear error message when a client site needs a RankLocal update to support remote post management
FIXED
- Draft posts waiting for approval did not appear in the hub
- REST calls now use each site's own license key when it differs from the agency hub key
- AgencySuite API now returns site_license_key per activation for correct remote authentication
v0.004
18 December 2025
IMPROVED
- License deactivation now notifies the AgencySuite server to free the domain slot
- Client Sites tab shows clearer error messages when the API returns a non-JSON or HTTP error response
FIXED
- License activation called check instead of activate — server rejected new domains with 'Domain not registered to this license'
- Client Sites sent the license key via GET query string; API only read POST body — roster failed with 'License key required' or empty response
- Client Sites dashboard now loads correctly after AgencySuite server agency_sites endpoint fix (landing_pages column migration)
v0.001
1 November 2025
NEW
- Initial release — standalone plugin for agency's own WordPress site
- Client Sites dashboard — view all connected client sites with health stats: posts published, leads, landing pages, plugin version, license expiry
- Approval Queue — approve or reject AI-generated draft posts on client sites directly from your agency dashboard without logging into each site
- Landing page count per client site shown in dashboard stats grid
- Direct link to each client site's Landing Pages screen in WordPress admin
- License activation — enter your Agency license key to connect the hub to AgencySuite
Always improving
Pro and Agency licences include automatic plugin updates from the licence server.
Get started