Features
Everything PixLedger tracks, and everything it tells you about it.
Send events to Meta Pixel, GA4 and Google Tag Manager, and keep a complete record in your own WordPress admin. Free, with every event unlocked.
Providers
Three destinations, one place to check them.
All three send from the visitor’s browser. Each event gets its own row per provider, so you can see exactly where it went.
Meta Pixel
Loads the Meta Pixel and sends PageView, ViewContent, AddToCart, InitiateCheckout and Purchase under their standard names. Other events are sent under their own names.
Google Analytics 4
Loads gtag and sends page_view, view_item, add_to_cart, begin_checkout and purchase. Other events are sent as custom events in snake_case.
Google Tag Manager
Loads your container and pushes events to the dataLayer in the GA4 Enhanced Ecommerce schema.
Already running a tag? PixLedger detects common tracking plugins (including GTM4WP and Site Kit) and an existing Meta Pixel or GTM container, and skips loading a second copy. The settings page tells you what it found.
Event Log
Know what your tracking actually did.
Every event is recorded locally with its status, its payload and, when something goes wrong, the reason.
Audit trail
Every event, in order.
Open PixLedger → Event Log in your WordPress admin and read what your store sent, row by row.
- Event name, with the product or page title underneath
- Provider, delivery method and a colour-coded status
- Order ID (when there is one) and a shortened visitor ID
- Expand any row to read the full JSON payload

Reasons
Failed and blocked events explain themselves.
A failed event keeps the error. A blocked event names the consent category that denied it. Hover a failed or blocked badge to read it.
- sent, failed, blocked_consent, no_provider, deduplicated
- Consent blocks show the category that said no
- No provider configured? That is logged too, so you notice

Filters
Narrow it down fast.
Combine filters, search, and jump to failures only. Clear all filters with one click.
- Provider, event and status
- Search by event name, product title or visitor ID
- Failures-only quick filter

Housekeeping
It cleans up after itself.
The log refreshes while you watch and deletes old rows on its own, so it does not grow forever.
- Auto-refresh every 10 seconds, paused when the tab is hidden
- Bulk delete, or clear all logs with a confirmation
- Events kept for 7 days by default, adjustable in settings

Consent and privacy
Built around the visitor’s choice.
With Consent Mode switched on, PixLedger checks consent before an event is sent. The log stays in your own database.
Per-provider consent
Meta Pixel needs ad_storage and ad_user_data. GA4 and GTM need analytics_storage. With Consent Mode on, if one is denied, the event is blocked and logged.
Consent Mode v2
Set the default grant state for analytics_storage, ad_storage, ad_user_data and ad_personalization.
Hashed email
Customer email addresses are stored SHA-256 hashed in the log.
Your database
The log lives in your WordPress database. There is no PixLedger account and no external dashboard.
Event catalogue
More than 20 built-in events.
Switch each one on or off in the settings. Scroll depth is off by default.
WooCommerce
ViewContent, AddToCart, RemoveFromCart, CartView, InitiateCheckout, AddPaymentInfo, AddShippingInfo, CouponApplied, Purchase, OrderRefunded, ProductReview
Clicks
OutboundLinkClick, PhoneClick, EmailClick, DownloadClick
Forms and search
FormSubmit, SearchPerformed, SearchEmpty
Pages
PageView, NotFound404, PageScrolled (25, 50, 75, 100%)
Accounts and content
UserLogin, UserRegister, CommentPosted
Custom events
Track anything else, with or without code.
Send your own events to the same log, with the same consent checks and rate limiting.
With an HTML attribute
No JavaScript needed. Add the attribute to a button or link and PixLedger tracks the click.
<a href="/pricing/" data-pxl-event="PricingViewed">See pricing</a>
With the JavaScript API
Call it from your own code, for example after a custom form or widget finishes.
pxl('track', 'DemoRequested', { plan: 'agency' });
Under the hood
Small things that keep your data clean.
Visitor ID
An anonymous 90-day cookie ties a visitor’s events together in the log. It is not tied to a name or email.
Attribution capture
UTM parameters and the click IDs fbclid, gclid, ttclid and msclkid are captured, and saved with the order on WooCommerce purchases.
Rate limiting
Repeated identical events from one visitor are capped per minute (5 by default, 1 to 100) to keep the log readable.
Works without WooCommerce
WooCommerce events load only when WooCommerce is active. Everything else works on any WordPress site.
A small frontend script
The tracker is a small vanilla JavaScript file loaded in the footer. It batches events and sends them in groups.
Developer hooks
Filters and actions with a pixledger_ prefix let you extend PixLedger.
Good to know.
The free version is deliberately simple. Here is what it does not do today.
Browser-side only
Events leave from the visitor’s browser, so ad blockers and browser privacy settings can still stop delivery. PixLedger shows you what it dispatched. Server-side delivery is planned for a Pro version.
Consent Mode is off by default
Until you switch it on in the settings, all events are allowed. When it is on, PixLedger reads its own consent cookie or a PHP filter. There is no built-in connection to specific banner plugins yet.
Consent updates apply on the next page load
If a visitor changes their choice in a banner, the new state is used from their next page, not the one they are on.
See it on your own store.
Install PixLedger, connect your pixels, and open the Event Log.