Changelog

What's new

Public history of Gadspilot features, fixes and improvements. Auto-updated on each deploy.

October 2026

Fix manual-364

Google API key now encrypted

We've secured the Google API key used for Safe Browsing, PageSpeed, and CrUX data by encrypting it at rest. Existing keys are automatically migrated and encrypted during the next deployment with no action required on your part.
Fix manual-363

Memory tools now work on Google Search Console and Meta Ads

Fixed a critical issue where note-taking and changelog tools were unavailable for Google Search Console and Meta Ads accounts. These tools now properly resolve your GSC properties and Meta ad accounts, allowing you to save notes and track changes directly within those platforms via Claude.
New manual-362

MCP call limits now enforced by plan

Gadspilot now tracks and enforces the MCP call quotas promised in your plan: Free accounts get 15 calls per month per connected account, Plus gets 150, Pro gets 600, and Max gets 3,000. You'll see a usage gauge on your dashboard and receive email notifications at 80% and 100% of your quota. Admins have unlimited calls. Quotas reset monthly and expired plans automatically revert to Free.
Fix manual-361

Security updates for dependencies

We've updated critical dependencies to patch three security vulnerabilities, including a denial-of-service issue in markdown processing and a regular expression vulnerability in HTTP header parsing. These updates protect your data and ensure gadspilot runs safely.
Fix manual-360

Fixed email notification loop caused by special characters

Resolved a critical bug where notification emails were failing to send due to improperly escaped apostrophes in French labels. This was causing the support notification system to retry every 10 minutes, flooding inboxes. The fix ensures special characters in label names are properly handled.

September 2026

Fix manual-358

Security update: XSS vulnerability in debug page

Updated Laravel framework to patch a low-severity cross-site scripting vulnerability in the debug page (CVE-2026-102279). This vulnerability only affects development environments where debug mode is enabled and does not impact production deployments. The update ensures your codebase meets current security standards.
Fix manual-357

Tool errors now visible to Claude

When Google Ads, Google Search Console, or Meta Ads tools encounter an error, Claude can now see the actual error message instead of a generic placeholder. This helps Claude understand what went wrong and retry intelligently, rather than guessing or giving up.
New manual-356

Fixed video model pricing estimates

Suno video models (Seedance 2.0, 2.5, Mini, Fast, 1.5) now calculate accurate token-based pricing for budget reservations. Previously, these models fell back to a default rate that could reserve up to 5x the actual cost, quickly depleting user budgets. Pricing now uses ByteDance's standard formula based on video resolution and frame rate.
Fix manual-355

Better error messages for OpenRouter video uploads

Fixed an issue where users would see raw technical error messages when uploading videos to OpenRouter. Now you'll receive a clear, user-friendly message instead, while our team gets the detailed diagnostic information in logs. Failed uploads are not charged to your account.
Fix manual-354

Video generation now preserves original image aspect ratio

When generating videos from an image, gadspilot now respects the original image's aspect ratio instead of forcing a 16:9 landscape format. This means your vertical Meta Ads images (4:5 or 9:16) will stay in their intended format when converted to video, rather than being cropped and stretched.
New manual-352

Media Studio: Generate images and videos with Claude

Introducing Media Studio, a new way to generate images and videos directly within Claude conversations. Create images instantly with inline previews, or generate videos asynchronously and track their progress. Access is controlled by your admin with monthly budgets to manage costs. Admins can enable this feature per user and have unlimited access themselves.
New manual-349

AI uncertainty now alerts instead of deciding

When our AI is unsure whether an email is spam, it now sends you the full message with a warning banner and [A VERIFIER] prefix in the subject line, instead of silently filtering it. High-confidence threats still go straight to spam. This gives you the final say on borderline cases.
New manual-348

AI-powered fraud detection for missed threats

We've added a second layer of AI analysis to catch fraud, phishing, and impersonation attempts that traditional rules miss. Our new threat classifier reviews messages that didn't trigger existing safeguards, categorizing them as legitimate, scam, phishing, impersonation, malware lure, or cold outreach. Built-in protections ensure legitimate contacts from registered users are never misclassified as threats.
Improvement manual-344

Faster search terms lookup for large accounts

Fixed a performance issue where fetching search terms on large Google Ads accounts could timeout. The underlying query was scanning the entire account instead of filtering to the requested campaign or ad group, causing unnecessary delays. Search terms now load significantly faster, especially for accounts with thousands of keywords.
Fix manual-343

Fixed tool errors now properly logged

