# Plugin Conflicts

Plugin conflicts are one of the most common causes of issues with WCPOS. When other WordPress plugins interfere with WooCommerce or WCPOS functionality, you may experience crashes, performance problems, or unexpected behaviour.

## Signs of Plugin Conflicts[​](#signs-of-plugin-conflicts "Direct link to Signs of Plugin Conflicts")

You may have a plugin conflict if you experience:

* **Fatal errors** - "There has been a critical error on this website"
* **Performance issues** - Slow loading, timeouts, or high server load
* **Functionality problems** - Features not working as expected
* **Data sync issues** - Products, orders, or customers not syncing properly
* **Payment gateway problems** - Checkout failures or payment processing errors

## Before You Start: Use a Staging Site[​](#before-you-start-use-a-staging-site "Direct link to Before You Start: Use a Staging Site")

Important

**Never troubleshoot plugin conflicts on your live site.** Always use a staging environment to avoid disrupting your business operations.

### What is a Staging Site?[​](#what-is-a-staging-site "Direct link to What is a Staging Site?")

A staging site is an exact copy of your live website where you can safely test changes without affecting your customers. Most modern hosting providers offer staging environments as a standard feature.

### If Your Host Doesn't Offer Staging[​](#if-your-host-doesnt-offer-staging "Direct link to If Your Host Doesn't Offer Staging")

If your hosting provider doesn't offer staging sites, **consider switching to a host that does**. This is a standard feature nowadays and essential for:

* Safe plugin/theme testing
* WordPress updates
* Troubleshooting issues
* Development work

**Recommended hosts with staging:**

* WP Engine
* SiteGround
* Kinsta
* Cloudways
* Many others

## Step 1: Check for Fatal Errors[​](#step-1-check-for-fatal-errors "Direct link to Step 1: Check for Fatal Errors")

If you're experiencing crashes or critical errors, start by checking the error logs:

1. **Check WCPOS Logs** - Open the [Logs](/support/logs.md) screen in WCPOS for any error messages
2. **Check Fatal Error Logs** - Follow the [Critical Error troubleshooting guide](/support/troubleshooting/critical-error.md) to find detailed error messages
3. **Note the error details** - Look for plugin names or file paths mentioned in the error

If you find a fatal error that mentions a specific plugin, that's likely your culprit. You can disable that plugin and test if the issue is resolved.

## Step 2: The Plugin Elimination Method[​](#step-2-the-plugin-elimination-method "Direct link to Step 2: The Plugin Elimination Method")

If there are no fatal errors in the logs, or you want to identify performance-related conflicts, use this systematic approach:

### 2.1 Create a Baseline[​](#21-create-a-baseline "Direct link to 2.1 Create a Baseline")

1. **Access your staging site**
2. **Test the problematic functionality** - Note exactly what isn't working or is slow
3. **Record performance metrics** - If it's a performance issue, note execution times from the [Logs](/support/logs.md)

### 2.2 Disable All Plugins (Except Essential Ones)[​](#22-disable-all-plugins-except-essential-ones "Direct link to 2.2 Disable All Plugins (Except Essential Ones)")

**Keep these plugins active:**

* WooCommerce
* WCPOS
* WCPOS Pro (if you have it)

**Disable everything else:**

1. Go to `WP Admin > Plugins`
2. Select all other plugins
3. Choose "Deactivate" from the bulk actions dropdown
4. Click "Apply"

### 2.3 Test the Issue[​](#23-test-the-issue "Direct link to 2.3 Test the Issue")

1. **Clear any caches** - If you use caching plugins, clear all caches
2. **Test the problematic functionality** - Does it work now?
3. **Check performance** - Are execution times improved?

**If the issue is resolved:** You have a plugin conflict. Proceed to Step 2.4.

**If the issue persists:** The problem is likely not a plugin conflict. Consider:

* Server resource issues (see [Server Performance](/support/performance/server.md))
* Theme conflicts (see Step 3)
* Core WordPress/WooCommerce issues

### 2.4 Enable Plugins One by One[​](#24-enable-plugins-one-by-one "Direct link to 2.4 Enable Plugins One by One")

Now you need to identify which plugin is causing the conflict:

1. **Enable one plugin** - Start with the most essential ones first
2. **Test the functionality** - Check if the issue returns
3. **If no issue** - Enable the next plugin and test again
4. **If the issue returns** - You've found the conflicting plugin!

**Plugin Priority Order (enable in this order):**

1. **Security plugins** - Wordfence, Sucuri, etc.
2. **SEO plugins** - Yoast, RankMath, etc.
3. **Performance plugins** - Caching, optimisation
4. **Payment gateways** - Stripe, PayPal, etc.
5. **Other WooCommerce extensions**
6. **General WordPress plugins**

