{"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-10T11:11:55","modified_gmt":"2026-09-10T11:11:55","slug":"openpixly","status":"publish","type":"plugin","link":"https:\/\/tt.wordpress.org\/plugins\/openpixly\/","author":15647522,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.1","stable_tag":"1.2.1","tested":"7.1","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-10 11:11:55","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":0,"downloads":83,"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}},"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"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[280069,986,194533,28464,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-openai","plugin_tags-pixel","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>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.\nOrders are delivered asynchronously with retries and logged under\nWooCommerce &gt; Status &gt; Logs (source: openpixly). A \"Send test event\"\nbutton validates your credentials without recording anything.<\/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>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(Meta, 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. Openpixly is developed by Unbelievable Digital and is not affiliated with or endorsed by OpenAI. Nothing is loaded or sent until a site administrator enables the OpenAI provider and enters a 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 by itself; it generates a file on your server that you choose to give to OpenAI.<\/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>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\": the pixel then starts with consent revoked and only measures after your cookie banner calls <code>window.openPixel.grantConsent()<\/code> or the WP Consent API reports the \"marketing\" category as allowed. Disclose the use of the OpenAI pixel 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 your Pixel ID and enable the pixel.<\/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.<\/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>. 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.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 WordPress and WooCommerce. OpenAI (ChatGPT Ads) pixel and Conversions API today, more providers next.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365441"}],"author":[{"embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zgrkaralar"}],"wp:attachment":[{"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365441"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365441"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365441"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365441"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365441"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}