前情提要:
muffet 有各式各樣的需求,在這邊做細節整理


2878 - 把 sku 的格式改成跟客戶的 content_ids 一樣

詳細描述

目錄的內容編號或是商品群組編號,可以調整成跟像素「426783434563478」抓的「content_ids」一樣嗎? 例如:https://www.jdgift.com.tw/products/strnetwork 這個商品就是「643e7b3ab788e30017cc3fd9:643e7b3ac27c1b4855c3e631」

解決方法

打開任意產品網頁,並用 Meta Pixel Helper 看 (客戶的 pixel 是 426783434563478),產品的 contents_id 是 ["641428823f2332000e3cd7e2:641428825a4a140012c5ad5c"] 後面那一段,641428825a4a140012c5ad5c,就是子類商品的ID,因為子類商品ID,就需要用到 variants 這個參數,這個參數加上去,會讓觸發 api 這個 repo 裡面的設定。

詳細資料看這個連結:https://github.com/Tagtoo/api/blob/master/apps/feed/tools.py

主要就是下面三段:

Ps. 最後產出的 feed 長這樣:http://api.tagtoo.com.tw/v3/feed/facebook/2878

產 feed

# api / apps / feed / views/py

class FacebookV3(Facebook):
    """
    XML feed with variants extension for Facebok Dynamic Product Ads.
    """
    template = 'feed/facebook_feed.xml'

    def get(self, advertiser_id):
        logging.info(advertiser_id)
        advertiser, products = self.get_advertiser_and_products(advertiser_id)
        if not advertiser or advertiser_id == '1186':
            return self.return_404()
        else:
            products = extend_product_variants(products)

        self.format_to_xml(products)
        return self.items_to_xml(products, advertiser)

判斷是否有帶 variants 參數

如果今天沒帶該參數,就是這一段 new_products.append(product),如果有帶參數,就是下面一整大段,主要用到就是這個函數 set_variant_product_key_for_different_ec

# api / apps / feed / tools.py

def extend_product_variants(products):
    new_products = []
    for product in products:
        variants = product['extra'].get('variants')
        if not variants:
            new_products.append(product)
        else:
            for variant in variants:
                new_product = copy.copy(product)
                new_product['product_key'] = set_variant_product_key_for_different_ec(product, variant)
                new_product['title'] = variant.get(
                    'title',
                    product['title']
                )
                new_product['description'] = set_variant_description_for_different_ec(product, variant)
                new_product['color'] = set_variant_color_for_different_ec(product, variant)
                new_product['size'] = variant.get('size')
                new_product['image_url'] = variant.get(
                    'image',
                    product['image_url']
                )
                new_product['price'] = variant.get(
                    'sale_price',
                    product['price']
                )
                new_product['store_price'] = variant.get(
                    'price',
                    product['store_price']
                )
                new_product['live'] = variant.get('in_stock', product['live'])
                if variant.get('link'):
                    new_product['link'] = variant['link']
                    new_product['ad_click_link'] = re.sub(
                        ur'([&\?])u=[^&]+',
                        lambda m: u'{}u={}'.format(
                            m.group(1),
                            urllib.quote_plus(new_product['link'])
                        ),
                        new_product['ad_click_link']
                    )
                new_products.append(new_product)

    # Make new_products unique with product_key
    new_products = tuple(
        {product["product_key"]: product for product in new_products}.values()
    )
    return new_products

客製產品的 content_id

我這次客戶是 2878,所以可以看到最後產出 content_id 的是這樣 return ':'.join([product['product_key'].split(':')[-1], variant['id']])

ps. 傳進塔圖資料庫的產品格式是正常有prefix的格式,只是產出的feed會是客製的格式

# api / apps / feed / tools.py

def set_variant_product_key_for_different_ec(product, variant):
    if product['advertiser_id'] == 1843:
        split_parts = product['product_key'].split(':')
        split_parts[-1] = variant['id']
        return ':'.join(split_parts)
    if product['advertiser_id'] == 1626:  # wstyle
        return '{}_{}'.format(product['product_key'], variant['color'])
    if product['advertiser_id'] == 1165:  # Edwin
        return 'edwin:product:{}'.format(variant['id'])
    if product['advertiser_id'] == 1507:  # deerdogs
        return 'deerdogs:product:{}'.format(variant['id'])
    if product['advertiser_id'] == 2050:  # maisonoishi
        return variant['id']
    if product['advertiser_id'] in (2808, 1474, 2039, 2878):  # To match client's pixel rule
        return ':'.join([product['product_key'].split(':')[-1], variant['id']])

    return u'{}-{}'.format(
        product['product_key'],
        variant['id']
    )d

2878 - line 目錄的到達網址統一改成指定格式

詳細描述

Line 目錄每個商品的到達網址後面可以幫我統一加上「utm_source=tagtoo&utm_medium=cpc&utm_term=2878:474:0」這個嗎~感恩

解決方法

https://github.com/Tagtoo/cron-jobs/pull/187

到 Tagtoo / cron-jobs 這個 repo,加上下面這一段

> cron_jobs / line_lap_feed / config.yaml

> 2878:
>   source: tagtoo
>   medium: cpc
>   term: 2878:474:0

cron_jobs 的目的 ->

1713 - 清理參數問題 #3618

詳細描述