### 2.5 Document Your Findings[​](#25-document-your-findings "Direct link to 2.5 Document Your Findings")

When you identify the conflicting plugin:

1. **Note the plugin name and version**
2. **Document the specific issue it causes**
3. **Check if there's an updated version available**
4. **Look for alternative plugins that provide similar functionality**

## Step 3: Check for Theme Conflicts[​](#step-3-check-for-theme-conflicts "Direct link to Step 3: Check for Theme Conflicts")

While themes rarely affect WCPOS (since it uses its own interface), they can sometimes cause issues with:

* Checkout processes (if using web checkout gateway)
* Admin area functionality
* API responses

### Test with a Default Theme[​](#test-with-a-default-theme "Direct link to Test with a Default Theme")

1. **On your staging site**, switch to a default WordPress theme:

   <!-- -->

   * Twenty Twenty-Four
   * Twenty Twenty-Three
   * Twenty Twenty-Two

2. **Test the problematic functionality**

3. **If the issue is resolved** - Your theme has a conflict

Theme Impact

Themes are much less likely to cause WCPOS issues compared to plugins. The POS interface runs independently of your theme. However, themes can affect:

* WooCommerce checkout pages
* WordPress admin functionality
* REST API responses

## Step 4: Resolving Plugin Conflicts[​](#step-4-resolving-plugin-conflicts "Direct link to Step 4: Resolving Plugin Conflicts")

Once you've identified the conflicting plugin, you have several options:

### Option 1: Update the Plugin[​](#option-1-update-the-plugin "Direct link to Option 1: Update the Plugin")

1. **Check for updates** - The conflict may be fixed in a newer version
2. **Update the plugin** on your staging site first
3. **Test thoroughly** before updating on live site

### Option 2: Find an Alternative[​](#option-2-find-an-alternative "Direct link to Option 2: Find an Alternative")

1. **Research alternative plugins** that provide the same functionality
2. **Test alternatives** on your staging site
3. **Migrate settings** if switching plugins

### Option 3: Contact Plugin Developer[​](#option-3-contact-plugin-developer "Direct link to Option 3: Contact Plugin Developer")

1. **Report the conflict** to the plugin developer

2. **Provide detailed information:**

   * Plugin versions involved
   * WordPress and WooCommerce versions
   * Exact error messages or behaviour
   * Steps to reproduce the issue

### Option 4: Custom Solution[​](#option-4-custom-solution "Direct link to Option 4: Custom Solution")

For essential plugins that can't be replaced:

1. **Contact a WordPress developer** to create a custom fix
2. **Consider plugin-specific hooks** to disable conflicting functionality
3. **Use conditional logic** to disable the plugin on POS-related pages

## Common Conflicting Plugin Types[​](#common-conflicting-plugin-types "Direct link to Common Conflicting Plugin Types")

### High-Risk Plugin Categories[​](#high-risk-plugin-categories "Direct link to High-Risk Plugin Categories")

**Security Plugins:**

* Can block API requests
* May interfere with authentication
* Often have aggressive firewall rules

**Caching Plugins:**

* Can cache API responses inappropriately
* May interfere with real-time data
* Can cause stale data issues

**SEO Plugins:**

* Heavy plugins can slow down admin area
* May add unnecessary database queries
* Can interfere with REST API responses

**Page Builders:**

* Often load heavy scripts in admin area
* Can conflict with WooCommerce admin pages
* May interfere with checkout processes

**Membership/Restriction Plugins:**

* Can block API access
* May interfere with user authentication
* Can restrict access to required resources

### Lower-Risk Plugin Categories[​](#lower-risk-plugin-categories "Direct link to Lower-Risk Plugin Categories")

**Contact Forms:** Usually don't interfere with WCPOS **Social Media Plugins:** Rarely cause conflicts **Analytics Plugins:** Generally safe unless very heavy **Basic Content Plugins:** Usually compatible

## Known Plugin Conflicts[​](#known-plugin-conflicts "Direct link to Known Plugin Conflicts")

The plugins below are known to interfere with WCPOS. Many issues have already been fixed automatically in recent WCPOS versions — **updating to the latest version** resolves those without any configuration.

Most fixes are "exclude the POS"

The common thread: WCPOS relies on the WooCommerce REST API and renders some flows (login, payment, receipts) in iframes. The usual fix is to **exclude the POS endpoints/URLs** (`/wp-json/wcpos/`, `/wp-json/wc/v3/`, and the `/pos/` path) from the other plugin — not to disable it entirely.

