網站管理工具 ▌ChatGPT 廣告轉換追蹤

修改時間 星期四, 十月 1 於 12:12 PM

ChatGPT 廣告轉換追蹤碼安裝

若您有使用 ChatGPT/OpenAI 廣告投放,可透過安裝轉換追蹤碼,將消費者於商店中的瀏覽商品、加入購物車、開始結帳及完成訂單等行為回傳至 OpenAI Ads Manager,協助您查看廣告轉換成效。

目前 QDM 尚未提供 ChatGPT 廣告追蹤的內建設定介面,如有使用需求,可依照以下方式自行安裝。


安裝前請先留意

安裝前請先確認以下事項:

  • 此為第三方廣告追蹤程式,實際事件接收、轉換判定及成效統計,皆以 OpenAI Ads Manager 的實際結果為準。

  • 程式會安裝於商店的「自訂 JS 全站程式碼」,並套用至前台全站。

  • 若「自訂 JS 全站程式碼」內原本已有其他內容,請勿刪除、覆蓋或修改原有程式碼。

  • 除本說明指定的 Pixel ID、DEBUG 及必要設定外,不建議自行修改其他程式內容。

  • 正式使用前,建議先完成事件測試及測試訂單,確認事件與金額皆正確。

  • 使用廣告追蹤功能後,部分消費者瀏覽及購買行為資料將提供給 OpenAI,店家應依自身實際使用情況確認相關隱私權告知內容。


一、安裝前準備

請先於 OpenAI Ads Manager 完成以下設定:

  1. 建立廣告帳號。

  2. 建立轉換追蹤 Pixel。

  3. 取得您的 Pixel ID。


官方說明:https://koodata.com/koo-cafe/chatgpt-ads-manager-tutorial-2026


取得 Pixel ID 後,即可進行 QDM 後台設定。


二、安裝追蹤程式碼

步驟 1|進入設定位置

登入 QDM 商店後台後,依序進入:

版面 → 自訂 JS 全站程式碼


步驟 2|確認程式碼貼上位置

進入「自訂 JS 全站程式碼」後,請依目前欄位內容操作。

若目前欄位是空白

可直接將下方提供的完整 ChatGPT Ads 追蹤程式碼貼入。

若目前已經有其他程式碼

請勿刪除或覆蓋既有內容。

請將游標移至原有程式碼的最下方:

  1. 移至最後一行。

  2. 按 Enter 換行。

  3. 建議再空一行。

  4. 將 ChatGPT Ads 完整程式碼貼在最下方。

正確結構如下:

// 原本已有的其他程式碼 exampleFunction(); 