“因為購物廣告點進去會有DPA參數跟Pmax的參數, 所以想確認這是不是我們設定的問題! ex:https://store.united-arrows.tw/pc/ua/item/detail.cgi?itemclcd=01&itemcd=13314999701&utm_term=1713%3A71%3A10315000050&utm_medium=DPA&utm_source=Facebook&utm_campaign=ma-FBDPA&fbclid=IwAR08g3Nscjg9fJR_W-a6XUlIhlgFUY8h4X_j5RbwtHtgPr_Z4ivnHa__DKY&utm_term=1713%3A470%3A28349000022&utm_medium=ssc&utm_source=google&utm_campaign=ma-ssc&gclid=CjwKCAjwhJukBhBPEiwAniIcNddpbqv9Wl2WNucqROYhM_3IjrcHmYJ_QmjzjHjeBvVEvfifBjoBeBoCPTUQAvD_BwE”

問題類別

修改 UTM 參數

解決方法

清理參數方法 - 今天有可能會因為客戶的廣告帶上不同的UTM,導致送到 DB 的時候參數很亂,最後產 feed 也會有很多奇怪的參數,因此修改的方法就是, api repo 的地方有清理參數的 function,產 feed 的時候記得套用 fc,這樣產 feed 的時候就可以順便把參數排除乾淨了

2162 - 建立FB產品目錄 #3619

詳細描述

2.需建立FB產品目錄:
FB帳號:
資料集編號:1045861616224396
商品:只需要此網頁內的商品
https://eshop.ttl.com.tw/b2b_cplist.aspx?catid=1

解決辦法

送到 DB 都是全送,不過可以針對目錄設定 類別,這樣在產 feed 的時候,就可以就用 queryString 給 OP 他們丟廣告就可以了

1064 - 點擊事件設定

https://github.com/Tagtoo/muffet/pull/2757/files

1376 - 新增 tiktok 追蹤事件

詳細描述

“1.需請RD埋設tiktok基本電商事件
2.Tiktok帳號目前有開給tagtooshop@tagtoo.org、adchief@tagtoo.org
3.ID:7240029557577809921
4.每隻影片素材導的連結頁面不一樣,會有需要特別設定嗎?

以上,感謝”

解決方法

  1. 登入 Tiktok 後台 - https://ads.tiktok.com/i18n/login/?register_type=1&redirect=https%3A%2F%2Fbusiness.tiktok.com%2Fselect%3Fsource%3DBC_home%26attr_source%3DBC_home%26redirect_from%3Dlogin
    • 帳號和密碼取得 : 到大補帖 - https://docs.google.com/document/d/13Fyvh8xi1J1blpIfjH2drC0xFCaa7u11o_RzHsthRww/edit#heading=h.65zn0qz3q1c8,找到 tagtooshop@tagtoo.org 的Tiktok 帳號,輸入帳密後,到此帳號的google信箱,把驗證碼補上去,這樣就可以登入了。
  2. 登入後選擇 跨嘶數位行銷 , 點擊左側欄位的 廣告主帳號,並把OP給你的廣告主ID 7240029557577809921 填上,就可以找到該客戶,再點選畫面上的 廣告管理平台,就可以到客戶的廣告帳號,接著點擊 Assets > Events > Web Events(Manage),造著這個順序點進去後,可以到產生 TikTok 的像素畫面,如果今天畫面有像素,就是把 ID 複製下來,填到 muffet 那邊,如果今天是空的,就直接自己新增一個,記得到最後要驗證這個像素,才能正常使用。

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/2764 [編號] : 3635

1859 - 新增 pageView 事件

詳細描述

“客戶的優惠頁面需要新增事件:https://events.heben.com.tw/content 2021年已有埋入Tagtoo Code,不確定原本埋設的事件有哪些 可以通通拿掉,改成以下事件就好

事件1. 送出表單(如附圖)

需要防呆機制,有任何一欄空白的情況,按到送出不能算轉換

事件2 . 點擊預約

點擊頁面中任何圖片或按鈕都算在點擊預約

事件3. PageView

解決方法

事件一:防呆機制的表單送出

config.events = new Event({
  name: 'trackFormSubmit',
  trigger: pageView.host.eq('events.heben.com.tw').and(pageView.path.contains('/content')),
  fn: () => {
    document.querySelector('button[type="submit"]').addEventListener('click', () => {
      const formCheck = [...document.querySelectorAll('div[id*=section_] input , div[id*=section_] select')].every(
        (ele) => {
          const hasValue =
            ele.tagName === 'SELECT'
              ? ele.selectedOptions[0].textContent.trim()
              : ele.type === 'checkbox'
              ? ele.checked
              : ele.value
          return hasValue
        }
      )
      if (!formCheck) {
        return
      }
      tracker('送出表單')
      const phone = document.querySelector('input[name="6"]').value
      if (phone) {
        tracker('unitrack', 'add', { phone: phone })
      }
    })
  },
})

事件二:頁面上的圖片或按鈕點擊

config.events = new Event({
  name: 'trackReservationButton',
  trigger: pageView.host.eq('events.heben.com.tw').and(pageView.path.contains('/content')),
  delay: 1000,
  fn: () => {
    const Reservation = (item) => {
      item.addEventListener('click', () => {
        tracker('點擊預約')
      })
    }
    const images = document.querySelectorAll('img')
    const buttons = document.querySelectorAll('button')
    const elements = [...images, ...buttons]
    elements.forEach((item) => {
      Reservation(item)
    })
  },
})

