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
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
Never troubleshoot plugin conflicts on your live site. Always use a staging environment to avoid disrupting your business operations.
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 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
If you're experiencing crashes or critical errors, start by checking the error logs:
- Check WCPOS Logs - Open the Logs screen in WCPOS for any error messages
- Check Fatal Error Logs - Follow the Critical Error troubleshooting guide to find detailed error messages
- 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
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
- Access your staging site
- Test the problematic functionality - Note exactly what isn't working or is slow
- Record performance metrics - If it's a performance issue, note execution times from the Logs
2.2 Disable All Plugins (Except Essential Ones)
Keep these plugins active:
- WooCommerce
- WCPOS
- WCPOS Pro (if you have it)
Disable everything else:
- Go to
WP Admin > Plugins - Select all other plugins
- Choose "Deactivate" from the bulk actions dropdown
- Click "Apply"
2.3 Test the Issue
- Clear any caches - If you use caching plugins, clear all caches
- Test the problematic functionality - Does it work now?
- 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)
- Theme conflicts (see Step 3)
- Core WordPress/WooCommerce issues
2.4 Enable Plugins One by One
Now you need to identify which plugin is causing the conflict:
- Enable one plugin - Start with the most essential ones first
- Test the functionality - Check if the issue returns
- If no issue - Enable the next plugin and test again
- If the issue returns - You've found the conflicting plugin!
Plugin Priority Order (enable in this order):
- Security plugins - Wordfence, Sucuri, etc.
- SEO plugins - Yoast, RankMath, etc.
- Performance plugins - Caching, optimisation
- Payment gateways - Stripe, PayPal, etc.
- Other WooCommerce extensions
- General WordPress plugins
2.5 Document Your Findings
When you identify the conflicting plugin:
- Note the plugin name and version
- Document the specific issue it causes
- Check if there's an updated version available
- Look for alternative plugins that provide similar functionality
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
- On your staging site, switch to a default WordPress theme:
- Twenty Twenty-Four
- Twenty Twenty-Three
- Twenty Twenty-Two
- Test the problematic functionality
- If the issue is resolved - Your theme has a conflict
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
Once you've identified the conflicting plugin, you have several options:
Option 1: Update the Plugin
- Check for updates - The conflict may be fixed in a newer version
- Update the plugin on your staging site first
- Test thoroughly before updating on live site
Option 2: Find an Alternative
- Research alternative plugins that provide the same functionality
- Test alternatives on your staging site
- Migrate settings if switching plugins
Option 3: Contact Plugin Developer
- Report the conflict to the plugin developer
- Provide detailed information:
- Plugin versions involved
- WordPress and WooCommerce versions
- Exact error messages or behaviour
- Steps to reproduce the issue
Option 4: Custom Solution
For essential plugins that can't be replaced:
- Contact a WordPress developer to create a custom fix
- Consider plugin-specific hooks to disable conflicting functionality
- Use conditional logic to disable the plugin on POS-related pages
Common Conflicting Plugin Types
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
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
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.
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
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
| 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
| 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
| 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 |
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
| 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 |
Prevention Tips
Regular Maintenance
- Keep plugins updated - Always use the latest versions
- Remove unused plugins - Don't just deactivate, delete them
- Test updates on staging before applying to live site
- Monitor performance regularly using Server Performance metrics
Plugin Selection Best Practices
- Choose reputable developers - Check reviews and update frequency
- Avoid redundant functionality - Don't install multiple plugins that do the same thing
- Read compatibility information - Check if plugins are tested with WooCommerce
- Start with minimal plugins - Add functionality gradually as needed
Getting Help
If you're unable to resolve the plugin conflict:
For Pro Users
Pro users receive priority support for plugin conflict resolution. Our team can help identify and resolve conflicts for you.
Community Support
When Contacting Support
Please provide:
- List of active plugins with versions
- WordPress and WooCommerce versions
- Detailed description of the issue
- Steps you've already tried
- Error messages from logs
- Server performance metrics if relevant