Troubleshooting
First Step: Use the Console Logger
Before troubleshooting manually, enable the Console Logger to see exactly what's happening with your tracking:
- Add
?pmwloggeronto your page URL - Open browser DevTools (F12) → Console tab
- Look for Pixel Manager output showing events, pixel calls, and errors
The Console Logger will immediately show you:
- ✅ Which events are firing (or not firing)
- ✅ What data is being sent to each pixel
- ✅ Consent status and script loading issues
- ✅ Detailed error messages
Complete Console Logger Guide →
General
Where can I report a bug or suggest improvements?
Please post your problem in the WordPress support forum for this plugin: Support forum
Alternatively, you can send a request to [email protected]. If you do, please copy and paste the debug info from the Pixel Manager and attach it to the email.

The most common issues in case the pixels don't work
- Caching: If you run some caching layer, the server might still serve cached versions of the pages. You will need to delete the cache.
- Minification, combination, and concatenation: Some minification and combination plugins mangle up the injected JavaScript code to an extent, that the tracking pixels stop working. You will need to turn minification, combination, and concatenation off and try again.
Is wpm_get_cart_items slowing down my website?
Short answer: No
Long answer:
First some information on what wpm_get_cart_items is doing.
While a visitor is browsing a shop he might add some products to the cart. Each time he uses the minicart to modify his selection, by adding or removing products, we need to make sure to have all product information handy in order to send pixel events with all relevant data to Google, Meta (Facebook), etc. Unfortunately, it is not possible to include this information on page load within the HTML code, because caching mechanisms could serve outdated data to the browser. That's why we need a mechanism like
wpm_get_cart_itemsthat will fetch all the current product data for the minicart from the server.
And now to the question if wpm_get_cart_items is slowing down the website.
Some users have noticed in the network tab of their browsers that the wpm_get_cart_items call adds one more request, which on slow servers can take even more than a second to fulfill. It is using the standard WordPress Ajax function to fetch the product data.
But is this not slowing down the website?
The wpm_get_cart_items call happens after the browser has signaled the load event, which happens after all content has already been successfully loaded.
The load event is fired when the whole page has loaded, including all dependent resources such as stylesheets and images.
Reference: Mozilla MDN Web Docs
PageSpeed measures the loading time of your page starting from the initial request to when the last embedded resource (JS, CSS, images, etc.) has finished loading. So that’s essentially when $(window).load() is triggered.
Reference: Lèse Majesté's answer on Stackoverflow
So the wpm_get_cart_items doesn’t slow down the download or rendering of a WooCommerce shop in any way.
My theme shows a script code on the front end that shouldn't be there
The Pixel Manager uses a script output to track products in a way that works with every caching system.
It outputs that code wrapped in a <script></script> tags which is fully compliant HTML code.
Because the code is wrapped in <script></script> tags the theme should ignore the code and not output it visibly to the front end.
There is nothing we can do from our side. You have to ask the theme developer to update the theme to ignore all code that’s wrapped in <script></script> tags.
Elementor Related Products and Upsell Products Widgets
This has been fixed in version 3.9.0 of Elementor Pro. Please update to that version (or higher).
In its current version the Elementor Related Product and Upsell Product Widgets don't properly process the <script> output created by the Pixel Manager for WooCommerce. It should be hidden and not visible. This is an issue that only can be fixed by the creators of the Elementor Related Products and Upsell Product Widgets as described in the following troubleshooting article.
Luckily there is a workaround for users of the Elementor Related Products Widget. Instead of using the built-in Elementor Related Products Widget, you can use the shortcode [related_products limit="X"]
Similarly, for replacing the Elementor Upsell Products Widget you can use this code published by bekarice: https://gist.github.com/bekarice/a3305c18d32b4de9d8b7
We already have placed a bug report on Elementor's GitHub issue tracker: https://github.com/elementor/elementor/issues/16934
The bug report shows another way for the users to fix the problem, enabling them to keep using the Elementor widgets. But it can't persist over Elementor updates, so you need to keep updating this with every Elementor update. Use it at your own risk.
We'd recommend that you give the issue a thumbs up or add your own comment so that the Elementor developers see how frequently that problem happens and increase the priority of that issue.
We're in direct contact with Elementor, but at the moment we can't say for sure if and when they are going to fix this on their end.
The Purchase Confirmation Page Doesn't Load and Shows a Blank Page
If a blank page shows up when trying to load the purchase confirmation page the reason is typically too low allocated memory. The Pixel Manager runs a few queries on the purchase confirmation page which use more memory than on other pages. If in the shop configuration the memory limit is too low, this problem can occur. The solution is simple. Increase the memory limit in your configuration.
Make sure that the memory limit is well above your maximum memory allocation.
Add one of the following lines to the configuration file wp-config.php
define('WP_MEMORY_LIMIT', '256M');
define('WP_MEMORY_LIMIT', '512M');
define('WP_MEMORY_LIMIT', '1024M');
Here's a support article on WooCommerce that also shows other ways how to increase the memory limit.
The purchase confirmation page loads very slowly when the Pixel Manager is enabled
The Pixel Manager runs a few queries on the purchase confirmation page to evaluate if the customer is a new customer or an existing customer. It also determines different types of customer lifetime values for that customer. Those queries, on some shops, can take a long time to execute.
The simplest way to fix this is to add high-performance indexes to the tables. One of our tests improved the query speed by a factor of 133!
Use the Index WP MySQL For Speed plugin to add those high-performance indexes to your shop too. It will not just help on the purchase confirmation page but on every page of your shop.
Read more about this optimization in our blog article about adding high-performance indexes.
Why I can’t verify my site on Hotjar?
The plugin configuration for Hotjar is really simple. You just have to paste the Site ID from Hotjar’s tracking code to Pixel Manager, and you’re good to go.
However, sometimes, there will be instances where your site can’t be verified. Usually, it’s because of these things:
- Cookie Banner - make sure that you have disabled the cookie banner when verifying your site on Hotjar. This sometimes blocks the cookies coming from Hotjar as well causing it not to verify successfully
- Explicit Consent Mode - having this option enabled in the plugin will also not allow cookie tracking on your site. Just like the Cookie Banner, this will also cause your site’s verification to be unsuccessful
- You’re logged in while verifying - You also have to do the verification while you’re logged out on your WordPress Dashboard, so your site will be tracked.
- Server-side caching - Make sure to clear all server-side cache after each configuration so the Hotjar verifier will not load a cached version.
Duplicate jQuery library causes random issues
Problem
The theme, or a plugin, or custom code loads an additional jQuery library that overwrites the events the Pixel Manager hooks into.
WordPress for a long time was shipped with an old version of jQuery. Therefore, some theme developers or shop managers loaded an additional, newer jQuery library in the HTML source. But, if done incorrectly, this would overwrite all events a plugin like the Pixel Manager has hooked into, rendering all event listeners useless.
Luckily WordPress, since version 5.5, is shipped with the most modern jQuery library. This means the additional jQuery library can be safely removed.
Verification
- Open the development console
- Search the entire source code using OPT+CMD+F (on a Mac) for the following string:
jQuery requires a window with a document - If you get two results then the jQuery library is duplicated and is causing issues.
Solution
Remove the additional jQuery library. Keep the jQuery library that WordPress is injecting.
Render issues that show Pixel Manager JavaScript code on the front-end
In rare cases you might run into rendering issues on the front end which visibly show JavaScript code that is injected by the Pixel Manager into the page source.
This typically starts with the following line:
window.pmwDataLayer.products = window.pmwDataLayer.products || {};
There are two known cases where this problem appears.
-
Users of the Elementor Pro widget for related and upsell products. For them, we have an own support article with a workaround: Elementor Render Issue
-
The theme is using a front end JavaScript library which makes a mistake when rendering the code that the Pixel Manager injects into the product templates. The Pixel Manager injects the following three HTML elements into the page source:
<meta>,<input type="hidden">and<script></script>. All those HTML elements are invisible elements by definition and should not be visibly rendered. However, some JavaScript helper libraries don't account for those invisible elements and render some or all of them visibly nonetheless.
This needs to be fixed by the developers of those render libraries. The Pixel Manager cannot work around this issue.
Updates not visible
Sometimes it can happen that updates don't show up anymore, despite the subscription still being active.
Sync the license manually
Go to the Account tab of the plugin and click the Sync button. This will sync the license and might fix the issue already. If it doesn't continue with the next approach.