注意:如果今天要設定客製的tracker,要多設定這個:

// conf.json

  "customEvents": [
    {
      "action": "送出表單"
    },
    {
      "action": "點擊預約"
    }
  ],

這樣才可以有客製事件送出

事件三:pageView 事件

pageView 事件是預設的,所以今天想要新增這個事件,facebook 像素設定好,他就會自動抓取,而 google 就要多增加一道設定,就是加上 google Ads 的轉換設定。

最後會是這樣:

{
  "id": 1859,
  "google": {
    "trackIds": [["UA-34980571-37"], ["AW-11202968721"]]
  },
  "facebook": {
    "trackIds": [["6167890019991870"]]
  },
  "thetradedesk": {
    "trackIds": [["4yvsn2y", "jnqzrsp"]]
  },
  "customEvents": [
    {
      "action": "送出表單"
    },
    {
      "action": "點擊預約"
    }
  ],
  "conversions": [
    {
      "action": "送出表單",
      "google": "AW-11202968721/ySeDCMTR46YYEJH5_t0p"
    },
    {
      "action": "點擊預約",
      "google": "AW-11202968721/rKYACLWg4KgYEJH5_t0p"
    },
    {
      "action": "pageView",
      "google": "AW-11202968721/bz0ZCMOBia4YEJH5_t0"
    }
  ]
}

1347 - facebook 要設定 s2s

解決方法

  • GitHub: https://github.com/Tagtoo/muffet/pull/2866/files

步驟一: 多設定 scope

scopes 那邊要多加一個 facebook:

  "unitrack": {
    "token": "997973dd2fc78f79cb37351abeee99a9a841d6ed84525ab9f59e805b0760",   
    "scopes": ["facebook", "tagtoo"]            
  },

步驟二:確認 unitrack 有沒有追蹤好

基本上 unitrack 在一開始就會抓信箱、電話的資訊了,這邊只是再提醒一次

tracker('unitrack', 'add', { phone, email })
tracker('unitrack', 'add', { email })

步驟三:提醒 howard

最後要跟 Howard 說有新開一個 s2s 的客戶,他那邊要加開權限

2930 要做 tagtoo event

需求表

> Timestamp	填表人	   負責 OP	      EC ID	  問題/需求 類別	 渠道	      EC 網站網址(無則隨意填)	      
> 6/9/2023  16:00:47	jasmine ting 	2930	  新客戶	        Facebook	 https://munich-stars.com/	
> 
> 
> 問題詳述	                                    附加檔案	    優先度	承接人	開始處理時間	完成時間	校正類別	處理辦法	編號
> 要做tagtoo event,廣告帳號:273380295128678		               一般	  John					                               3614

解決方法

(1) 先跟 patrick 要 facebook 權限

(2) 把 tagtoo 的事件加進 muffet 檔案裡面,tagtoo 事件介紹 - https://github.com/Tagtoo/muffet/issues/1714

(3) tagtoo 事件,主要就是 unitrack 事件,所以把 unitrack 加進去就好

(4) 不過目前這個客戶已經把 unitrack 設定好,所以我只要把 facebook 追蹤補上就好

(5) 原本的 conf.json 設定

{
  "id": 2930,
  "google": { "trackIds": [["UA-34980571-47"], ["G-Q6JM6HV2LC"], ["G-K0W8FRESYH"]] },
  "unitrack": {
    "token": "584391d9e16be5aae9f6faf49944d39d42bd4800081a1a9415324cd627e4",
    "scopes": ["tagtoo"]
  }
}

(6) 改進的 conf.json 設定


(7) 如果今天客戶沒有設定facebook pixel,就要幫她設定

https://business.facebook.com/home/accounts?global_scope_id=822361161148101&business_id=822361161148101 這個連結,找到指定的客戶,並點擊 事件管理工具,進到這個頁面後,就可以看到相關的這個客戶目前建置的所有像素,

2162 - 動態饋給問題 (Google Merchant Center)

詳細描述

“請協助建立在客戶的GMC中建立塔圖feed 廣告商品以美妝保養品為主,抓取以下頁面商品即可 https://eshop.ttl.com.tw/b2b_cplist.aspx?catid=1

另外請建立標籤1為商品對應的分類項 e.g. 【夏季美白】重磅必囤組-VINATA酒粕精粹逆齡活膚青春露3+VINATA洗卸潔顏露1 為「美妝」分類

解決方法

一看到 GMC, 就要想到去 dashboard-api 做更改。
Ps. FB 目錄是 api 更改。

接著打開 dashboard-api,我們來把需求補完:

  1. 建立標籤 - 為「美妝」分類 ```py

    apps/api/merchant_center_feed.py

def set_item_custom_label_1_for_different_ec(advertiser_id, item): custom_label_1 = item.extra.get(‘custom_label_1’, ‘’)

# ...省略
if str(advertiser_id) == '2162':
    if u'美妝' in item.category_path:
        custom_label_1 = u'美妝'     ```

