Skip to Content
PluginsLW Pixel

LW Pixel

Lightweight tracking pixel manager for WordPress, with ChatGPT Ads conversion tracking from the browser and the server.

Overview

Requires WordPress6.6+
Requires PHP8.0+
Tested up to7.1
LicenseGPL-2.0-or-later
GitHublwplugins/lw-pixel 

LW Pixel loads the tracking pixels of the major ad networks and dispatches the standard ecommerce and conversion events for them, in the browser and from your server. No upsell, no tracking, no bloat.

Quick Start

  1. Install and activate the plugin
  2. Go to LW Plugins > Pixel
  3. Add your pixel IDs; each provider has its own settings, including its server-side options
  4. For WooCommerce shops the ecommerce events fire automatically

Installation

Via Composer

bash
composer require lwplugins/lw-pixel

Manual Installation

  1. Download the plugin from GitHub Releases 
  2. Upload the lw-pixel folder to /wp-content/plugins/
  3. Activate via the Plugins menu in WordPress admin

Supported pixels

  • ChatGPT Ads: oaiq measurement pixel and Conversions API server-side
  • Meta (Facebook) Pixel: fbq browser pixel and Conversion API server-side (Advanced Matching, External ID, Order Enrich)
  • Google Analytics 4: gtag.js and Measurement Protocol server-side
  • Google Ads: conversion tracking
  • Google Tag Manager: container and dataLayer
  • TikTok Pixel: ttq
  • Pinterest Tag: pintrk
  • Microsoft Bing UET: uetq
  • Reddit Pixel: rdt
  • Snapchat Pixel: snaptr
  • X (Twitter) Pixel: twq
  • Barion Pixel: bp (WooCommerce events in Barion’s format)

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 as registration_completed; page views as page_viewed
  • Custom events: your own events as custom with a valid custom_event_name
  • Consent: marketing category via LW Cookie, for the pixel and the server-side events
  • Optional SHA-256 hashed advanced matching, debug mode and a validate_only connection test
  • The API key can live in wp-config.php:
php
define( 'LW_PIXEL_CHATGPT_API_KEY', '...' );

Events

  • PageView (automatic, every page)
  • ViewContent: single posts and pages, and WooCommerce products
  • Search: search results pages
  • Lead / Contact: form submissions
  • AddToCart, InitiateCheckout, AddPaymentInfo, Purchase, ViewCart, ViewCategory: WooCommerce
  • Login, Signup (CompleteRegistration), Comment: server-side, replayed on the next page load
  • Scroll, TimeOnPage, Download: auto-tracked frontend events with configurable thresholds
  • Contact (tel: and mailto: link clicks) and Lead (thank-you page match): auto-tracked, off by default
  • Custom events: define your own in the editor (page_load, click, scroll and 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
  • GA4 Measurement Protocol: the purchase; all events when GA4 is loaded by something else (for example Tag Manager), since GA4 does not deduplicate against gtag.js
  • Deduplication: the browser and server copies share one event 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

With LW Cookie (or any plugin that exposes the lw_cookie_is_category_allowed filter) pixels load only after the visitor accepts the matching category. The Consent page lets you choose the consent category of every pixel.

The Barion base pixel is used for payment fraud prevention, so by default it loads for every visitor. Its shop events wait for marketing consent, and the visitor’s answer in the LW Cookie banner is passed to Barion (grantConsent / rejectConsent). Turn off Base pixel without consent to make the whole pixel wait for consent. While it is on, do not block pixel.barion.com in your cookie banner.

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: the full ecommerce funnel, with an idempotent thank-you-page Purchase
  • LW Cookie: consent-based pixel loading
  • 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, GA4 MP)
  • Limited Data Use (LDU): adds Meta data_processing_options for California / CCPA (auto-resolve or force California)

Migration

The built-in settings importer under LW Plugins > Pixel > Tools detects a supported previous pixel plugin, shows a preview diff and imports in one click. It is also available from the terminal as wp lw-pixel migrate.

WP-CLI

bash
wp lw-pixel status wp lw-pixel list [--configured] [--format=<format>] wp lw-pixel config list|get|set|reset wp lw-pixel migrate list|preview|run
  • status: version, configured-pixel count, consent mode, compliance flags, Meta CAPI and GA4 MP state
  • list: every registered pixel with its enabled and configured flags
  • config: read and change options; booleans accept true/false/1/0/yes/no/on/off, array options accept comma-separated values
  • migrate: run the settings importer

FAQ

How do I set up ChatGPT Ads?

  1. Copy your pixel ID from the ChatGPT Ads Manager.
  2. In LW Plugins > Pixel, open the ChatGPT Ads settings, enable the pixel, paste the pixel ID and save.
  3. For server-side tracking, create a Conversions API key in the Ads Manager, paste it (or define LW_PIXEL_CHATGPT_API_KEY in wp-config.php), turn on Send events server-side via Conversion API and use the connection test.
  4. While testing, turn on debug mode to see every pixel call in the browser console. Turn it off on a live site.

If your site sends a Content Security Policy, allow https://bzrcdn.openai.com (script-src, connect-src) and https://bzr.openai.com (connect-src, img-src).

Does it slow down the visitor?

Server-side events are sent after the page was delivered, or in the background through Action Scheduler, and never slow down the visitor.