Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/besthand/pixel-for-openai-ads/releases/download/release/pixel-for-openai-ads-1.1.1.zip將 WooCommerce 商店的商品瀏覽、加入購物車、結帳與購買行為,串接至 ChatGPT Ads Measurement Pixel,協助衡量 ChatGPT 廣告帶來的網站轉換。
本外掛依據 OpenAI Measurement Pixel 官方文件 開發,以 WooCommerce 為主要整合對象,提供台灣繁體中文設定介面,並可選擇搭配伺服器端 Conversions API。本專案為獨立開發,與 OpenAI 無隸屬關係。
作者:手哥 · 網站:硬是要學 · 電子郵件:besthand@soft4fun.net
主要功能
- WooCommerce 自動事件:商品瀏覽、加入購物車、開始結帳、完成購買與前台帳號註冊。
- 瀏覽器與伺服器事件:載入 Measurement Pixel SDK;選擇啟用 Conversions API 後,由伺服器傳送對應事件,並共用事件 ID 以供去重。
- 商品與訂單資料:帶入商品 ID、名稱、數量、金額及幣別,將一般金額換算為最小貨幣單位。
- 自訂事件:依網址規則追蹤詢價完成等行為,也可透過 PHP 串接自己的流程。
- 訪客同意管理:搭配 WordPress Consent API 與相容的 Cookie 同意工具,依所選同意類別控制追蹤。
- 連線與診斷工具:檢查已儲存的連線設定,查看最近 40 筆伺服器傳送紀錄,支援篩選、分頁與每頁筆數設定。
- WooCommerce 商品目錄:預覽、驗證、下載 UTF-8 CSV,或使用 Advertiser API 設定 SFTP 定期同步,並查詢平台處理結果。
環境需求
| 項目 | 最低需求 |
|---|---|
| PHP | 8.0 |
| WordPress | 5.8 |
| WooCommerce | 6.0;商店自動事件需啟用 WooCommerce |
| OpenAI 廣告設定 | Ads Manager 提供的 Pixel ID;啟用伺服器事件時另需 Conversions API 金鑰 |
若未啟用 WooCommerce,仍可使用頁面瀏覽、網址規則及已支援的其他整合。Easy Digital Downloads 購買事件需啟用對應外掛。
安裝與初次設定
- 將本專案資料夾命名為
pixel-for-openai-ads,放入wp-content/plugins/。 - 到 WordPress「外掛」頁面啟用 Pixel for OpenAI Ads,並確認 WooCommerce 已啟用。
- 開啟「OpenAI 廣告追蹤 → 一般設定」,填入 Ads Manager 提供的 Pixel ID,再按「儲存設定」。
- 如需由伺服器傳送事件,填入 Conversions API 金鑰,開啟「啟用伺服器 Conversions API」並儲存。Pixel ID 與金鑰的取得方式見 Conversions API 官方文件。
- 到「事件設定」選擇需要的自動事件;頁面瀏覽開關也在此分頁。
- 如需等待訪客同意,先設定 WordPress Consent API 與相容的 Cookie 同意工具,再啟用同意限制及選擇類別。
- 到「總覽」執行連線測試,接著以測試商品完成一次瀏覽、加入購物車、結帳與付款流程,查看瀏覽器及「診斷紀錄」。
填入 Pixel ID 後,外掛會負責載入 SDK 與初始化。若網站已有相同 Pixel 的手動程式碼或標籤管理器設定,請整合成單一追蹤來源,避免重複初始化與重複事件。
WooCommerce 事件對應
| 商店行為 | OpenAI 事件 | 外掛的觸發方式 |
|---|---|---|
| 瀏覽頁面 | page_viewed |
啟用頁面瀏覽開關後,由瀏覽器傳送 |
| 瀏覽商品 | contents_viewed |
商品頁面顯示時帶入商品資料 |
| 加入購物車 | items_added |
WooCommerce 加入購物車成功時,帶入商品與數量 |
| 開始結帳 | checkout_started |
進入有商品的結帳頁面;依商品與數量組合避免同一購物車重複觸發 |
| 完成購買 | order_created |
已付款訂單的完成頁面,或訂單轉為 processing/completed 時處理 |
| 前台帳號註冊 | registration_completed |
WordPress/WooCommerce 前台建立帳號時處理 |
商店事件使用的資料格式與名稱可對照 OpenAI Supported Events。自動頁面瀏覽只由瀏覽器傳送;其餘整合事件可依設定由瀏覽器與伺服器處理。
購買事件的判斷
order_created 以符合 WooCommerce 已付款狀態的訂單為準。預設略過後台建立的訂單與總額為零的訂單;單純建立待付款訂單不會被當成完成購買。
同一筆購買的瀏覽器與伺服器事件使用 order_<訂單 ID>。外掛會在結帳時保存可用的同意與廣告歸因資訊,供後續付款狀態變更使用。伺服器傳送仍需啟用 Conversions API、具備有效設定,且符合保存的同意狀態。
程式碼已加入傳統結帳與 Store API 結帳的訂單情境擷取,並宣告 WooCommerce HPOS 與購物車/結帳區塊相容性。本機已用 WooCommerce 10.2.2、HPOS、傳統及區塊結帳實測,且在 Ads Manager 確認收到四種主要商店事件。實際商店的付款外掛、佈景主題與歸因結果仍需在自己的環境驗證。
結帳完成、清空購物車或移除最後一項商品後,結帳去重紀錄會重設。因此下一次購買相同商品仍會觸發 checkout_started,同一次結帳的重新整理則不會重複觸發。
設定介面
| 分頁 | 用途 |
|---|---|
| 總覽 | 查看 Pixel、伺服器事件與同意設定狀態,執行連線測試,檢查本機轉換訊號涵蓋率 |
| 一般設定 | 設定 Pixel ID、API 金鑰、同意管理、使用者識別資料及進階選項 |
| 事件設定 | 開關自動事件,新增網址規則與自訂事件 |
| 商品目錄 | 廣告帳戶連線、上傳排程、處理紀錄、商家與市場設定、商品檢查及 CSV 下載 |
| 診斷紀錄 | 查看最近 40 筆伺服器傳送結果,篩選成功/失敗並切換頁數 |
一般設定中的主要選項:
| 選項 | 實際作用 |
|---|---|
| Pixel ID | 決定瀏覽器 SDK 與伺服器事件使用的 Pixel;空白時不追蹤 |
| 啟用伺服器 Conversions API | 控制伺服器傳送;需同時填入 Pixel ID 與 API 金鑰 |
| Conversions API 金鑰 | 只儲存在 WordPress 網站,不注入前端;留空保留舊值,勾選移除才刪除 |
| 等待訪客同意後追蹤 | 搭配 WordPress Consent API,等待所選類別的同意 |
| 同意類別 | 指定要檢查的 Consent API 類別,預設為 marketing |
| 附加使用者識別資料 | 控制本外掛主動附加的電子郵件與使用者 ID 雜湊 |
| 附加 WooCommerce 帳單資料 | 在購買伺服器事件中附加帳單識別資料;需先開啟使用者識別資料 |
| 從可信任的代理伺服器取得 IP | 選擇是否採用代理伺服器提供的 IP header |
| 偵錯模式 | 開啟 SDK 與外掛的瀏覽器主控台紀錄 |
各分頁只儲存自己的設定。網址規則驗證失敗時,整筆事件設定會保留原值,介面會顯示錯誤原因。
自訂事件
透過網址規則設定
在「事件設定 → 網址規則與自訂事件」按「新增規則」。例如,詢價完成後導向專屬頁面:
| 欄位 | 範例 |
|---|---|
| 比對方式 | 網址完全相符 |
| 網址或路徑 | /quote-complete/ |
| 傳送事件 | 自訂事件(custom) |
| 自訂事件名稱 | quote_requested |
| 金額與幣別 | 選填,例如 100.00/TWD |
每次符合規則的頁面請求都會觸發事件。名稱限 1 至 64 個小寫英文字母、數字、底線或連字號,開頭與結尾需為英文字母或數字,且不可與內建事件同名。最多可設定 50 筆規則;金額與 3 碼幣別需一起填寫。
以 / 開頭的規則只比對路徑,含 ? 時也比對查詢字串。完整網址規則會比對網域、路徑及查詢字串;「完全相符」會忽略 HTTP/HTTPS 與結尾斜線。比對不區分大小寫,並支援網址解碼。
網址規則獨立於自動事件開關,仍遵守 Pixel ID 與同意設定。請將規則涉及的頁面排除於整頁快取;WooCommerce 購買事件已由訂單流程處理,通常不需要再為訂單完成頁新增購買規則。
透過 PHP 整合
在外掛載入完成後,於自己的前台流程呼叫:
if ( class_exists( 'PFOA_Tracker' ) ) {
PFOA_Tracker::instance()->track(
'custom',
array(
'type' => 'custom',
'amount' => 10000,
'currency' => 'TWD',
),
array( 'custom_name' => 'quote_requested' )
);
}
PHP 呼叫使用最小貨幣單位,範例中的 10000 代表 100.00 TWD;設定介面則使用一般金額,由外掛換算。此呼叫沿用事件 ID 與同意檢查流程。若在付款通知或背景工作中觸發,需由整合程式提供適當的事件情境。
WooCommerce 商品 feed
到「OpenAI 廣告追蹤 → 商品目錄」填入實際商家名稱及商品沒有品牌資料時使用的預設品牌。商家網址、退貨政策及市場欄位依實際資料與帳號設定填寫。儲存後可依狀態、商品名稱或 ID 篩選,切換頁數與每頁筆數,再下載 CSV。
feed 與 Pixel 設定獨立,不需要 Pixel ID 或 Conversions API 金鑰。商品 ID 預設沿用 WooCommerce ID;每個變體各一列,帶入父商品群組 ID 與選項資料。保留公開目錄中的缺貨商品,排除草稿、私人、設有密碼、目錄隱藏及不支援的商品類型。必要欄位缺漏、網址格式不符或商品 ID 重複時,顯示原因並阻止整檔匯出。
需要自動上傳時,填入 Advertiser API 金鑰並儲存,依序測試帳戶、建立或連結上傳連線,再啟用每小時、每 12 小時或每日同步。金鑰與 SFTP 密碼加密保存,SSH 指紋變更會阻擋傳送。完整 CSV 通過檢查後才上傳;傳送成功與平台處理結果分開顯示。網址檢查只驗證格式,商品頁與圖片仍須公開可存取。市場與幣別依帳戶核准內容為準。操作及限制見 商品目錄說明。
欄位、價格、排除條件與操作方式見 商品 feed 使用說明,格式依據 OpenAI Stable Products 及 Ads Product Feeds。
延伸整合
| 整合 | 事件 |
|---|---|
| Easy Digital Downloads 3.0 以上 | 購買的 order_created |
Easy Digital Downloads 整合只有在對應外掛與功能啟用後才會觸發,涵蓋率畫面也會顯示目前偵測結果。
同意與資料傳送
同意限制需搭配 WordPress Consent API 與相容的 Cookie 同意工具。啟用同意限制但未偵測到 Consent API 時,Pixel 與伺服器事件會停止傳送。請先安裝並設定 Consent API 與相容的 Cookie 同意工具;關閉此限制則會依追蹤設定直接傳送事件。
啟用伺服器事件時,資料可能包含事件名稱、商品與訂單金額、來源網址、IP 位址、瀏覽器資訊,以及可用的廣告歸因識別。開啟使用者識別或帳單資料後,也會附加相應的雜湊識別欄位;帳單中的國家、城市與郵遞區號不經雜湊。
「附加使用者識別資料」只控制本外掛主動附加的欄位。SDK 自身的進階比對行為,請另依 Measurement Pixel 官方文件 與 Pixel 設定確認。
外掛使用的服務與暫存資料:
僅在購買伺服器追蹤已設定並啟用時擷取訂單同意情境。未同意的情境只保存同意未通過的狀態,不擷取 IP、瀏覽器資訊或歸因 Cookie。
外掛設定、最近 40 筆診斷紀錄與使用計數會保留至清除或解除安裝;連線測試結果保存 60 秒。解除安裝會清除各網站的設定與短期事件/連線測試暫存。WooCommerce/EDD 訂單中的同意、歸因情境及事件傳送標記依商店訂單保留政策保存,解除安裝不刪除訂單中繼資料;已同意的 EDD 情境包含 IP 與瀏覽器資訊。已送到 OpenAI 的資料由其政策管理,解除安裝不會刪除外部資料。WordPress 隱私權政策工具已提供建議說明文字,請依實際功能與保留期限調整。
https://bzrcdn.openai.com/sdk/oaiq.min.js:載入瀏覽器 SDK。https://bzr.openai.com:瀏覽器事件傳送服務。https://bzr.openai.com/v1/events:伺服器 Conversions API。- SDK 的第一方歸因 Cookie,以及外掛的
pfoa_vid訪客事件暫存佇列。
請依實際啟用的功能更新網站隱私權說明。若網站使用 CSP,SDK 與事件連線的來源設定可參照官方文件的 CSP 章節。
檢查與常見問題
連線測試成功,就代表轉換已記錄嗎?
連線測試使用已儲存的設定,API 請求採 validate_only=true。它用於檢查連線與驗證,不建立正式轉換;實際接收結果需以真實事件及 Ads Manager 確認。本機涵蓋率也只表示目前設定與整合狀態。
為什麼診斷紀錄沒有頁面瀏覽?
自動頁面瀏覽由瀏覽器傳送,診斷紀錄只記錄伺服器事件。可開啟偵錯模式,從瀏覽器主控台及網路請求檢查 Pixel。
為什麼訂單沒有購買事件?
確認訂單已符合付款狀態、購買事件開關已開啟,並檢查是否為後台建立或零元訂單。若查看的是伺服器紀錄,還需確認 Conversions API、金鑰與訂單保存的同意狀態。
結帳 NT$1,為什麼事件 JSON 的 amount 是 100?
OpenAI 的 Pixel 與 Conversions API 均要求金額使用 ISO 4217 最小貨幣單位的整數。TWD 的標準小數位數為 2,因此 amount: 100、currency: "TWD" 代表 NT$1.00;NT$100.00 則傳送 amount: 10000。這個規則依貨幣標準處理,不隨 WooCommerce 的價格顯示小數位數改變。規格見 OpenAI Supported Events,TWD 小數位數可查 SIX 官方 ISO 4217 清單的 List One。
最外層 amount 是事件總額,contents[].amount 是商品金額;兩者各描述自己的範圍,不應加在一起解讀。網址規則的金額欄請填一般金額,例如 NT$1 填 1.00,外掛會換算;直接呼叫 PHP 追蹤介面時則使用最小貨幣單位。
如何避免快取造成事件異常?
將結帳、訂單完成頁及網址規則涉及的頁面排除於整頁快取,避免略過 PHP 或重複使用帶有事件 ID 的頁面。使用 JavaScript 延遲載入、CSP 或其他最佳化工具時,也請實測 SDK 與事件是否正常執行。
驗證範圍
目前已完成 PHP、本機 WordPress 介面、WooCommerce 傳統與區塊結帳,以及 OpenAI Pixel/Conversions API 的實際事件接收驗證。正式站快取、實際金流、廣告歸因及其他整合外掛的完整流程需另外驗證。測試程式、檢查報告與打包產物未納入此儲存庫。
從原始碼建置
GitHub 儲存庫保存標準版原始碼與鎖定的相依套件清單。直接下載原始碼後,先在專案根目錄安裝 SFTP 相依套件:
composer install --no-dev --prefer-dist --no-scripts --no-plugins
使用 PowerShell 7 產生可安裝的 ZIP:
pwsh -NoProfile -File scripts/package-standard.ps1
產物為 dist/pixel-for-openai-ads-1.1.1.zip,包含 SFTP 執行套件與授權文件。可在 WordPress「外掛 → 安裝外掛 → 上傳外掛」安裝;正式站不需要執行 Composer。測試資料、研究草稿與 Premium 模組均不包含在標準版原始碼與安裝檔中。
授權:GPL-2.0-or-later。WordPress 外掛格式的說明見 readme.txt。
繁體中文的外掛目錄說明另存於 docs/readme-zh-TW.md。
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.