這樣就可以在 feed 產出的時候,幫他帶上標籤

  1. feed 只需要以美妝保養品為主 ```py

    apps/api/views.py/MerchantCenter

class MerchantCenter(View): def _skip_items(self, advertiser_id, items): # … 省略

# eshopttl
if advertiser_id == 2162:
    items = items.exclude(~Q(category_path__contains=u'美妝'))    

這樣加上去,就可以把除了美妝以外的產品都移除。

Ps. exclude 是 Django 的語法,可以幫你排除指定的東西

> ---  
> **Q 和 ~Q 是 Django ORM 中用於建構查詢條件的兩種對象**   
> Q 表示查詢條件,可以用於構建多個條件的複雜查詢。當你使用 Q 時,可以使用 &(AND)和 |(OR)運算符來組合多個查詢條件,從而建構更複雜的查詢。例如,Q(condition1) & Q(condition2) 表示同時滿足 condition1 和 condition2 的查詢條件   
> ~Q 表示否定的查詢條件,即排除符合特定條件的結果。使用 ~Q 可以將查詢條件的結果反轉。例如,~Q(condition) 表示不滿足 condition 的查詢結果   
>   
> ---  
{: .block-tip}



163 - 增加 UTM
------

### 詳細描述

"小三美日的Tiktok目錄想要請RD幫忙把UTM直接帶在目錄中各個商品的「到達頁面」上,UTM內容如下:
```md
> utm_source=TikTok&utm_medium=TikTok_app&utm_campaign=TikTok_vsa"

也就是說,小三美日的商品連結要帶上這一串的參數

解決方法

這是解決的 PR : https://github.com/Tagtoo/api/pull/1741

解決步驟:

  1. 先詢問 op 目前是用哪一種 feed,依照現在使用的 feed 來做修改

下面三個是目前使用的 feed,可以看出是使用 v1,並且渠道是 tiktok,後面會有分 value,是因為有些渠道不能一次匯入這麼多,所以才會限制一次能匯入的數量

https://api.tagtoo.com.tw/v1/feed/tiktok/163?begin_value=0&scope=5000
https://api.tagtoo.com.tw/v1/feed/tiktok/163?begin_value=5001&scope=5000
https://api.tagtoo.com.tw/v1/feed/tiktok/163?begin_value=10001&scope=5000
  1. 打開 api 檔案,找到 cpa_config 的資料夾
# api/configs/cpa_config.py

# ...省略
def cpa_s3(o, pb, **kwargs):
    if pb == 475:
        o.append_param({
            'utm_source': 'TikTok',
            'utm_medium': 'TikTok_app',
            'utm_campaign': 'TikTok_vsa',
        })
    return o


# ...省略
cpa_builder.register(163, cpa_s3, 'www.s3.com.tw')    

上面的段落解析:
(1) 首先介紹 pb 是啥,pb 就是各種的渠道,像是 fb - 71、google - 66、yahoo - 468、tiktok - 475,如果今天想要針對某個渠道增加 utm,在判斷式那邊修改就好
(2) cpa_builder 是寫好的 fc,照著前人的格式寫就可以觸發

Ps. line 的 utm 設置不在這邊

  1. 本機確認是否有更改完成

最後我們就是要來確認有沒有加上 UTM 了,這裡我們用 tiktok 來確認,當我們改好之後,我們可以直接在網址輸入:

> http://localhost:8000/v1/feed/tiktok/163

因為 tiktok 是 CSV 檔案的關係,所以我們會直接得到一份檔案,我們打開檔案,並且找到有一個欄位叫做 link,下面的內容大概長這樣:

> 檔案上的內容
> https://api.tagtoo.com.tw/v1/ad/click?pb=475&ind=08&u=https%3A%2F%2Fwww.s3.com.tw%2FTC%2FPDContent.aspx%3Fyano%3D15287066&ad=163

> 把上面的改成下面這樣
> http://localhost:8000/v1/ad/click?pb=475&ind=08&u=https%3A%2F%2Fwww.s3.com.tw%2FTC%2FPDContent.aspx%3Fyano%3D15287066&ad=163

前綴改成本機端後,我們就可以實際測試,最後連到的連結到底有沒有加上 UTM 了!!!

PS. 如果今天是用 facebook 或 google,都可以找到 link 的欄位,只要把前綴改成本機端,就可以確認到底有沒有成功修改 UTM

163 - 幫 tiktok feed 添加欄位

詳細描述

目前 163 tiktok 渠道用的 feed 是以下三個:

> Tagtoo_S3_目錄_01 - https://api.tagtoo.com.tw/v1/feed/tiktok/163?begin_value=0&scope=5000
> Tagtoo_S3_目錄_02 - https://api.tagtoo.com.tw/v1/feed/tiktok/163?begin_value=5001&scope=5000
> Tagtoo_S3_目錄_03 - https://api.tagtoo.com.tw/v1/feed/tiktok/163?begin_value=10001&scope=5000

不過目前的渠道,沒有 product_type 這個欄位,如果要幫這個渠道添加欄位,要怎麼新增呢?

解決步驟

(1) 打開 api 檔案

  1. 搜尋 index.py 這個檔案,這邊有所有的 api 路徑
  2. 在 index.py 裡面搜尋 tiktok , 會找到一個 api 的路徑
# Feed related
(r'/v1/feed/tiktok/(\d+)', 'apps.feed.views.Tiktok'),

看到這個路徑就可以知道關於 tiktok 路徑的設定寫在哪邊

  1. 在檔案搜尋輸入 view.py ,找到 feed/views.py 這個檔案

  2. 在這個檔案搜尋 tiktok ,就可以找到 class Tiktok:

照下面的設定就可以新增指定欄位!

