本簡報以 16:9 橫向為主
請旋轉手機
或改用平板 / 桌機觀看
三小時,把 GA4 items array、WooCommerce dataLayer、purchase 去重與退款一次串起來——
讓 ROAS 報表可信,讓老闆對得起對帳單。
事件、外掛、去重——
少一塊都會變成「報表很漂亮,老闆很生氣」。
不只「看得懂」,要能產出 schema、跑通漏斗、寫出 QA 報告。
從 view_item_list 到 purchase——
十個事件、七大必填欄位、一條漏斗骨架。
曝光、購物、結帳三層各取一個,加上 purchase——
四件事就能算出完整漏斗轉換率。
缺一個 GA4 不會報錯,但報表會錯得很隱性——
只有靠 BigQuery 驗 schema 才抓得到。
注意是 ecommerce 包 items 的雙層結構——GTM4WP 預設就是這個格式,手寫時不要把 items 平鋪到外層。
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'T_12345', // 必填且必唯一
value: 1290,
currency: 'TWD',
tax: 0,
shipping: 80,
items: [
{ item_id: 'SKU001', item_name: '中焙咖啡豆 200g',
price: 590, quantity: 2,
item_category: '咖啡豆', item_brand: 'small美' }
]
}
});
// 送下一個 ecommerce 事件前先清乾淨,避免跨事件汙染:
dataLayer.push({ ecommerce: null });
WooCommerce 是台灣最常見的自建站方案——
用 GTM4WP 省下 80% 手刻工作,剩下 20% 是 hook 客製。
WordPress 後台 → GTM4WP → 三個分頁設定到位,dataLayer 當天就會自動 push。
打開 Console 看 dataLayer,按順序走一次——
每一站都要看到 push,缺一站就回頭查設定。
放在 theme functions.php 或自訂外掛裡。直接改 GTM4WP 原始檔下次更新會被覆蓋——三個月後找不到問題就是這樣來的。
// theme/functions.php
add_filter( 'gtm4wp_datalayer_purchase', function( $data ) {
$user = wp_get_current_user();
$data['customer_tier'] = get_user_meta( $user->ID, 'tier', true );
$data['is_first_order'] = is_user_first_order( $user->ID ) ? 'yes' : 'no';
return $data;
});
有事件不等於有乾淨資料——
這節決定你的 ROAS 報表 可不可以拿去開會。
使用者 F5 / 返回 / 分享 URL 都可能二次觸發——
單靠前端會漏,單靠後端慢,兩邊一起做最穩。
GA4 看到 refund 才會從原本 purchase 扣回——不送就是讓報表騙自己。WooCommerce 有 woocommerce_order_refunded hook 可以自動 push。
// 全額退款
dataLayer.push({
event: 'refund',
ecommerce: {
transaction_id: 'T_12345', // 同原本 purchase 的 ID
value: 1290,
items: [ /* 同原 items */ ]
}
});
// 部分退款 → 對應比例的 value 與 items 數量
//(不是整筆撤銷)
LocalWP 測試流量、員工瀏覽、staging 環境——
都會把 ROAS 灌水。三層一起做才乾淨。
八項都打勾——你的電商追蹤穩了。少一項就回頭補。
電商 dataLayer 跑通了,下一步——
Meta Pixel + Conversion API,iOS 14.5 之後的必修。