/* ChatGPT Ads (OpenAI Ads) conversion tracking */ (function () {  // ChatGPT Ads 追蹤程式碼 })();

也就是:

原有程式碼 → 換行 → ChatGPT Ads 完整程式碼

請勿將新的追蹤程式碼插入原有程式碼中間。


步驟 3|貼上完整程式碼

請將以下程式碼從第一行至最後一行完整複製,貼至「自訂 JS 全站程式碼」最下方:

/* ChatGPT Ads (OpenAI Ads) conversion tracking - QDM self-install template v1  */
(function () {

  var PIXEL_ID = 'PASTE_YOUR_PIXEL_ID'; /* Merchant settings: only edit these lines*/
  var CURRENCY = 'TWD';
  var DEBUG = false;
 
  if (!PIXEL_ID || PIXEL_ID === 'PASTE_YOUR_PIXEL_ID') return;
  if (window.__qdmOpenAIAdsLoaded) return;
  window.__qdmOpenAIAdsLoaded = true;

  (function (w, d, s, u) {
    if (w.oaiq) return;
    var q = function () {
      q.q.push(arguments);
    };
    q.q = [];
    w.oaiq = q;
    var js = d.createElement(s);
    js.async = true;
    js.src = u;
    var f = d.getElementsByTagName(s)[0];
    f.parentNode.insertBefore(js, f);
  })(window, document, 'script', 'https://bzrcdn.openai.com/sdk/oaiq.min.js');

  window.oaiq('init', { pixelId: PIXEL_ID, debug: DEBUG });

  // OpenAI wants integer amounts in the ISO 4217 minor unit (TWD 1,280 -> 128000).
  var ZERO_DECIMAL = { JPY: 1, KRW: 1, VND: 1 };
  var FACTOR = ZERO_DECIMAL[CURRENCY] ? 1 : 100;

  function toMinor(value) {
    var n = parseFloat(String(value === undefined || value === null ? '' : value).replace(/[^0-9.\-]/g, ''));
    if (!isFinite(n) || n < 0) return 0;
    return Math.round(n * FACTOR);
  }

  function toQty(value) {
    var n = parseInt(value, 10);
    return n > 0 ? n : 1;
  }

  function item(id, name, price, qty) {
    return {
      id: String(id),
      name: String(name || ''),
      content_type: 'product',
      quantity: toQty(qty),
      amount: toMinor(price),
      currency: CURRENCY
    };
  }

  function sum(items) {
    var total = 0;
    for (var i = 0; i < items.length; i++) total += items[i].amount * items[i].quantity;
    return total;
  }

  function measure(name, data, options) {
    try {
      window.oaiq('measure', name, data, options || {});
    } catch (e) {}
  }

  measure('page_viewed', { type: 'contents' });

  // Product page
  var productId = window.gecommProduct ? parseInt(window.gecommProduct[0], 10) : 0;
  if (productId > 0 && window.gecommProductName) {
    var viewed = item(productId, window.gecommProductName, window.gecommProductPrice, 1);
    measure('contents_viewed', { type: 'contents', amount: viewed.amount, currency: CURRENCY, contents: [viewed] });
  }

  // Order success page: the platform only fills ecommOrderToCheckout there.
  var order = window.ecommOrderToCheckout;
  var isSuccess = !!(order && order.order_id);
  if (isSuccess) {
    var products = order.product || [];
    var bought = [];
    for (var i = 0; i < products.length; i++) {
      var p = products[i];
      bought.push(item(p.product_id, p.product_name, p.price, p.quantity));
    }
    measure(
      'order_created',
      { type: 'contents', amount: toMinor(order.order_total), currency: CURRENCY, contents: bought },
      { event_id: 'order_' + order.order_id }
    );
  }

  // Checkout page: same URL rule the platform uses for its own begin_checkout.
  var uri = location.pathname + location.search;
  if (!isSuccess && uri.indexOf('/checkout') !== -1 && uri.indexOf('success') === -1) {
    measure('checkout_started', { type: 'contents', amount: toMinor(window.ecommCheckoutTotal), currency: CURRENCY });
  }

  // Add to cart: every add-to-cart path pushes a GA4 add_to_cart event to dataLayer.
  var dl = (window.dataLayer = window.dataLayer || []);
  var originalPush = dl.push;
  dl.push = function () {
    var result = originalPush.apply(dl, arguments);
    try {
      for (var a = 0; a < arguments.length; a++) {
        var entry = arguments[a];
        if (!entry || entry.event !== 'add_to_cart' || !entry.ecommerce || !entry.ecommerce.items) continue;
        var added = [];
        for (var j = 0; j < entry.ecommerce.items.length; j++) {
          var it = entry.ecommerce.items[j];
          added.push(item(it.item_id, it.item_name, it.price, it.quantity));
        }
        measure('items_added', { type: 'contents', amount: sum(added), currency: CURRENCY, contents: added });
      }
    } catch (e) {}
    return result;
  };
})();

步驟 4|填入 Pixel ID

貼上完成後,找到程式碼上方的:

var PIXEL_ID = 'PASTE_YOUR_PIXEL_ID';

將:

PASTE_YOUR_PIXEL_ID

替換成您於 OpenAI Ads Manager 取得的 Pixel ID。

例如 Pixel ID 為:

abc123xyz

請修改為:

var PIXEL_ID = 'abc123xyz';

請注意:

  • 保留 Pixel ID 前後的單引號 ' '

  • 不需修改其他程式內容


步驟 5|儲存設定

完成後按下「儲存」。

因前台頁面有快取機制,設定完成後約 10 分鐘內生效。


三、安裝後會追蹤哪些事件?

顧客行為OpenAI 事件

已瀏覽頁面

page_viewed

已瀏覽內容

contents_viewed

已加入商品

items_added
開始結帳checkout_started
建立訂單order_created

四、如何確認安裝成功?

建議安裝完成後先進行一次測試。

1. 開啟測試模式

找到:

var DEBUG = false;

暫時修改為:

var DEBUG = true;

儲存並等待設定生效。


2. 開啟商店測試

使用電腦版 Chrome 開啟自己的商店。

按下 F12 開啟開發人員工具,再進入:

Console/主控台

接著可依序測試:

  • 已瀏覽頁面

  • 已瀏覽內容

  • 已加入商品

  • 開始結帳

  • 建立訂單

若主控台出現類似:

[oaiq] event queued

表示追蹤事件已執行。


3. 至 Ads Manager 確認事件

回到 OpenAI Ads Manager 的事件管理頁面,確認是否有收到測試事件。

建議至少確認:

  • Page Viewed

  • contents_viewed

  • items_added

  • checkout_started

  • order_created


4. 確認訂單金額

完成一筆測試訂單後,請確認 Ads Manager 顯示的訂單金額與 QDM 訂單金額一致。

例如:

QDM 訂單金額 NT$1,280

若 Ads Manager 顯示:

NT$1,280

代表金額正常。

若 Ads Manager 顯示:

NT$128,000

則代表金額被放大 100 倍,請依下方方式調整。


5. 測試完成後關閉 DEBUG

測試完成後,請將:

var DEBUG = true;

改回:

var DEBUG = false;

再重新儲存。


五、Ads Manager 金額放大 100 倍時如何處理?

只有實際測試確認金額放大 100 倍時才需要修改。

找到:

var ZERO_DECIMAL = { JPY: 1, KRW: 1, VND: 1 };

修改為:

var ZERO_DECIMAL = { JPY: 1, KRW: 1, VND: 1, TWD: 1 };

儲存後重新進行測試。

修改後,台幣金額將直接以原金額送出。

例如:

NT$1,280 → 送出 1280

若遇到此情況,也請將測試結果提供給 QDM 客服,以利後續確認範本設定。


六、使用限制

使用前請留意以下情況:

  • 此範本預設幣別為 TWD,若商店有使用多幣別結帳,事件中的幣別或金額可能與實際訂單不同。

  • 若消費者使用廣告阻擋工具或瀏覽器隱私功能,部分事件可能無法記錄。

  • 顧客完成第三方付款後,若未返回商店的訂單完成頁,order_created 事件可能無法送出。

  • 加入購物車事件會於加入操作發生時觸發,因此若後續因庫存或其他條件加入失敗,仍可能已產生一次事件。

  • OpenAI Ads Manager 統計的轉換數與 QDM 實際訂單數不一定會完全一致。


七、隱私權注意事項

此範本本身不會主動將顧客姓名、Email 或電話寫入事件內容傳送給 OpenAI。

但若店家另外於 OpenAI Ads Manager 啟用 Automatic Advanced Matching 或其他進階功能,OpenAI 的程式可能依其功能設定處理頁面中的顧客資料。

店家使用 ChatGPT/OpenAI 廣告追蹤功能後,部分消費者的瀏覽及購買行為資料將提供給 OpenAI。

建議店家依自身實際使用的廣告與追蹤服務,確認並更新網站隱私權政策、Cookie 或相關告知內容。


八、如何移除追蹤程式?

若後續不再使用 ChatGPT/OpenAI 廣告追蹤,請進入:

版面 → 自訂 JS 全站程式碼

找到以下開頭:

/* ChatGPT Ads (OpenAI Ads) conversion tracking

一直到該段最後:

})();

將整段 ChatGPT Ads 追蹤程式碼刪除後儲存即可。

若頁面中原本還有其他第三方程式碼,請勿一併刪除。

這篇文章是否有幫助?

太棒了!

感謝您提供意見回饋

抱歉,沒能幫到您

感謝您提供意見回饋

請讓我們知道如何改善這篇文章!

請選擇至少一個原因
必須進行 CAPTCHA 驗證。

意見已發送

感謝您的寶貴意見,我們將嘗試修改這篇文章