class Tiktok(FeedHandler, CsvHandler):
    """
    Feed for TikTok.
    """
    publisher_id = 475
    field_mapping_table = OrderedDict((
        (u"sku_id",         u"product_key"),
        (u"title",          u"title"),
        (u"description",    u"description"),
        (u"image_link",     u"image_url"),
        (u"link",           u"ad_click_link"),
        (u"availability",   u"availability"),
        (u"condition",      u"condition"),
        (u"price",          u"store_price"),
        (u"sale_price",     u"price"),
        (u"brand",          u"brand"),
        (u"item_group_id",  u"item_group_id"),
        (u"custom_label_0", u"custom_label_0"),
        (u"custom_label_1", u"custom_label_1"),
        (u"custom_label_2", u"custom_label_2"),
        (u"custom_label_3", u"custom_label_3"),
        (u"custom_label_4", u"custom_label_4"),
        (u"product_type", u"category_path"),          # 新的欄位增加在這邊
    ))

2990 大成 - 到 BigQuery 看資訊

詳細描述

由於大成的 GA4 數據一直有問題,所以我們幫客戶的 GA4 串了 BigQuery,直接來看送到 BigQuery 的數據是否有誤

解決步驟

(1) 通知 patrick 串接 BigQuery

  1. 正常情況下,客戶如果有自己的 GA4,OP或業務那邊會直接填單請 Patrick 串接 BigQuery
  2. 而如果是 tagtoo 的 GA4,是由我們這邊來提醒 Patrick 要串接 BigQuery - 直接私訊 Patrick 就好

Ps. 記得提供評估ID、ec_id

(2) 到 GCP 看數據

過幾天後,等BigQuery有資料後,就可以上去看數據了~

  1. 到 Tagtoo-GA4 這個 GCP 帳號,選擇 BigQuery 的項目,就可以看到有很多 GA4 資料在這邊
  2. 找到相對應的 GA4 數據,檔案命名的規則是 - analytics_GA4名稱. ex: analytics_395350185
  3. 接著點選進去,點擊 查詢 -> 新分頁開啟 -> 輸入 SQL 指令

假設今天我想要找出0804的 purchase 資料,可以這樣輸入:

SELECT * FROM `tagtoo-ga4.analytics_395350185.events_20230804` where event_name = 'purchase' LIMIT 1000

這樣我們可以得到這一天,所有購買的資料。

2379 霓亞晴彩堂 - fb 媒合率低下

詳細說明

從 FB 商務管理工具裡面看「購買的目錄配對率」是零,請協助確認是否有問題,並協助調整,感謝!

  1. 商品瀏覽次數:98.3%
  2. 商品加到購物車次數:92.3%
  3. 商品購買次數:0%

需求編號:3814

解決方法

  1. 先跟 Patrick 要 facebook 和 目錄的權限,記得要提供 ec-id 和 Fb 的帳號 ID
  2. 到 FB 目錄看錯誤的資訊 - 確認 FB 讀到的像素是哪一個
  3. 確認 muffet 有沒有寫錯
  4. 目前確認到 muffet 的 purchase 有再抓取產品一次,但是前人寫的 fc 壞掉了,因此在重新修改一次

Ps. howard 提醒: 會送錯的原因:應該是購物車內容掉了 所以改送 content id (訂單編號)

PR

[muffet] : https://github.com/Tagtoo/muffet/pull/2902

muffet 無法正常運行狀況排除

詳細說明

有時候當你設定好 CJS 或者是 Redirect URL 後,接著在本機跑 npm run preview ec_ID,但是在網站的主控台那邊,卻沒有正常的印出你在文件上打的程式碼,有可以是以下幾點原因

解決方法

  1. 這個客戶之前可能已經有埋過muffet,所以現在網站裡面的檔案和本機測試的檔案衝突,導致 trigger 印出不來,這個解決方法只要先把目前網站的 tagtoo code 移除 (用 dashboard-legacy 檔案移除指定客戶),接著網站上就不會有之前設定的 code,這時候再使用 CJS,就可以正常運作
  2. 客戶換網站,可能之前是自己寫的網站,換成 shopline 網站,這個也有可能造成 muffet trigger 壞掉,此時要確認網站裡面到底有沒有埋 tagtoo code,可以用 tagtoo 網站插件確認,如果真的不確定,可以跟 (1) 一樣,先把 track.js 中客戶 ID 拿掉,等用 CJS 設定完在重新裝回去

183 caco - 事件重新檢查

詳細說明

因客戶官網網站改版,事件要重新檢查

Ps. 由於這個顧客是舊客戶 (最古老的那種),是用 GTM 幫他們串接資料的,因此需要進到 tagtoo 的 GTM 帳號來幫他們寫爬蟲

解決方法

如果今天是第一次用 GTM 設定爬蟲,依照以下步驟即可

  1. 通知 patrick 請他幫忙開 GTM 的權限
  2. 登入自己 tagtoo 的帳號,並且到 GTM 中,會看到 Tagtoo advertiser 這個帳號,裡面有一堆容器,這邊就是 tagtoo 之前幫客戶設定爬蟲的地方
  3. 用網域搜尋指定的客戶,點進去後會發現自己沒有發佈和更改的權限,這時候點擊左上角的 管理 -> 使用者管理 -> 選擇自己並把權限調到最高,這樣就可以編輯和發布事件了
  4. 再來就跟 muffet 一樣,看看事件有沒有觸發,不過這邊要用 GTA PREVIEW 來看