Full Reset
Sometimes manually syncing the license or deactivating and reactivating the plugin will not help. In that case a full reset should help.
- Download the Freemius Fixer plugin from here: https://github.com/Freemius/freemius-fixer

-
Install the plugin on your website.
-
Run the Freemius Fixer.

- Now you will have to add your license back to the Pixel Manager by going to the Account page of the Pixel Manager. If you don't have it on file you can always log into your account and get it from there: https://sweetcode.com/freemius-account/
The REST endpoints for the Pixel Manager are not working
In some edge cases it can happen that the wp-json REST endpoints for the Pixel Manager stop working and return a 404.
Typically, this happens when switching from pretty links to non-pretty links in the WordPress permalink settings and if the website uses caching.
Clearing all server-side cache (caching plugin, server cache, CDN cache, etc.) should fix that issue.
The Pixel Manager doesn't recognize custom order paid statuses.
The Pixel Manager uses the WooCommerce order paid status to determine if an order has been paid. If you use a custom order paid status, the Pixel Manager will not recognize it.
You can use the following filter to add a custom order paid status to the Pixel Manager:
add_filter('woocommerce_order_is_paid_statuses', function ($statuses) {
$statuses[] = 'custom-paid-status';
return $statuses;
});
Action Scheduler
The Pixel Manager ships with the Action Scheduler library. It helps to compile reports at night, because they can take a long time to process.
In rare cases the Action Scheduler tables are bloated, locked and can cause the entire website to go down. It seems to be an ongoing issue that's not limited to users of the Pixel Manager: https://clicknathan.com/web-design/woocommerce-actionscheduler-table-error/
There are various ways to deal with this. All of them have essentially the goal to clean up and fix the Action Scheduler tables.
Remove unnecessary records such as failed, cancelled and completed jobs
Only do this if you know how to restore a database backup.
-
Take a backup of your database
-
Open your database and run the following SQL statements.
If your tables use a custom prefix other than wp_, adjust the prefix in the statement.
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled';
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed';
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete';