Directory / plugin

PixLedger – Consent-Aware Meta Pixel, GA4 & GTM Tracking for WooCommerce

v1.8.4 · by mentotex

Meta Pixel, GA4 and Google Tag Manager tracking for WooCommerce, with consent control and an event log that shows what was sent.

About this plugin

PixLedger sends your store’s tracking events to Meta Pixel (Facebook), Google Analytics 4 and Google Tag Manager, and keeps a local log so you can see exactly what happened to every event.

Why PixLedger

  • One place for three platforms. Add your Meta Pixel, GA4 and GTM IDs, switch each platform on, and choose which events to track.
  • Consent comes first. Events wait for the visitor’s permission. Meta, GA4 and GTM each need the consent that fits them, and PixLedger works with the WP Consent API, Complianz or your own banner.
  • See what really happened. The Event Log shows every event with its status, the reason when something was blocked or skipped, and the exact payload that was prepared.
  • Built for WooCommerce, works without it. Product views, cart, checkout, payment and shipping steps, coupons and purchases come from your real orders, and a purchase is only tracked when WooCommerce considers the order paid. Without WooCommerce, page, click, form, search and custom events still work.
  • Privacy-minded. Form values and email addresses are not collected, tracked links lose their query strings, and personal data export and erase tools are included.
  • Free, with nothing locked. Every feature in this plugin works without a licence or subscription.

What it does not do. PixLedger sends events from the visitor’s browser. It cannot deliver an event after the browser has closed, and it cannot prove that a platform accepted an event. Server-side delivery is not part of this plugin.

How it works

PixLedger Lite connects your site to Meta Pixel, Google Analytics 4 and Google Tag Manager. WooCommerce events use data from WooCommerce; browsing events come from the visitor’s browser. A local event log shows the mapped provider payload and how far each event progressed.

What the event log means

  • Queued: a provider command has been prepared for a browser response.
  • Browser attempted (shown as “Attempted”): the browser reported invoking the provider API. This does not confirm platform receipt, attribution or reporting.
  • Recorded locally (shown as “Local”): a diagnostic event, including an administrative refund or a page-exit event waiting for another page visit.
  • Blocked (by consent): a provider’s consent requirements were not met. Blocked records contain minimal diagnostic data.
  • No provider: there was no enabled provider with a valid ID.
  • Failed: preparation failed. A tag blocked by the browser remains queued.
  • Deduplicated (shown as “Deduped”): intentionally skipped, such as ecommerce data already managed by GTM4WP.
  • Legacy sent (unverified) (shown as “Legacy”): an older log entry whose delivery was not verified.

Each status is explained below the Event Log table. Filter logs by event, provider, status, UTC date range or order/visitor/event ID. Inspect payloads, export the filtered log as CSV (up to 100,000 rows per file), delete selected logs and configure retention. CSV exports contain visitor IDs and event payloads, which are pseudonymous personal data, so handle downloaded files accordingly; customer email is never exported. WordPress displays event times in your site’s timezone.

Tracking

WooCommerce: product views, cart additions/removals, cart and checkout views, payment/shipping selection at order processing, coupons, purchases and product-review submissions. Purchase requires an order WooCommerce considers paid and a valid recent order key or checkout delivery cookie. Pending, failed and cancelled orders never produce Purchase events. On-hold orders (typical for bank transfer and cash on delivery) are counted by default; switch that off under Tracking rules to count paid orders only. Payment completed after the visitor leaves may not reach browser platforms.

Refunds are recorded locally. Lite does not send administrative background refunds to external platforms.

WordPress/browser: page views, 404 pages, outbound/download/phone/email clicks, search, form submission attempts, abandoned forms, scroll depth, time on page, account actions and comments. HTML5 video start/end events are supported; embedded YouTube/Vimeo players are not integrated. FormSubmit means an attempted submission, not a confirmed lead.

Each event has a switch. The Custom Events switch also controls unregistered custom event names. Features are available without a subscription or license key. WooCommerce is optional.

Custom events

Use pixledger('track', 'DemoAction', { value: 12 }) after the pixledger_ready document event (or when pixledger.ready is true), or add data-pixledger-event="DemoAction" to an element. Optional data-pixledger-data and data-pixledger-context attributes accept JSON. The pxl and data-pxl-event aliases remain supported. The browser API cannot emit reserved purchase, cart or account events.

Custom events must not contain personal information. Payloads are bounded and sensitive field names are removed. Form field values, telephone numbers and email link destinations are never read. Explicit page/link URL properties omit query strings and fragments.

Consent and privacy

New installations enforce consent by default, with all categories denied. An existing explicit choice to disable Consent Mode is preserved. PixLedger is not a cookie banner: connect WP Consent API, Complianz or your own consent interface. Custom integrations can call pixledger('consent', { analytics_storage: true, ad_storage: false, ad_user_data: false, ad_personalization: false }) with the full current choice.

GA4 requires analytics consent. Meta requires ad storage and ad user data consent. GTM requires both analytics and marketing consent because containers can contain arbitrary tags. Consent changes apply on the current page. PixLedger uses basic consent gating; it does not send denied-consent cookieless measurement pings. Disabling Consent Mode bypasses these gates and is a deliberate administrator choice.

Before consent permits collection, PixLedger does not create a visitor ID, persist browsing events or load its provider libraries. Revocation clears PixLedger’s browser buffer, identity/attribution cookies and pending queue. Previously stored event logs are managed by retention and privacy tools. Other plugins and tags have their own consent behaviour.

Visitor IDs are pseudonymous, not anonymous. Cookies last up to 90 days (visitor), 30 days (attribution), or one day (transport and order delivery). First-touch campaign attribution uses paid-click overrides; click IDs require marketing consent. Attribution is attached to an order at checkout, including pending orders, and is not proof of a paid conversion.

Event logs default to 168 hours; 0 disables event-log cleanup. Attribution defaults to 90 days and is removed from both the plugin table and related order metadata. Pending delivery expires after 30 minutes. Scheduled cleanup is bounded and runs with WP-Cron; actual deletion depends on cron execution. Configure reliable cron for predictable retention.

WordPress Tools > Export Personal Data / Erase Personal Data supports order-linked PixLedger records and legacy email-linked logs. Browsing data with no email/order link cannot be identified from an email request. New event records do not store customer email hashes. A purchase replay marker can remain on an erased order to prevent resending its conversion.

Delivery, caching and integrations

Cacheable HTML contains configuration and page descriptors, not visitor-specific event queues. The browser obtains a fresh nonce/settings response and retrieves its server-owned pending events through same-origin AJAX. Allow PixLedger requests through your cache/security layer; do not cache admin-ajax.php POST responses.

Network failures use bounded retries. Events saved during navigation may be delivered on the next consenting page within 30 minutes. The visitor must return to a page where PixLedger runs; Lite cannot guarantee last-page delivery or exact-once external delivery.

Plugin detection warns of possible overlap. Runtime checks avoid loading the same library URL again; they cannot prevent another plugin or GTM container from firing its own events. Use one owner per destination/event. In particular, do not send direct GA4 events and equivalent GTM tags to the same property. GA4 automatic page views are disabled for PixLedger’s own configuration.

By default, purchase, cart and checkout values are the order total including tax and shipping (tax and shipping are also sent as separate fields). Under Tracking rules you can switch to items only, excluding tax and shipping, to match what you compare against in your ad accounts. Variation IDs identify variants. GTM receives GA4-style ecommerce objects. Configure your GTM tags to read them; pushing a dataLayer event does not itself send a conversion.

Scope

Server API delivery, platform reconciliation and advanced attribution reporting are outside Lite. Two paid upgrades, PixLedger Pro and PixLedger Insights, are under development; the free plugin does not depend on them and nothing in it is locked or limited to push you toward them. This version makes no platform delivery or legal-compliance guarantee. Network activation on WordPress multisite is not supported; activate and manage the plugin per site.

External Services

Enabled providers load third-party JavaScript only when their consent conditions allow it. Those libraries can collect browser/device information and transmit data to the provider. PixLedger supplies event names, page context and relevant product/order values. It does not configure email advanced matching. Review settings in each provider as well as in your consent platform.

  • Meta Pixel: loads from connect.facebook.net and sends events to Meta. Privacy | Terms
  • Google Analytics 4: loads gtag.js from googletagmanager.com and sends events to Google Analytics. Privacy | Terms
  • Google Tag Manager: loads gtm.js from googletagmanager.com and pushes mapped events to dataLayer. The site’s container controls additional services. Privacy | Terms

Plugin tags