2913 - 寶貝家庭親子網 - 新增 tagtoo Event

詳細說明

“要做 search event 及 view item
search 網址範例: https://search.babyhome.com.tw/?keyword=%E6%9C%88%E5%AD%90
view item 有兩種頁面

view item 1: https://forum.babyhome.com.tw/topic/5010560
view item 2: https://forum.babyhome.com.tw/article/5010535
view item 事件請加上 breadcrumb (文章左上有分類)

view item 的文章要當作產品
產品編號規則
babyhome:product:topic5010560
babyhome:product:article5010535

解決方法

這個客戶是內容農場,因此跟以往的電商要抓取的資料不同,所以要抓的資料建議直接詢問填單的人,像是除了產品的標題、內容、麵包屑以外,還有什麼要抓的

PR

[muffet] : https://github.com/Tagtoo/muffet/pull/2889 [dashboard-legacy] : https://github.com/Tagtoo/dashboard-legacy/pull/1297

2990 大成 - 新增客製化事件的價值

詳細說明

客戶想要在GA4新增一個客製化事件,就是點擊某個按鈕,會觸發取消訂單事件,並且在GA4可以查到,該筆取消訂單的價值

解決方法

今天要新增一個客製化事件的話,很容易,只要使用 customEvent 這個參數就好,不過如果今天要加上 事件價值 要怎麼新增呢?讓我們來看以下這段: 下面這段就是客製化事件可以帶的參數,會發現裡面有一個 value 值,因此在新增客製化參數的時候把這個值帶上就好。

  customEvent(data) {
    if (this.checkCustomEventData(data)) {
      const resolvedData = this.resolveCustomEventData(data)
      const params = {
        event_category: resolvedData.category,
        event_label: resolvedData.label,
        value: resolvedData.value,
      }
      if (resolvedData.utm_campaign) {
        params.campaign_name = resolvedData.utm_campaign
        params.campaign_medium = resolvedData.utm_medium
        params.campaign_source = resolvedData.utm_source
        params.transaction_id = resolvedData.transaction_id
        params.shipping = resolvedData.shipping
      }
      this.tracker.sendGA4Event(resolvedData.action, params)
      this.tracker.sendUAEvent(resolvedData.action, params)
    }
  }

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/2886 [編號] : 3796

2135 umma.my - 動態饋給問題

詳細說明

“Catalog match rate下降,警告有content ID與pixel的catalog不相符
另外優化事件使用Pixel ID: 687169221678293,但Catalog是使用Pixel ID: 628076585227950,想瞭解這是否會影響呢?謝謝~”

解決方法

OP 討論

  1. “事件是客戶送的,feed 是用塔圖的
  2. id 對不上,改 feed id 或用塔圖送的事件,等 OP 回覆
  3. 最終決定改塔圖 Feed id

開始解決

  1. 先開客戶產品網頁,到產品頁後用 Chrome 插件 - Meta Pixel helper,會發現兩像素,一個是 628076585227950 我們送的事件,一個是 687169221678293 客戶送的事件
  2. 打開兩個像素,點開 viewContent 中的 content_ids,會發現一個是 umma:product:87b16ca6950dd46 - 我們抓的,一個是 ["2270"] - 客戶抓的 - 就是這個原因所以才導致媒合率下降
  3. 經由討論後,要把我們的 content_ids 改得跟客戶的 content_ids 一樣,因此首先改我們 muffet 抓的 sku - https://github.com/Tagtoo/muffet/pull/2920"
  4. muffet 抓的格式一樣要照我們之前的設定,也就是這樣 - ecName:product:指定ID
  5. 要產生客戶指定的ID,要到這邊修改 - https://github.com/Tagtoo/api/pull/1762,這個就可以設定成客戶想要的格式

PR、需求編號

[api] : https://github.com/Tagtoo/api/pull/1762 [muffet] : https://github.com/Tagtoo/muffet/pull/2920” [編號] : 3830

如何進資料庫觀看

如果今天想要在本地看資料庫,想知道爬蟲到底爬了哪些資料進去,照著下面的流程做

  1. 下載 MySQL Workbench,只要能開啟 MySQL 資料的軟體都可以,只是我這邊是用此軟體
  2. 載好進入後,找到頂部菜單的 DatBase,點擊 connect to database
  3. 再來跳出一個視窗,要你填寫要連結的資料庫,要填寫的資訊都在 dashboard-api 這個資料夾裡面,去那邊找就可以找到
  4. 連進來後,找到這個schema console_productad,輸入 SQL 語法,就可以發現我們爬蟲的資料都匯入這裡面了

2913 - 修改追蹤事件

詳細說明

  1. 先前填單有說需要把文章分類放在Tagtoo Event 的breadcrumb欄位,但目前該欄位都沒有值
  2. Product資料庫裡面都沒有2913的資料(應該要把文章當商品存在Product資料庫)

解決方法

問題 1

照著以下步驟來解決:

  1. 先打開 Google Cloud
  2. 找到 ID 是 tagtoo-tracking 的專案,tagtoo event 的事件就在裡面
  3. 點擊 BigQuery -> SQL 工作區 -> 點開 tagtoo-tracking -> 點開 event_prod -> 找到 tagtoo_event -> 點擊 查詢
  4. 輸入以下 SQL 語法,發現 breadcrumb 欄位全都是空的,到目前不確定 viewItem 的 event.custom_data.breadcrumb 欄位是否原本就是空值,畢竟我們在 viewItem 一定都有抓 categoryPath