We fixed two issues affecting tool reliability. First, a date range validation bug was causing one Google Ads tool to fail on every call—we've corrected the formatting so it now works like all other tools. Second, we improved error logging so you can now see why tools fail instead of just seeing a generic error. This means better diagnostics when something goes wrong.
New manual-345

UTM tracking and first-touch attribution

Gadspilot now captures marketing source information (UTM parameters) on every interaction and attributes new signups to their original marketing channel using first-touch attribution. This means you can finally see which videos, posts, or campaigns drove your user growth. Attribution data syncs automatically at signup, whether users register via email or Google Sign-In.
Fix manual-346

Fixed OpenRouter model compatibility

Corrected model identifiers for OpenRouter integration that were causing API errors. The system was using Anthropic's native model format instead of OpenRouter's expected format, resulting in failed requests. This fix ensures Claude models work correctly when accessed through OpenRouter.

August 2026

Fix manual-342

Improved spam detection for contact form

We've strengthened our contact form protection to catch spam bots that use random gibberish text and disposable email addresses. The system now requires multiple spam signals to trigger a block, reducing the chance of accidentally filtering out legitimate messages.
Fix manual-341

Fix silent Composer audit failures

Composer dependency audits can now fail silently if the audit tool crashes or times out, incorrectly reporting zero vulnerabilities. We've added proper exit code checking to detect when audits fail and alert you to the problem, ensuring security issues aren't missed.
Fix manual-338

Cleaner notification emails with better formatting

Notification emails now have a cleaner, more professional layout. Subject lines no longer stack multiple prefixes, email previews no longer leak internal page titles, and the overall design is more compact with improved readability.
Fix manual-336

Fixed outdated MCP tool counters across the site

We corrected the tool availability counters displayed throughout gadspilot to match the actual number of MCP tools available. Google Ads now shows 91 tools (previously 76–81), Google Search Console shows 24 (previously 16), and the total reflects 112 tools. These numbers now accurately represent what you can access in your integrations.
Fix manual-335

Fixed reconnection prompts for long-term integrations

Resolved an issue where users would see a "Reconnect required" message every 30 days when using integrations with Claude.ai or ChatGPT. The problem occurred when multiple requests tried to refresh the authentication token simultaneously. We now allow a brief grace period for concurrent refresh attempts, preventing unnecessary disconnections.
Fix manual-334

Improved security for API access tokens

We've reduced the lifetime of API access tokens from 5 years to 30 days to strengthen security. Access tokens are transmitted with every request and cannot be revoked once issued, so a shorter expiration window significantly reduces risk if a token is ever compromised. Refresh tokens remain secure on your device and can be revoked server-side if needed.
New manual-333

3 new SEO tools for Google Search Console

We've added three powerful new tools to help you monitor and improve your SEO performance. Content Decay detects pages losing clicks over time, helping you identify which content needs refreshing. Bulk URL Inspect lets you check up to 100 individual URLs for indexing status, coverage, and crawl details without needing a sitemap. Ranking Diff tracks how your rankings change between periods. These tools are now available in your MCP dashboard.
New manual-332

4 new SEO tools for Google Search Console

We've added four powerful new MCP tools to help you audit and optimize your site's search performance. Index Coverage Report lets you bulk-audit indexation status across your sitemap, surfacing orphaned URLs and accidental noindex tags. Query Cannibalization detects when multiple pages compete for the same search queries. We've also extended OAuth token lifetime from 30 days to 5 years, reducing reconnection friction.
New manual-331

Request URL indexing from Google Search Console

You can now request Google to re-index or remove URLs directly from gadspilot using the Google Indexing API. This new tool lets you notify Google when you've updated or deleted pages, speeding up discovery of your changes. The tool validates that URLs belong to your property and provides clear guidance if you need to reconnect your Google Search Console account with the required permissions.
New manual-330

Check invoice eligibility before syncing

We now check whether each connected Google Ads account can retrieve invoices via API before attempting to sync them. This preflight check shows you upfront if an account uses automatic payments instead of monthly invoicing, preventing sync failures and letting you know exactly which accounts need manual invoice retrieval.
Fix manual-328

Fixed cache warming process pile-up

Resolved an issue where repeated deployments could spawn multiple cache-warming processes simultaneously, causing server load spikes. Added safeguards to prevent overlapping cache operations during deployment.
Fix manual-326

Fix translated content not displaying in French and Spanish

Fixed a bug where French and Spanish pages were incorrectly displaying English content even though translations were available. The localization middleware is now properly applied to all language routes, ensuring the correct language is used to fetch translated strings.
New manual-322

Public contact form now available in 7 languages

We've launched a public contact form at /contact that replaces simple mailto links. The form includes spam protection with rate limiting, honeypot validation, and heuristic filtering to keep your inbox clean. It's now available in English, French, Spanish, German, Italian, Portuguese, and Dutch.
Fix manual-320

Clearer error messages for billing setup issues

When your Google Ads account shows no monthly invoicing setup, you'll now see a more helpful error message that explains the two most common causes: your account may have been on card payment that month, or your invoices might be managed through a parent MCC (manager account). This helps you quickly understand why data appears missing and take the right next step.
New manual-319

Consolidated backfill invoices into single email

Backfill invoice emails are now consolidated into one message per request, regardless of period length. Previously, a 12-month backfill would generate 12 separate emails. Now all invoices for a backfill are grouped by account in a single email with subtotals, reducing inbox clutter and making it easier to review historical billing data.
Fix manual-318

Fixed Google Ads API deprecation blocking invoices

Google has deprecated the Google Ads API version we were using, causing invoice retrieval to fail for some accounts. We've upgraded to the latest stable API version to restore full functionality. You may also notice improved form controls when managing invoice exports.
New manual-317

Quick select all accounts in manual backfill

When manually backfilling data, you can now select or clear all connected accounts with a single click. This saves time when you want to reprocess data across multiple accounts at once.
Fix manual-316

Manual backfill now always accessible

The Manual backfill card now appears whenever you have at least one connected account, even if you haven't saved backfill settings yet. When initiating a backfill, you can specify custom recipient email addresses without affecting your recurring monthly backfill configuration, making it easier to send one-time reports to different team members.
New manual-315

Invoice delivery by date range

You can now retrieve and email invoices for a specific year or custom month range from the Invoices settings page. Select one or more accounts, choose your date range, and send invoices in PDF or CSV format using your existing email recipients and delivery preferences. This is useful for accessing historical invoices or resending statements for specific periods.
New manual-313

Claude.ai stays connected—no more forced re-auth

Fixed an issue where the gadspilot MCP connector in Claude.ai would ask you to reconnect every 30 days. We now issue refresh tokens alongside access tokens, so your connection stays active without interruption. You'll only need to re-authenticate if you manually disconnect.
New manual-311

System health monitoring and socket leak alerts

Added a new system health dashboard at /admin/system/health that monitors VPS performance in real time. The system tracks TCP socket states, CPU usage, memory, disk space, and load average, with automatic alerts when socket leaks are detected (over 500 CLOSE_WAIT connections). A background job checks health every 5 minutes to catch issues before they impact service stability.
New manual-310

Stats dashboard for chatbot conversations

Added a new Stats tab to the chatbot admin page showing key metrics across different time periods: today, last 7 days, last 30 days, and all-time. Track conversation volume, flagged injections, retrieval quality, and authenticated vs. anonymous usage. The tab includes helpful guidance when no conversations exist yet.
New manual-308

Support inbox email notifications

You now receive an email notification whenever a new support message arrives in your inbox. Notifications are sent automatically every few minutes, so you won't miss any customer requests.
Fix manual-307

Security fix: prevent token leakage in invoice downloads

Fixed a security vulnerability in the invoice download feature that could allow attackers to steal your Google OAuth credentials through malicious campaign names or other injected content. The feature now only connects to official Google servers and never sends your credentials to unauthorized hosts.

July 2026

New manual-306

Legal pages now available in 7 languages

Terms of Service, Privacy Policy, and Data Deletion pages are now fully translated into Italian, German, Dutch, and Brazilian Portuguese, joining existing English, French, and Spanish versions. All core legal documentation is now accessible to users worldwide in their preferred language.
New manual-305

Pricing page now available in 5 new languages

The pricing page is now fully translated into Spanish, Italian, German, Dutch, and Portuguese (Brazil). All pricing tiers, billing toggles, FAQ, and call-to-action buttons are localized. Prices remain consistent across all currencies for clarity.
New manual-304

Single-page legal tabs with deep linking

Legal pages now load all sections in one view with tabbed navigation powered by Alpine.js. Tabs stay visible while scrolling, switch instantly without page reloads, and are deep-linkable via URL hash—so you can share a direct link to Privacy or Data Deletion and others land on the right section. Also fixed capitalization of Gadspilot throughout the app.
New manual-303

Legal pages now have navigation tabs

