{"id":365441,"date":"2026-09-10T09:08:48","date_gmt":"2026-09-10T09:08:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/open-pixel\/"},"modified":"2026-09-20T19:03:17","modified_gmt":"2026-09-20T19:03:17","slug":"openpixly","status":"publish","type":"plugin","link":"https:\/\/pcm.wordpress.org\/plugins\/openpixly\/","author":15647522,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Openpixly \u2013 Conversion Tracking & Product Feed for OpenAI Ads","header_author":"Unbelievable Digital","header_description":"Conversion pixel manager for WordPress and WooCommerce. Ships the OpenAI (ChatGPT Ads) Measurement Pixel and Conversions API today: page views, product views, add to cart, checkout, purchases and registrations. Meta, Google and more providers plug into the same event bus.","assets_banners_color":"cccccd","last_updated":"2026-09-20 19:03:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/unbelievable-digital\/openpixly","header_author_uri":"https:\/\/unbelievable.digital","rating":0,"author_block_rating":0,"active_installs":50,"downloads":376,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"zgrkaralar","date":"2026-09-10 09:08:22","revision":3689603},"1.2.1":{"tag":"1.2.1","author":"zgrkaralar","date":"2026-09-10 11:11:55","revision":3689796},"1.3.0":{"tag":"1.3.0","author":"zgrkaralar","date":"2026-09-20 19:03:17","revision":3704553}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689605,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689605,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3689605,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3689605,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0","1.2.1","1.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[280069,986,207498,194533,286],"plugin_category":[45],"plugin_contributors":[194570,194569],"plugin_business_model":[],"class_list":["post-365441","plugin","type-plugin","status-publish","hentry","plugin_tags-chatgpt-ads","plugin_tags-conversion-tracking","plugin_tags-meta-pixel","plugin_tags-openai","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-unbelievabledigital","plugin_contributors-zgrkaralar","plugin_committers-zgrkaralar"],"banners":{"banner":"https:\/\/ps.w.org\/openpixly\/assets\/banner-772x250.png?rev=3689605","banner_2x":"https:\/\/ps.w.org\/openpixly\/assets\/banner-1544x500.png?rev=3689605","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/openpixly\/assets\/icon-128x128.png?rev=3689605","icon_2x":"https:\/\/ps.w.org\/openpixly\/assets\/icon-256x256.png?rev=3689605","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Openpixly installs the official ChatGPT Ads Measurement Pixel on every\npage and sends the standard conversion events for you:<\/p>\n\n<ul>\n<li><code>page_viewed<\/code> on every page.<\/li>\n<li><code>contents_viewed<\/code> on WooCommerce product pages.<\/li>\n<li><code>items_added<\/code> on add to cart (classic, AJAX and block\/Store API carts).<\/li>\n<li><code>checkout_started<\/code> on the checkout page.<\/li>\n<li><code>order_created<\/code> on the order-received page, and again from the server\nthrough the Conversions API with the same event ID so OpenAI deduplicates it.<\/li>\n<li><code>registration_completed<\/code> when a user or customer registers.<\/li>\n<\/ul>\n\n<p>Amounts are sent as integers in the currency's ISO 4217 minor unit, customer\nidentifiers are normalized and SHA-256 hashed on the server before they reach\nthe browser, and a <code>&lt;noscript&gt;<\/code> image tag covers visitors without JavaScript.<\/p>\n\n<h4>Meta (Facebook &amp; Instagram) pixel<\/h4>\n\n<p>Enable the Meta provider and enter your Pixel ID to send the same events to\nMeta: <code>PageView<\/code>, <code>ViewContent<\/code>, <code>AddToCart<\/code>, <code>InitiateCheckout<\/code>, <code>Purchase<\/code>\nand <code>CompleteRegistration<\/code>, with <code>content_ids<\/code> \/ <code>contents<\/code> that match the\nMeta catalog feed. Advanced matching data is normalized and SHA-256 hashed on\nthe server. With a Conversions API access token, <code>Purchase<\/code> is also sent from\nthe server with the same event ID, the <code>_fbp<\/code> \/ <code>_fbc<\/code> cookies captured at\ncheckout, and the customer's IP address and user agent, so Meta deduplicates\nbrowser and server events. Each provider has its own \"Track WooCommerce\nevents\" switch.<\/p>\n\n<h4>Consent<\/h4>\n\n<p>Choose \"Require consent first\" to initialize the pixel with consent set to\n    false. Grant consent from your cookie banner with <code>window.openPixel.grantConsent()<\/code>;\nthe WP Consent API \"marketing\" category is detected automatically.<\/p>\n\n<h4>Conversions API<\/h4>\n\n<p>Enable it and paste the API key from the Conversions tab of Ads Manager (for\nMeta: the access token from Events Manager). Orders are delivered\nasynchronously with retries and logged under WooCommerce &gt; Status &gt; Logs\n(source: openpixly). The OpenAI \"Send test event\" button validates your\ncredentials without recording anything; the Meta one sends the event with\nyour test event code so it only shows under Events Manager &gt; Test events.<\/p>\n\n<h4>Product feed for ChatGPT Ads<\/h4>\n\n<p>The Product feed tab builds a catalog file from your WooCommerce products in\nthe OpenAI product feed format (or the Google-compatible profile) as CSV, TSV\nor JSONL: one row per simple product or variation, with group_id and\nvariant_dict for variants, prices as \"79.99 USD\", availability, images,\nbrand, category, GTIN\/MPN and is_ads_eligible. The file is rebuilt on a\nschedule and served at a private tokenized URL you can hand to OpenAI, or\ndownloaded for upload to the SFTP location shown in Ads Manager &gt; Feeds.<\/p>\n\n<h4>Meta catalog feed<\/h4>\n\n<p>Switch on \"Also build a Meta catalog feed\" and the same build writes a second\nCSV in Meta's catalog format (id, title, description, availability, condition,\nprice, link, image_link, brand, sale_price, item_group_id, ...), served at its\nown private URL. Paste it in Commerce Manager &gt; Catalog &gt; Data sources &gt; Data\nfeed &gt; Scheduled feed. Item ids equal the pixel's content_ids, which is what\nAdvantage+ catalog ads need.<\/p>\n\n<h4>Extensible<\/h4>\n\n<p>The plugin is a small pixel manager: integrations emit normalized events on\na bus and each provider maps them to its own API. Additional providers\n(Google Ads, TikTok, ...) can be registered with the\n    openpixel_pixel_providers filter.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin is an integration with OpenAI's ChatGPT Ads measurement services and, optionally, Meta's (Facebook &amp; Instagram) measurement services. Openpixly is developed by Unbelievable Digital and is not affiliated with or endorsed by OpenAI or Meta. Nothing is loaded or sent to a service until a site administrator enables that provider and enters its Pixel ID.<\/p>\n\n<p><strong>OpenAI Measurement Pixel (browser SDK)<\/strong> \u2014 https:\/\/bzrcdn.openai.com\/sdk\/oaiq.min.js and https:\/\/bzrcdn.openai.com\/pixel-config\/ \u2014 loaded on every front-end page while the provider is enabled, to measure ad conversions. The SDK sends measurement events to https:\/\/bzr.openai.com: page views (page id and title), product views, add-to-cart, checkout and purchase events (WooCommerce product ids, names, quantities and amounts), and registrations. The SDK reads and sets first-party cookies (<code>__oppref<\/code>, <code>__obref<\/code>) for click attribution and may collect the visitor's IP address and user agent as part of the request. When \"Send hashed customer data\" is on, the plugin also passes SHA-256 hashes of the logged-in user's or the order's billing email, phone, first and last name, and the plain-text billing country, city, region and postal code, to improve conversion matching. Raw email, phone or names are never sent.<\/p>\n\n<p><strong>OpenAI image tag (no-JavaScript fallback)<\/strong> \u2014 https:\/\/bzr.openai.com\/v1\/sdk\/events \u2014 when enabled, a 1x1 image records a page view for visitors without JavaScript. It carries only the Pixel ID and event name.<\/p>\n\n<p><strong>OpenAI Conversions API (server-to-server)<\/strong> \u2014 https:\/\/bzr.openai.com\/v1\/events \u2014 only when enabled with your Conversions API key. When an order is paid, the plugin sends the order id, total, currency and line items (product ids, names, quantities, amounts, variant attributes), the SHA-256 hashed billing email, phone, first and last name, the billing country, city, region and postal code, the customer's IP address and user agent, and the attribution cookie values captured at checkout. The admin \"Send test event\" button sends a synthetic event with <code>validate_only<\/code> set, which OpenAI validates but does not store.<\/p>\n\n<p>The product feed feature does not contact OpenAI or Meta by itself; it generates files on your server that you choose to give to them.<\/p>\n\n<p>Service provider: OpenAI, L.L.C. Terms of use: https:\/\/openai.com\/policies\/terms-of-use\/ \u2014 Privacy policy: https:\/\/openai.com\/policies\/privacy-policy\/ \u2014 ChatGPT Ads developer documentation: https:\/\/developers.openai.com\/ads<\/p>\n\n<p><strong>Meta Pixel (browser SDK)<\/strong> \u2014 https:\/\/connect.facebook.net\/en_US\/fbevents.js \u2014 loaded on every front-end page while the Meta provider is enabled, to measure ad conversions. The SDK sends events to https:\/\/www.facebook.com\/tr: page views, product views, add-to-cart, checkout and purchase events (WooCommerce product ids, names, quantities and amounts), and registrations. The SDK reads and sets first-party cookies (<code>_fbp<\/code>, <code>_fbc<\/code>) and may collect the visitor's IP address and user agent as part of the request. When \"Send hashed customer data\" is on, the plugin also passes SHA-256 hashes of the logged-in user's or the order's billing email, phone, first and last name, city, region, postal code, country and customer id (Meta advanced matching). Raw values are never sent.<\/p>\n\n<p><strong>Meta image tag (no-JavaScript fallback)<\/strong> \u2014 https:\/\/www.facebook.com\/tr \u2014 when enabled, a 1x1 image records a PageView for visitors without JavaScript. It carries only the Pixel ID and event name.<\/p>\n\n<p><strong>Meta Conversions API (server-to-server)<\/strong> \u2014 https:\/\/graph.facebook.com\/ \u2014 only when enabled with your access token. When an order is paid, the plugin sends the order id, total, currency and line items (product ids, quantities, unit prices), the SHA-256 hashed billing email, phone, first and last name, city, region, postal code, country and customer id, the customer's IP address and user agent, and the <code>_fbp<\/code> \/ <code>_fbc<\/code> cookie values captured at checkout. The admin \"Send test event\" button sends a synthetic event carrying your test event code, which Meta shows under Test events and does not count as a conversion.<\/p>\n\n<p>Service provider: Meta Platforms, Inc. \/ Meta Platforms Ireland Ltd. Meta Business Tools terms: https:\/\/www.facebook.com\/legal\/terms\/businesstools \u2014 Privacy policy: https:\/\/www.facebook.com\/privacy\/policy\/ \u2014 Developer documentation: https:\/\/developers.facebook.com\/docs\/meta-pixel<\/p>\n\n<p><strong>Consent.<\/strong> Measurement is opt-in for the site owner (disabled until configured) and administrators are excluded by default. To make it opt-in for visitors, choose \"Require consent first\" on each provider: the pixel then starts with consent revoked (<code>oaiq(\"consent\", false)<\/code> \/ <code>fbq(\"consent\", \"revoke\")<\/code>) and only measures after your cookie banner calls <code>window.openPixel.grantConsent()<\/code> or the WP Consent API reports the \"marketing\" category as allowed. Server-side Conversions API events are sent for paid orders whenever that option is enabled; leave it off if your legal basis requires browser consent for them too. Disclose the pixels you use in your site's privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>openpixly<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to Settings &gt; Pixel Manager, enter the Pixel ID of the provider(s) you use and enable them.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20find%20my%20pixel%20id%20and%20conversions%20api%20key%3F\"><h3>Where do I find my Pixel ID and Conversions API key?<\/h3><\/dt>\n<dd><p>In ChatGPT Ads Manager, Conversions tab. For Meta: Events Manager &gt; Data sources (Pixel \/ dataset ID) and the dataset's Settings &gt; Conversions API &gt; Generate access token.<\/p><\/dd>\n<dt id=\"my%20site%20uses%20a%20content%20security%20policy.\"><h3>My site uses a Content Security Policy.<\/h3><\/dt>\n<dd><p>Allow <code>script-src https:\/\/bzrcdn.openai.com<\/code>, <code>connect-src https:\/\/bzr.openai.com https:\/\/bzrcdn.openai.com<\/code>\nand <code>img-src https:\/\/bzr.openai.com<\/code>. For the Meta pixel add <code>script-src https:\/\/connect.facebook.net<\/code> and <code>connect-src<\/code> \/ <code>img-src https:\/\/www.facebook.com<\/code>. Use the <code>openpixel_script_nonce<\/code> filter to add your nonce to the inline snippets.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%20hpos%3F\"><h3>Does it work with WooCommerce HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin only uses the WooCommerce CRUD order API and declares HPOS compatibility.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: Meta (Facebook &amp; Instagram) Pixel provider: PageView, ViewContent, AddToCart, InitiateCheckout, Purchase, CompleteRegistration and custom events, hashed advanced matching, consent mode, noscript fallback.<\/li>\n<li>New: Meta Conversions API: server-side Purchase with the same event ID as the browser event, <code>_fbp<\/code> \/ <code>_fbc<\/code> captured at checkout, async delivery with retries, test event code support.<\/li>\n<li>New: Meta catalog feed (CSV) built alongside the OpenAI product feed, at its own private URL, with ids that match the pixel's content_ids.<\/li>\n<li>Each provider's \"Track WooCommerce events\" switch now only affects that provider.<\/li>\n<li>Fix: the browser de-duplication of replayed events is now per provider, so two pixels sharing an event ID both receive it.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Product feed URL is now a plain path (https:\/\/your-site\/openpixly-feed\/\/products.csv) so it can be pasted into Ads Manager \"Connect your feed via URL\", which rejects query-string URLs. The old ?openpixel_feed= URL keeps working.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Renamed to Openpixly (slug openpixly). Not affiliated with OpenAI.<\/li>\n<li>Readme: external services, data sent and consent documented.<\/li>\n<li>Product feed: WooCommerce catalog export in the OpenAI product feed format or Google-compatible profile (CSV\/TSV\/JSONL), variants with group_id\/variant_dict, scheduled rebuilds, private tokenized URL, download and URL rotation.<\/li>\n<li>Fix: Conversions API deliveries failed with \"no callbacks are registered\" when run from Action Scheduler.<\/li>\n<li>page_viewed on the order-received page now reports \"order-received\" instead of the Checkout page.<\/li>\n<li>No duplicate contents_viewed after a classic add-to-cart reload.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Native Measurement Pixel loader, page_viewed, consent mode, debug mode, noscript image tag.<\/li>\n<li>WooCommerce events: contents_viewed, items_added, checkout_started, order_created, registration_completed.<\/li>\n<li>Advanced matching with server-side normalization and SHA-256 hashing.<\/li>\n<li>Conversions API: server-side order_created with deduplication, async delivery, retries, logging, validate-only test.<\/li>\n<li>Provider-agnostic event bus for future Meta\/Google providers.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Conversion pixel manager for WooCommerce: OpenAI (ChatGPT Ads) and Meta pixels, their Conversions APIs, and product feeds for both catalogs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365441"}],"author":[{"embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zgrkaralar"}],"wp:attachment":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365441"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365441"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365441"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365441"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365441"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}