SELECT * FROM `tagtoo-tracking.event_prod.tagtoo_event` WHERE TIMESTAMP_TRUNC(event_time, DAY) = TIMESTAMP("2023-09-03") AND ec_id = 2913 AND event.name = 'view_item_list' LIMIT 1000
  1. 來確認第四點疑問,換成輸入這個以下SQL,用 2990 發現,viewItem 的 event.custom_data.breadcrumb 欄位也是空的,由此可知 viewItem 事件原本就不會抓到 breadcrumb 欄位
    SELECT * FROM `tagtoo-tracking.event_prod.tagtoo_event` WHERE TIMESTAMP_TRUNC(event_time, DAY) = TIMESTAMP("2023-09-03") AND ec_id = 2990 AND event.name = 'view_item_list' LIMIT 1000
    
  2. 我們來輸入以下SQL,了解 Data team 是抓什麼,可以讓 event.custom_data.breadcrumb 欄位不為空,照以下輸入後,會發現 event_name 欄位是 view_item_list
    SELECT *
    FROM `tagtoo-tracking.event_prod.tagtoo_event`
    WHERE TIMESTAMP_TRUNC(event_time, DAY) = TIMESTAMP("2023-09-01")
    AND ec_id = 2990
    AND event.custom_data.breadcrumb IS NOT NULL
    LIMIT 1000;
    
  3. 由此可知,我們只要補上 viewItemList 的事件,就可以讓 DataTeam 想抓的 breadcrumb 欄位跑出來了
  4. 所以只要在抓產品頁面的時候,補上 viewItemList 事件就可以完成這個需求

這邊補上 tagtoo event 要到哪裡看的圖片:

問題 2

問題 2 的解決方法,沒有匯入資料庫有幾個原因 (1) sku 的格式不對 (2) 少了幾個規定欄位,可以到這邊,查看匯入資料酷的格式規定 - https://github.com/Tagtoo/tracknew

Ps. 我這次無法匯入資料庫,是因為少設定了價格欄位,價格一定要 >=0 才匯得進去

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/2939
[muffet] : https://github.com/Tagtoo/muffet/pull/2940
[編號] : 3852

2079 - 修改追蹤事件(customEvent)

詳細說明

“我們幫客戶做GA4事件( 公用帳號:tagtooga) 客戶希望在view item事件增加兩個自訂參數

  1. 目前參與募資的人數(contributors)
  2. 目前累積的募資金額(totalFunds) 要抓取的欄位請參考截圖”

需要抓的圖片: https://drive.google.com/open?id=1r2DGyUO6ejiHHlllpIOK4oKQRswuUPYP

解決辦法

“[muffet] : 使用客製化事件(customEvent)完成抓取這個兩個參數,目前兩個欄位的格式有先給 nina 看過”

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/2949 [編號] : 3851

2913 - 修改追蹤事件(Tagtoo Event 數據問題)

詳細說明

  1. 先前填單有說需要把文章分類放在Tagtoo Event 的breadcrumb欄位,但目前該欄位都沒有值
  2. Product資料庫裡面都沒有2913的資料(應該要把文章當商品存在Product資料庫)

解決辦法

  1. 沒有進資料庫原因是之前少抓 price 欄位,補上就可以
  2. 補上 viewItemList,看看禮拜一數據狀況 [muffet] : https://github.com/Tagtoo/muffet/pull/2939

這個檔案是修改viewItemList 的設定,上面那個檔案的抓法格式錯誤,無法送出事件 [muffet] : https://github.com/Tagtoo/muffet/pull/2940

Ps. tagtoo event 只有用 viewItemList 送才會存入 breadcrumb欄位,如果今天用 viewItem 事件送,就算你有設定 breadcrumb 還是不會存入,因此要記得要送 breadcrumb 事件要用 viewItemList 事件設定,並且他的格式要注意一下,錯誤的話事件會無法觸發

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/2939 [muffet] : https://github.com/Tagtoo/muffet/pull/2940

[編號] : 3851

2913 - 修改追蹤事件(Tagtoo Event 數據問題)

詳細說明

  1. 先前填單有說需要把文章分類放在Tagtoo Event 的breadcrumb欄位,但目前該欄位都沒有值
  2. Product資料庫裡面都沒有2913的資料(應該要把文章當商品存在Product資料庫)

解決辦法

  1. 沒有進資料庫原因是之前少抓 price 欄位,補上就可以
  2. 補上 viewItemList,看看禮拜一數據狀況 [muffet] : https://github.com/Tagtoo/muffet/pull/2939

這個檔案是修改viewItemList 的設定,上面那個檔案的抓法格式錯誤,無法送出事件 [muffet] : https://github.com/Tagtoo/muffet/pull/2940

Ps. tagtoo event 只有用 viewItemList 送才會存入 breadcrumb欄位,如果今天用 viewItem 事件送,就算你有設定 breadcrumb 還是不會存入,因此要記得要送 breadcrumb 事件要用 viewItemList 事件設定,並且他的格式要注意一下,錯誤的話事件會無法觸發

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/2939 [muffet] : https://github.com/Tagtoo/muffet/pull/2940

[編號] : 3852

2913 - 修改追蹤事件(Tagtoo Event 數據問題)

詳細說明

