Skip to content
WooRescueHQ

WooCommerce / Errors

WooCommerce Plugin Conflict: How to Find the Cause

Short answer

Start from the evidence before disabling anything: an error's file path or a failing request usually names the components involved. If there is no error, reproduce the problem on a staging copy, switch to a default theme, and disable plugins in halves until the problem disappears — that finds the culprit in a handful of steps. Then fix the interaction (hook priority, script loading, a compatibility snippet or an update) instead of leaving something important switched off.

Symptoms

  • Something broke right after installing or updating a plugin, the theme or WooCommerce.
  • Checkout, cart or product pages behave differently with a particular extension active.
  • JavaScript errors mentioning another plugin's script, or duplicated libraries.
  • A fatal error such as Cannot declare class or Cannot redeclare function.
  • The problem appears only for some products, payment methods or user roles.

Most common causes

  1. Hook competition: two components hooked to the same filter, where the later one overwrites or undoes the first — prices, fees, shipping, checkout fields.
  2. JavaScript conflicts: duplicated jQuery or library versions, scripts loaded in the wrong order, script optimisers combining or deferring checkout scripts.
  3. Bundled library collisions: two plugins shipping different versions of the same PHP library, so whichever loads first wins.
  4. Template overrides in the theme that are out of date with WooCommerce.
  5. Different assumptions about data: one plugin storing values another does not expect, or both writing the same meta key.
  6. REST and AJAX restrictions: security plugins blocking endpoints another extension depends on.

Diagnosis

1. Start from evidence, not from deactivation

  • A PHP error? Its file path names the component and the stack trace shows which hook connects them.
  • A JavaScript error? The console shows the script file and line.
  • A failing request? The Network panel's response body often contains the error or the name of the component that rejected it.
  • A timeline? The first occurrence usually matches an update or installation.

2. Reproduce on staging

Copy the store to staging and confirm the problem happens there too. If it doesn't, the cause is environmental — caching, CDN, server configuration — not a plugin.

3. Isolate by halves

Switch to a default theme (such as Storefront) and test. If the problem persists, disable half of the plugins (keeping WooCommerce and anything the test needs, like the payment gateway), test again, and keep halving the group that contains the problem.

Active plugins Tests needed, halving each time
16 about 4
32 about 5
64 about 6

4. Confirm the pair

Once you have a suspect, test WooCommerce with only that plugin, then with that plugin and the one it most likely interacts with. A conflict is confirmed when you can reproduce it with the smallest possible set.

Logs and technical checks

  • WooCommerce → Status → Logs (fatal-errors) and the PHP error log.
  • WooCommerce → Status → System status: active plugins and versions, outdated template overrides.
  • Browser console and Network panel on the affected page.
  • The changelogs of the plugins updated around the first occurrence.

Solutions

  • Update both components; many conflicts are already fixed in a later version.
  • Adjust hook priority in a small compatibility mu-plugin, so the intended logic runs last.
  • Stop scripts from loading where they are not needed, and exclude checkout scripts from combination or deferral.
  • Update or remove outdated template overrides in the theme.
  • Report a reproducible case to the vendors: versions, steps, and the minimal set of active plugins.
  • Replace an abandoned plugin rather than patching it forever.
PHPmu-plugins/compat-fees.php
// Make sure our fee logic runs after another plugin that resets fees at priority 20.
add_action( 'plugins_loaded', function () {
    remove_action( 'woocommerce_cart_calculate_fees', 'mystore_apply_fees', 10 );
    add_action( 'woocommerce_cart_calculate_fees', 'mystore_apply_fees', 30 );
}, 20 );

What not to do

  • Do not disable plugins one by one on the live store: it is slow, it breaks other flows for customers, and you may disable something that processes payments.
  • Do not edit the conflicting plugin's files; the change disappears at the next update.
  • Do not leave an important plugin deactivated "for now" without understanding what it was doing.
  • Do not assume the most recently updated plugin is guilty without testing.

When to contact an expert

Contact an engineer when the conflict involves custom code or premium extensions you rely on, when it only appears in production under real traffic, when it corrupts data such as prices or orders, or when you need both components to keep working.

Frequently asked questions

How do I find which plugin conflicts with WooCommerce?

Check the error logs first; the file path often names the plugin. If there is no error, reproduce the problem on staging and disable plugins in halves, re-testing each time, until you find the one whose removal fixes it. Then test it alone with WooCommerce to confirm.

Can I test for conflicts on a live store?

Not by deactivating plugins site-wide. The Health Check & Troubleshooting plugin's troubleshooting mode disables plugins and switches the theme for your own session only, which is much safer — but a staging copy is still the best place.

Is it always a plugin?

No. The theme, a snippet in functions.php, a mu-plugin, server-level caching or a CDN script optimisation can all behave like a plugin conflict.

What if I need both plugins?

Then the goal is to fix the interaction: change a hook priority, stop a script from loading on certain pages, add a small compatibility snippet, or report a reproducible case to the vendors.

$ describe the problem

Have a WooCommerce problem?Request a diagnosis.

Tell us what is failing, what changed recently and the business impact. We review every request and recommend the appropriate next step.

Request a diagnosis See services and prices

Never send passwords, API keys or card data through the form.

Diagnosis from€299

Request a diagnosis