### Security & login plugins[​](#security-and-login-plugins "Direct link to Security & login plugins")

These are the **most common** source of conflicts, especially for desktop/mobile app login.

| Plugin                                          | Symptom                                                                                                         | Fix                                                                                                                                                        |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Wordfence**                                   | Firewall blocks REST API; 2FA code field won't render in the login iframe; restrictive CSP can block POS assets | Whitelist `/wp-json/wcpos/` and `/wp-json/wc/v3/` in the firewall. For 2FA: temporarily disable it for POS users. CSP is stripped automatically in v1.9.0+ |
| **Really Simple Security**                      | Blocks API access / forces redirects                                                                            | Disable any REST API restrictions in the plugin's **Advanced** settings                                                                                    |
| **WPS Hide Login**                              | Custom login URL breaks the app login iframe                                                                    | Use the standard `/wp-admin/` login URL for POS access                                                                                                     |
| **iThemes / Solid Security**                    | Blocks REST API or triggers brute-force lockouts from POS calls                                                 | Whitelist only the POS endpoints and the server's own IP — avoid blanket IP rules                                                                          |
| **Sucuri**                                      | WAF blocks API requests                                                                                         | Whitelist the REST API endpoints in the Sucuri dashboard                                                                                                   |
| **Security Optimizer**                          | Blocks admin POS login (*"use customize login URL"*)                                                            | Log in to WP Admin via the custom URL first, then go to `/pos`                                                                                             |
| **Force Login** (and similar REST-auth plugins) | `/wp-json/` returns 401/403; older apps reported *"Site does not seem to be a WordPress site"*                  | Allow unauthenticated access to the POS endpoints, or disable during initial connection. v1.x apps now surface the real error message                      |
| **LoginPress**                                  | Forces email-based login; breaks multi-user POS login                                                           | Allow username login, or disable for POS access                                                                                                            |
| **JWT Authentication plugins**                  | 403 on all POS API requests after activation (login may succeed, everything else fails)                         | Auto-fixed in v1.8.x+. On older versions, deactivate the JWT plugin or exclude the POS endpoints                                                           |
| **Captcha / reCAPTCHA**                         | Login loop in the desktop app (captcha can't render in the iframe)                                              | Disable captcha for the POS login URL                                                                                                                      |
| **Defender Pro**                                | `X-Frame-Options` header blocks all POS iframes (login, payment, receipts)                                      | Add a POS-specific exception for `/pos/` rather than disabling `X-Frame-Options` site-wide                                                                 |
| **Jetpack CRM Client Portal**                   | Breaks POS login entirely                                                                                       | Disable just the Client Portal extension                                                                                                                   |

### Performance, caching & optimisation plugins[​](#performance-caching-optimisation-plugins "Direct link to Performance, caching & optimisation plugins")

| Plugin                                         | Symptom                                                                                                                 | Fix                                                                                         |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| **WP Rocket, Autoptimize, Hummingbird, Smush** | Defer/minify JS breaks checkout and Stripe Terminal                                                                     | Exclude `/pos/` URLs from JS optimisation                                                   |
| **LiteSpeed Cache**                            | Constant reload loop at checkout in the desktop app; restrictive CSP                                                    | Update WCPOS, purge the cache, exclude POS pages from caching. CSP auto-stripped in v1.9.0+ |
| **Image Prioritizer**                          | Spams the HTTP `Link` header, breaking REST API discovery; desktop app shows *"does not appear to be a WordPress site"* | Deactivate the plugin                                                                       |

### Page builders & front-end injectors[​](#page-builders-front-end-injectors "Direct link to Page builders & front-end injectors")

| Plugin                           | Symptom                                                                                                    | Fix                                                            |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| **Elementor**                    | `elementor-frontend.js` breaks the checkout accordion inside the POS iframe — payment methods won't expand | Exclude POS pages from Elementor script loading                |
| **Omnisend / marketing plugins** | Inject scripts into the checkout iframe, breaking layout and payments                                      | Use POS **Checkout Settings** to disable non-essential scripts |
| **MyStickyElements / Complianz** | Inject overlays (sticky buttons, cookie banners) into the checkout iframe                                  | Configure them to exclude `/pos/` URLs                         |

### WooCommerce extensions & other plugins[​](#woocommerce-extensions-other-plugins "Direct link to WooCommerce extensions & other plugins")

| Plugin                                                    | Symptom                                                                              | Fix                                                                                   |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| **WooCommerce Subscriptions**                             | Migration-script conflict during the v1.7→v1.8 upgrade                               | Deactivate Subscriptions, activate POS Pro (let migration run), then re-enable        |
| **WP Activity Log**                                       | Logs every POS action → postmeta bloat → *"only 10 products"*                        | Disable it, or exclude POS post types from logging                                    |
| **Jetpack / Astra / Xero** (anything hooking `save_post`) | Duplicate meta rows on every POS API call (one store hit 36,867 rows on one product) | Auto-fixed in v1.8.12+ (free) / v1.8.14+ (Pro) with a cleanup migration — just update |
| **Stripe Tax**                                            | Incompatible with REST API-created orders (how the POS creates orders)               | No workaround — incompatible                                                          |
| **Mollie**                                                | Can hide the BACS (bank transfer) method from POS checkout                           | Update Mollie to the latest version                                                   |
| **CTX Feed**                                              | Intermittent 403 errors on the POS settings page                                     | Deactivate to confirm; no known workaround                                            |
| **Third-party barcode scanner plugins**                   | Corrupt the order API JSON, breaking order creation/display                          | Disable them; use the POS's built-in barcode scanning                                 |
| **MailerLite** (Signup Forms + WooCommerce)               | 500 error on POS order creation (memory exhaustion)                                  | Deactivate to confirm, then contact MailerLite                                        |
| **The Courier Guy Shipping**                              | POS order creation fails with a server error                                         | Roll back to a previous version, or contact the developer                             |
| **PixelYourSite / PixelMySite**                           | Fatal error: *call to member function `is_type()` on bool*                           | Temporarily disable                                                                   |
| **Google Listings & Ads**                                 | Autoloader conflict → *"Class WCPOS\…\Stores not found"* critical error              | Delete all POS plugins and reinstall only the latest Pro standalone                   |

Stripe Terminal: don't enable it globally

The **Stripe Terminal** gateway should be enabled **only** inside POS Settings, never in `WooCommerce > Settings > Payments`. Enabling it globally makes it appear on your public store checkout and crashes the online checkout flow.

### Server-level conflicts[​](#server-level-conflicts "Direct link to Server-level conflicts")

| Source                                                            | Symptom                                       | Fix                                                                                                                                           |
| ----------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Custom CSP headers** (`.htaccess`, Nginx, or a security plugin) | POS stuck on the logo; JS/CSS blocked         | Auto-stripped on POS pages in v1.9.0+. For server-level CSP, allow `cdn.jsdelivr.net` in `script-src`/`style-src`, or add a `/pos/` exception |
| **GoDaddy Website Firewall**                                      | Blocks `/wp-json/` (*"Received 'undefined'"*) | Allow the `/wp-json/` URL path in the firewall — see [Server Performance](/support/performance/server.md#hosting-specific-notes)              |

## Prevention Tips[​](#prevention-tips "Direct link to Prevention Tips")

### Regular Maintenance[​](#regular-maintenance "Direct link to Regular Maintenance")

1. **Keep plugins updated** - Always use the latest versions
2. **Remove unused plugins** - Don't just deactivate, delete them
3. **Test updates on staging** before applying to live site
4. **Monitor performance** regularly using [Server Performance](/support/performance/server.md) metrics

### Plugin Selection Best Practices[​](#plugin-selection-best-practices "Direct link to Plugin Selection Best Practices")

1. **Choose reputable developers** - Check reviews and update frequency
2. **Avoid redundant functionality** - Don't install multiple plugins that do the same thing
3. **Read compatibility information** - Check if plugins are tested with WooCommerce
4. **Start with minimal plugins** - Add functionality gradually as needed

## Getting Help[​](#getting-help "Direct link to Getting Help")

If you're unable to resolve the plugin conflict:

### For Pro Users[​](#for-pro-users "Direct link to For Pro Users")

Pro Support

Pro users receive priority support for plugin conflict resolution. Our team can help identify and resolve conflicts for you.

### Community Support[​](#community-support "Direct link to Community Support")

[Discord Community](https://wcpos.com/discord)<support@wcpos.com>

### When Contacting Support[​](#when-contacting-support "Direct link to When Contacting Support")

Please provide:

1. **List of active plugins** with versions
2. **WordPress and WooCommerce versions**
3. **Detailed description** of the issue
4. **Steps you've already tried**
5. **Error messages** from logs
6. **Server performance metrics** if relevant

## Related Documentation[​](#related-documentation "Direct link to Related Documentation")

[Critical ErrorHow to find fatal error logs](/support/troubleshooting/critical-error.md)

[LogsUnderstanding WCPOS logs and metrics](/support/logs.md)

[Server PerformanceDiagnosing performance issues](/support/performance/server.md)

[Checkout PerformanceOptimising checkout speed](/support/performance/checkout.md)