FB、Google Ads、Line Feed 想要排除「生活系列」的商品(https://www.wstyle.com.tw/Shop/ItemList.aspx?m=40,如截圖紅框處),GMC Feed 請不要更動~ 但因為一兩年之前有討論過,這家網站因為沒有麵包屑,所以無法抓取分類,因此無法照分類排除,不知道現在是否還是一樣無法QQ?有沒有其他方式可以達成呢?可以隨時 slack 我,感恩的心!

附圖片: https://drive.google.com/open?id=1ncHVHuBPFxmypQUJ5V4cB6anccDnkcPC

解決辦法

爬除 lifestyle 的產品 - 此客戶每一個產品分類的開頭都不一樣, lifestyle 的分類是 A 開頭,直接排除 A 開頭產品就可以

PR、需求編號

[API] : https://github.com/Tagtoo/api/pull/1770 [編號] : 3862

1557 - 修改追蹤事件

詳細說明

“像素:1954209431274251 客戶的S2S事件只剩下前端…請幫忙確認為什麼沒有後端事件”

解決方法

s2s 的運作方式是,首先在 FB 後台會可以產出一個 token,這個 token 要放到 tagtoo Server,有時候會因為一些原因,導致 token 失效,此時就要到 GCP 看一下 token 的狀況。 那要如何看錯誤報告呢?首先到 tagtoo-tracking,並且找到 Error Reporting,最後在 篩選錯誤 欄位輸入 urbank,接著點進第一個錯誤,就可以看到下圖錯誤資訊,可以發現的確是 token 壞掉了。

這邊補上 s2s 的 errorReporting 圖片:

這時候只要跟 Howard 說明狀況,他應該會直接在 FB 後台產生一個新的 token,並放到 tagtoo server 上,這樣就可以解決這個問題

1673 - 新增商品資訊-針對不同幣值設定feed

詳細說明

“SG feed:https://dashboard-api.tagtoo.com.tw/api/feed/merchantCenter?advertiser_id=1673

網站:https://iqueen.sg/?shpxid=35d7b606-d056-4424-97b8-d14e0b4b6f7c

馬來西亞和新加坡共用1個網站,但是需要分地區投。需要多做1個feed抓馬來西亞價格,感謝”

解決方法

  1. 網站有改,需重新寫購物流程事件
  2. 針對不同的區域(幣值),設定不同的 sku
  3. 到 feed 那邊修改,如果幣值為 ‘sgd’,就商品就只篩選 sku 終止包含 ‘_sg’ 的商品

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/3158 [dashboard-api] : https://github.com/Tagtoo/dashboard-api/pull/583

[編號] : 3920

2938 - 串接Linked追蹤碼

詳細說明

客戶已經埋好Code了,麻煩你設定Linkedin的追蹤碼進去,主要是為了網站訪客分析

解決方法

Howard 已經寫好了 installLinkedInInsightTracking 函式,只要把 OP 給的 Linked 編號帶進去就可以

PR、需求編號

[muffet] : https://github.com/Tagtoo/muffet/pull/3193 [編號] : 3922

1697 - 數據落差,使用 GTM 串接 purchase 原始渠道碼

詳細說明

客戶的ga4:378084356(tagtooga_gxbd@tagtoo.org)經上次調整後,客戶還是覺得數據上有落差,內部業績4萬但ga4只記錄到1.5萬

解決方法

前情提要,此客戶之前已經修改過很多次 muffet 的購買流程,包括在購買完成頁面再抓一次,或者是手機版也抓一次,但是事件掉的機率還是很高,因此跟 Howard 討論後,決定跟 Orbis 一樣,用客戶的 GTM 來設定 g-tag 原始的購買渠道事件
這樣設定的好處是,可以讓購買事件觸發順序提前,可以提前觸發的原因是因為,muffet 整個檔案中,我們做了蠻多事情,當到達 完成頁面 的時候,會先觸發其他設定後,才會送出 purchase 事件,但是如果今天是用 GTM 設定的話,由於是直接設定原始渠道碼, 當到達完成頁面的時候,購買事件就會直接觸發,這樣就可以達成 提前觸發購買事件

設定原始渠道事件注意事項

  1. 客戶開給我們的GTM帳號,在 tagtooshop@tagtoo.com 這個帳號內,而 GTM ID 為 GTM-KK6RJWV,到達該帳號後,會發現兩個 TAG Tagtoo GA4 Purchase Page InitTagtoo GA4 Purchase Page Event
  2. 我幫客戶設定的事客製化事件,不是標準的 purchase 事件,因為當初想要做的是,保留 muffet 的 purchase 事件,並且新增一個由 GTM 設定的客製化事件,不過這個客製化事件會有訂單的詳細資料,這樣就可以兩者比較訂單的差異
  3. 如果今天要不要用客製化事件,也就是只留下 GTM 的 purchase 事件,要記得讓 muffet 的 purchase 事件不要觸發,要怎麼設定呢?可以到 orbis 的 config 檔案最下方可以找到,簡單的說就是,除了購買完成頁面的事件不要觸發,其他頁面的事件都正常觸發

收益比較

在 1697 的GA4,有設定好比較的客製化報表,以下是數據比較:

成效紀錄,目前看10/28~10/29的數據,記錄到的比數有變多:
muffet - 原始記錄到的筆數:43筆訂單 - 66,680
GTM - 新事件記錄到的比數:49筆訂單 - 75,057
客戶給的訂單比數:57筆訂單 - 88,809