lwplugins / lw-pixel
Lightweight tracking pixel manager for WordPress: ChatGPT Ads, Meta, GA4, Google Ads, GTM, TikTok, Pinterest, Bing, Reddit, Snapchat, X and Barion, with server-side conversions.
Fund package maintenance!
Requires
- php: >=8.0
- composer/installers: ^2.0
Requires (Dev)
- brain/monkey: ^2.6
- php-stubs/woocommerce-stubs: ^11.1
- php-stubs/wp-cli-stubs: ^2.12
- phpcompatibility/phpcompatibility-wp: ^2.1
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.0
- szepeviktor/phpstan-wordpress: ^2.0
- wp-coding-standards/wpcs: ^3.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Lightweight tracking pixel manager for WordPress, with ChatGPT Ads conversion tracking from the browser and the server.
What it does
Loads tracking pixels from the major ad networks and dispatches the standard ecommerce / conversion events for them, in the browser and from your server. No upsell, no tracking, no bloat.
ChatGPT Ads conversion tracking
- Browser pixel (
oaiq) and Conversions API (server-side), deduplicated with a shared event ID - WooCommerce —
contents_viewed,items_added,checkout_started,order_created(once per order; amounts in ISO 4217 minor units) - Leads and signups — form submissions as
lead_created, new accounts asregistration_completed; page views aspage_viewed - Custom events — your own events as
customwith a validcustom_event_name - Consent — marketing category via LW Cookie, for the pixel and the server-side events
- Optional SHA-256 hashed advanced matching, debug mode,
validate_onlyconnection test - The API key can live in
wp-config.php:define( 'LW_PIXEL_CHATGPT_API_KEY', '...' );
Admin
A React settings screen with a side navigation; the Quick search field at the top of the sidebar (Cmd/Ctrl+K) finds any section, card or setting by name and opens it.
Supported pixels
- ChatGPT Ads —
oaiqmeasurement pixel + Conversions API server-side - Meta (Facebook) Pixel —
fbqbrowser pixel + Conversion API server-side (Advanced Matching, External ID, Order Enrich) - Google Analytics 4 —
gtag.js+ Measurement Protocol server-side - Google Ads — conversion tracking
- Google Tag Manager — container +
dataLayer, optionally in the GA4 ecommerce format (view_item, add_to_cart, begin_checkout, purchase) - TikTok Pixel —
ttq - Pinterest Tag —
pintrk+ Conversions API server-side - Microsoft Bing UET —
uetq - Reddit Pixel —
rdt - Snapchat Pixel —
snaptr - X (Twitter) Pixel —
twq - Barion Pixel —
bp(WooCommerce events in Barion's format; the fraud-prevention base pixel can load before consent, the shop events wait for marketing consent, the banner answer is sent asgrantConsent/rejectConsent; the Barion Payment Gateway's own pixel is switched off)
Supported events
PageView(auto, every page)ViewContent— single posts/pages and WooCommerce productsSearch— search results pagesLead/Contact— form submissionsAddToCart,InitiateCheckout,AddPaymentInfo,Purchase,ViewCart,ViewCategory— WooCommerceLogin,Signup(CompleteRegistration),Comment— server-side, replayed on the next page loadScroll,TimeOnPage,Download— auto-tracked frontend events with configurable thresholdsContact(tel:/mailto: link clicks),Lead(thank-you page match) — auto-tracked, off by default- Custom events — define your own with the editor (page_load / click / scroll / time triggers, URL patterns)
Server-side events
- Meta Conversion API — every standard event (PageView, ViewContent, Search, Lead, Contact, AddToCart, InitiateCheckout, AddPaymentInfo, Purchase, CompleteRegistration)
- ChatGPT Ads Conversions API — the same events as the ChatGPT Ads pixel
- Pinterest Conversions API — purchase (
checkout, once per order), add to cart, page visit, category view, lead, search and signup; ad account ID + conversion access token (orLW_PIXEL_PINTEREST_TOKENinwp-config.php), the_epikclick ID, optional hashed advanced matching, test mode (?test=true) and a connection test. A started checkout is not sent to Pinterest: itscheckoutevent is the completed purchase. - GA4 Measurement Protocol — the purchase; all events when GA4 is loaded by something else (e.g. Tag Manager), since GA4 does not deduplicate against
gtag.js - Deduplication — the browser and server copies share one event ID (Meta
eventID, GA4event_idparameter, ChatGPT Ads and Pinterestevent_id); a purchase uses an order-based ID and is sent once per order and provider - Consent — each provider's server copy follows the visitor's consent for that pixel
- Non-blocking — sent after the response is flushed, or in the background via Action Scheduler; nothing sent is logged
- Cache-safe — page-level events go server-side only on pages that a page cache cannot share between visitors
Integrations
Form plugins
Lead events fire automatically when any of these forms are submitted:
- Contact Form 7
- WPForms
- Elementor Pro Forms
- Gravity Forms
- Forminator
- Formidable Forms
- Ninja Forms
- Fluent Forms
- WS Form
Other
- WooCommerce — full ecommerce funnel (ViewProduct, ViewCategory, ViewCart, AddToCart, InitiateCheckout, AddPaymentInfo, Purchase) with idempotent thank-you-page Purchase
- LW Cookie — granular consent-based pixel loading via
lw_cookie_is_category_allowed - LW Site Manager — managed via the Abilities API (get-options, set-options, list-pixels)
Compliance
- Medical traffic mode — strips PII from event payloads and from server-side user data (Meta CAPI, ChatGPT Ads, Pinterest, GA4 MP) (HIPAA-friendly)
- Limited Data Use (LDU) — adds Meta data_processing_options for California / CCPA (auto-resolve or force California) and marks Pinterest Conversions API events with
opt_out_type: LDP
Migration
Built-in settings importer under LW Plugins → Pixel → Tools: it detects a supported previous pixel plugin, shows a preview diff and imports in one click (also available as wp lw-pixel migrate).
Installation
composer require lwplugins/lw-pixel
Or download a release ZIP from the GitHub releases page.
Configuration
After activation, go to LW Plugins → Pixel and add your pixel IDs. Each provider has its own settings, including its server-side options.
License
GPL-2.0-or-later