Why WooCommerce pixels miss more than you think
WooCommerce stores are flexible, and that flexibility is where tracking breaks. The purchase event normally depends on the order-received page loading in the buyer's browser. A lot can stop that.
- Payment methods that redirect to an external page (PayPal, iDEAL through Mollie, bank apps) where the buyer closes the window instead of returning.
- Caching and optimisation plugins that delay, combine or block pixel scripts.
- Several plugins each adding their own pixel, so events fire twice or not at all.
- Orders paid later, like bank transfers, which are never 'purchased' while the buyer is on your site.
- The usual browser limits: ad blockers, Safari cookie limits, cookie banners and in-app browsers.
Track orders, not page loads
The fix is to base the purchase event on the order itself. When WooCommerce marks an order as paid, that's the moment a sale happened, whether the buyer is still on your site or not.
Settl's WooCommerce pixel tracker listens for that. The plugin tells Settl when an order is paid, and Settl sends the purchase to your ad platforms from our server, with the order value, currency, hashed email and phone, and the ad click saved when the buyer first landed.
It also means the opposite is handled well. An order that's created but never paid, like an abandoned PayPal payment, isn't reported as a purchase. Your ad platforms learn from sales that actually happened, not from checkouts that stalled.
What the Settl plugin does on your store
On every visit, the plugin saves the ad click ids the platforms add to your links: fbclid and fbp for Meta, ttclid for TikTok, gclid for Google, ScCid for Snapchat and epik for Pinterest. They're stored first-party and kept for 90 days.
Page views, product views, add to cart and checkout are sent from the browser and from our server with the same event id, so platforms keep one. Purchases are sent once the order is paid. If a platform doesn't accept an event, Settl retries it, and you can see the status per order in your dashboard.
Settl compared with the usual WooCommerce options
Many WooCommerce stores use PixelYourSite, the official Meta plugin, or a server-side Google Tag Manager setup. They're all valid. PixelYourSite in particular is a very popular, inexpensive plugin with a free version and a yearly Pro licence.
Settl takes a different angle: one plugin that sends paid orders to eight ad platforms from our server, a 90-day click memory, and a dashboard that pulls spend from your ad accounts to show ROAS per ad. It's a monthly subscription rather than a yearly licence, and there's no tag manager to maintain.
Before you install any WooCommerce pixel tracker
Make a short list of every place a pixel is loaded today: your theme, plugins, a tag manager, a cookie banner integration. Pick one browser source per ad platform and switch off the rest. Then exclude the tracker's script from your caching plugin's JavaScript delay or combine settings, if it offers that option.
Also note your numbers for the last two weeks: WooCommerce orders, and purchases reported by each ad platform. That baseline is the easiest way to see what a new WooCommerce pixel tracker changes.
How to tell it's working
After setup, open the Settl dashboard and look at the delivery status of each new order. You'll see which platforms received the purchase, when, and with which ad click. If a platform rejected an event, for example because a token expired, you see that too, and Settl retries it.
Then check from the platforms' side. In Meta Events Manager, purchases should arrive with both browser and server as a source, merged into one event. TikTok, Snapchat, Pinterest and the others have similar event overviews. Over the next weeks, compare your baseline: the gap between WooCommerce orders and reported purchases should shrink, most of all for orders paid with redirect payment methods.
If it doesn't, the cause is usually outside the tracker: a duplicate pixel still firing from another plugin, or a cookie banner that blocks the browser script entirely. The order status in your dashboard makes it easy to tell the difference between a sale that wasn't sent and a sale that was sent but not matched.