Plugin Integrations and Conflicts
Detection and coordination with other plugins, so two systems do not optimize the same thing twice and plugin state that must stay dynamic is not cached or rewritten.
Everything here lives on the Integrations tab unless noted.
Automatic conflict protection
Automatic conflict protection (integrations.auto_protection) is on by default. It is the master switch for the coordination on this page:
- Perfmatters and EWWW Image Optimizer ownership
- Analytics and advertising-pixel script protection
- The Akismet and Jetpack safeguards
- Page-builder state styles kept by unused CSS
- Commerce stylesheets left out of unused-CSS pruning
Turning it off stops all of that at once. Commerce cache bypass rules are separate and keep working (see below).
Activating or deactivating any plugin recompiles the runtime configuration, so the cache drop-in always sees the current bypass rules.
Perfmatters ownership
Perfmatters overlaps GT Performance’s front-end optimization. Perfmatters ownership (integrations.perfmatters_owner) decides who acts, per feature, for Perfmatters’ unused-CSS removal, CSS minification, JavaScript defer, JavaScript delay, and JavaScript minification:
| Setting | Effect |
|---|---|
Automatic per feature (recommended) (automatic, default) | GT Performance owns each feature you have enabled in GT Performance, and Perfmatters’ matching feature is switched off. Features you have not enabled here stay with Perfmatters. |
GT Performance owns front-end optimization (gt_performance) | Perfmatters’ five features above are switched off. |
Perfmatters owns front-end optimization (perfmatters) | GT Performance skips every front-end optimization stage (CSS, JavaScript, media, image variants, fonts, embeds) and leaves Perfmatters alone. |
Perfmatters’ unused-CSS removal and CSS minification both follow GT Performance’s unused CSS setting; its JavaScript features follow the matching GT Performance switch. Page cache, Cloudflare, commerce protection, and Redis are never affected by this choice. It applies only while Perfmatters is active and automatic protection is on. This prevents the classic double-optimization failure: two plugins both minifying the same file, or both delaying the same script.
EWWW Image Optimizer
When EWWW is active, GT Performance yields the image features EWWW is already doing:
- WebP/AVIF variants. GT Performance stops generating and rewriting variants when EWWW’s WebP option or Easy IO is on.
- Lazy loading. GT Performance’s lazy loading turns off when EWWW lazy load, Easy IO lazy load, or Easy IO is on.
- Missing dimensions. GT Performance stops adding them when Easy IO is on, or when EWWW lazy load and its “add missing dimensions” option are both on.
EWWW’s ordinary upload compression is complementary and does not switch anything off. See Media, Fonts and Embeds.
Analytics and advertising pixels
When one of these plugins is active, its tracking scripts are excluded from JavaScript minification, defer, and delay, because a delayed analytics tag loses data rather than just loading later:
| Plugin | Scripts protected |
|---|---|
| Independent Analytics | /plugins/independent-analytics/, /plugins/independent-analytics-pro/ |
| Burst Statistics | /plugins/burst-statistics/ |
| Koko Analytics | /plugins/koko-analytics/ |
| Matomo Analytics | /plugins/matomo/, matomo.js, piwik.js |
| WP Statistics | /plugins/wp-statistics/ |
| Site Kit by Google | /plugins/google-site-kit/, google-analytics.com, googletagmanager.com |
| MonsterInsights | /plugins/googleanalytics/, /plugins/googleanalytics-premium/, google-analytics.com, googletagmanager.com |
| ExactMetrics | /plugins/google-analytics-dashboard-for-wp/, google-analytics.com, googletagmanager.com |
| PixelYourSite | /plugins/pixelyoursite/, /plugins/pixelyoursite-pro/, connect.facebook.net, googletagmanager.com |
These patterns are matched against scripts your site already loads. GT Performance never contacts those hosts. See External Services and JavaScript Optimization.
Akismet and Jetpack
Under Service safeguards, each switch acts only while its plugin is active:
- Protect Akismet assets (on by default) keeps Akismet’s comment-form privacy notice styles (
.akismet_comment_form_privacy_notice) through unused CSS and keeps/plugins/akismet/scripts out of JavaScript optimization. It does not classify comments; Akismet stays responsible for spam checks. - Jetpack compatibility (on by default) keeps Jetpack block, form, and contact-form styles (
.wp-block-jetpack,.jetpack,.grunion,.contact-form) through unused CSS, keeps Jetpack’s contact-form, subscriptions, search, and VideoPress scripts out of JavaScript optimization, and adds Jetpack’s visitor-state cookies (eucookielaw,jetpack_blog_subscribe_,jetpack_comments_subscribe_,jetpack_sso_,jp-visit-counter,jpp_math_pass,personalized-ads-consent) to the cache bypass list, at the origin and in the Cloudflare rule.
Core Forms
Core Forms polls set a cf_poll_voter cookie. A Set-Cookie on every page would make those pages uncacheable, so while the page cache is on, GT Performance strips that one cookie from anonymous GET responses for pages that contain no poll. Pages with a poll block or [cf_poll] shortcode keep it. The gt_performance_core_forms_poll_detected filter can override the detection. See Hooks Reference.
Page builders
When Elementor, Bricks, Divi, Beaver Builder, Oxygen, Breakdance, WPBakery, Brizy, Kadence Blocks, Spectra, GenerateBlocks, or SiteOrigin is active (or the Bricks, Divi, Extra, or Beaver Builder theme), unused CSS keeps the classes its scripts add after load: open menus, active tabs, sticky headers, popups, sliders, and animations. GT Page Blocks Builder and Thrive Architect stylesheets are left unpruned. Details: CSS Optimization.
Commerce safeguards
FluentCart, Easy Digital Downloads, and WooCommerce (all on by default) contribute cart, checkout, account, receipt, session-cookie, and query bypass rules only while the matching plugin is active. With automatic protection on, their stylesheets are also left out of unused-CSS pruning. See Commerce Safety.
Language and currency plugins
The page cache stores one copy per URL (and per value of a parameter listed under Cache each value separately). A plugin that picks a language from a cookie or the browser, or remembers each visitor’s currency, can therefore show two visitors different pages at the same URL, and a cached copy can reach someone who chose another language or currency. GT Performance detects these plugins and tells you what to set. It changes nothing automatically, because which cookie or parameter carries the choice depends on how each site is set up.
| Kind | Plugins detected |
|---|---|
| Language | WPML, Polylang (and Polylang Pro), TranslatePress, Weglot |
| Currency | WooCommerce Multilingual & Multicurrency, CURCY Multi Currency for WooCommerce, FOX Currency Switcher (WOOCS), Aelia Currency Switcher, Price Based on Country |
What the Detected plugin compatibility list says for each active one (status Review cache setup):
- Language plugins. Each language is cached separately when it has its own URL (a directory, subdomain, or domain). If the language comes from a
?lang=parameter, addlangunder Cache each value separately. If it is detected from a cookie or the browser, turn that redirect off or add its cookie to Cookie prefixes that bypass cache, or visitors can get a page in another language. - Currency plugins. Add the switcher’s currency cookie to Cookie prefixes that bypass cache so visitors who switch get fresh pages, or check that the plugin converts prices in the browser.
While any of them is active, the health report (Tools, Site Health, wp gt-performance health) shows a Language and currency plugins warning naming them, and step 5 of Setup flags them for review. The warning stays as long as the plugin is active, whatever you have set, so read it as a reminder rather than a failure. See Cache Exclusions and Page Cache.
Other cache and optimization plugins
The Detected plugin compatibility list shows every known plugin with a status:
| Status | Meaning |
|---|---|
| Protected | Active, and GT Performance applies the protection described next to it |
| Review ownership | Active full-page cache (FlyingPress, WP Rocket, LiteSpeed Cache, WP Super Cache, W3 Total Cache) or overlapping optimizer (Autoptimize, Jetpack Boost). Choose one owner. |
| Review cache setup | Active language or currency plugin. See Language and currency plugins |
| Perfmatters owns optimization | Perfmatters is active and set as the owner |
| Not active | The plugin is not active on this site |
Page builders and language or currency plugins appear in the list only while active. The page-cache plugins are also listed in step 2 of Setup.
GT Performance never overwrites a drop-in it did not install. If another plugin owns advanced-cache.php or object-cache.php, the Tools and Object Cache tabs report it as Owned by another plugin and installation refuses. Disable the other plugin first: running two page caches is not a configuration, it is a bug. When the other cache is your host’s rather than a plugin’s, use optimize-only mode instead.
Recommended defaults
Switching on Cloudflare, xCloud, the CDN, Redis, or automatic conflict protection in the admin fills in recommended values: empty fields get defaults such as this site’s domain, the default CDN file types, or local Redis connection values, and turning on automatic protection also ticks the Akismet and Jetpack safeguards. Existing credentials and custom endpoints are kept, and nothing applies until you save.
xCloud
The xCloud and Cloudflare Enterprise panel connects the xCloud API, reports host cache state and Enterprise edge traffic, and decides edge ownership. See xCloud.
AI assistants and the WordPress MCP Adapter
On WordPress 6.9 or later, GT Performance registers its abilities with the WordPress Abilities API. The official WordPress MCP Adapter plugin, if you install it, exposes them to MCP clients. GT Performance never installs or activates the adapter and implements no protocol of its own. Agent access is off by default and configured on the AI & MCP tab. wp gt-performance abilities shows readiness. See AI and MCP.
WordPress Studio and Playground
Sites running on SQLite through WordPress’s database translation layer (WordPress Studio and WordPress Playground) are supported. That layer emulates the SQL GT Performance uses except MySQL advisory locks, so schema upgrades and the queue runner use a lock row in the options table there instead of GET_LOCK.