We've added consistent tab navigation across all legal pages (Terms, Privacy, Data Deletion, Legal Notice, and AI Act) so you can easily jump between them. Italian translations are now complete, with German, Dutch, and Portuguese fallbacks where needed.
New manual-301

Fixed cross-locale routing and updated compliance pages

We fixed a routing issue where translated page slugs would return 404 errors when accessed with the wrong language prefix (for example, /en/tarifs instead of /en/pricing). The site now automatically redirects these mismatched URLs to the correct slug in your current language. We also updated our Terms of Service pages across all supported languages to reflect current EU AI Act requirements.
New manual-300

Pricing page now available in English, French, and Spanish

The pricing page is now fully localized for English, French, and Spanish visitors, with currency automatically adjusted to USD, EUR, or local rates. Feature descriptions have been updated to accurately reflect gadspilot's capabilities across Google Ads, Google Search Console, and Meta Ads integrations.
Fix manual-298

Removed beta badge from footer

We've removed the beta badge from the public footer now that gadspilot has launched its pricing tiers. The product is no longer in beta.
New manual-297

Launch offer: first month free on paid plans

We're offering a limited-time launch promotion: get your first month free on any paid plan (Plus, Pro, or Max). To claim your offer, click the updated call-to-action button on our pricing page, which will let you email us directly to activate your free trial. No credit card required.
New manual-296

Public pricing page now live

We've launched our public pricing page with four tiers: Free (15 MCP calls per month, no card required), Plus ($36/month), Pro ($74/month), and Max ($149/month with team seats). Annual billing offers 25% savings on paid plans. The page includes a monthly/annual toggle, detailed feature comparisons, and answers to common questions about our pricing.
Improvement manual-295

Invoice Gads now nested under Google Ads

Invoice Gads has been reorganized as a sub-item under the MCP Google Ads section in the sidebar, making the navigation structure clearer and more logical. The feature remains fully accessible and visible.
New manual-294

Invoices feature now visible in dashboard

The Invoices feature is now discoverable directly from your dashboard sidebar, making it easier to manage your Google Ads invoice delivery settings. We've added a new Invoices menu item and an overview card that shows your current configuration or lets you set it up in one click.
New manual-293

Monthly Google Ads invoice emails

You can now set up automatic monthly email delivery of your Google Ads invoices. Configure the feature in Settings > Invoices by choosing a send date, adding recipient email addresses, selecting which Google Ads accounts to include, and toggling options to attach PDFs, skip empty months, or include a CSV summary. Invoices are sent automatically each month on your chosen date.
New manual-292

Download Google Ads invoices as PDFs

You can now retrieve and download your Google Ads invoices directly from gadspilot. Three new tools let you list your billing accounts, fetch invoices by month and year, and download PDF copies for your records or to share with your team.
Fix manual-291

Fixed recurring production errors

We've resolved three recurring issues that were causing warnings in production. Google Search Console token refresh errors now log better details to help identify affected accounts. Google Ads brand exclusions now use the correct API fields. And changelog processing no longer crashes when commits contain non-UTF-8 characters. These fixes eliminate approximately 50 daily warnings.
Fix manual-289

Fixed crash on Insights page for some accounts

Resolved a critical bug that caused the Insights page to crash with a parser error for certain accounts. The issue occurred when displaying large datasets with nested translations. We've updated how data is rendered to prevent this error from happening again.
New manual-288

User location and language now visible in admin

The admin users page now displays each user's country and language preference. This information is automatically detected during signup based on their IP address and browser settings, helping you better understand your user base and support localization efforts.
Fix manual-287

Fixed day count display in monthly reports

Monthly reports now show the correct whole number of days instead of displaying decimal values like "30.999999999988 days". This fix ensures the date range header displays cleanly for any month.
New manual-286

Automated daily and monthly email reports

Receive automatic email reports every morning with a snapshot of your gadspilot activity. Each daily report includes new signups, MCP tool usage, website traffic, and how your metrics compare to the previous week's average. Reports are sent to your configured email address and can be customized via environment settings.

June 2026

New manual-285

Control Performance Max asset group status

Added a new MCP tool to enable or pause asset groups in Performance Max campaigns. Previously, asset groups were always created in a paused state with no way to activate them, causing campaigns to receive zero impressions without any error message. You can now manage asset group status directly after review.
Didn't find what you were looking for? Reach out to contact@gadspilot.com or check the product documentation.
Need help? Ask Léa 💬
gadspilot assistant
Léa
AI assistant · Gadspilot
Need a human? Contact support